当前位置: 首页 > news >正文

百度网站建设的一般要素安卓系统优化app

百度网站建设的一般要素,安卓系统优化app,代理建设网站,海外代理ip目录 链接快速定位 前沿 1 0x40005C00和0x40006000地址的区别和联系 2 USB_BTABLE寄存器介绍 3 USB缓冲区描述表#xff08;SRAM#xff09;介绍 3.1 发送缓冲区地址寄存器n#xff08;n[0..7]#xff09; 3.2 发送数据字节数寄存器n#xff08;n[0..7]#xff09…目录 链接快速定位 前沿 1 0x40005C00和0x40006000地址的区别和联系 2 USB_BTABLE寄存器介绍 3 USB缓冲区描述表SRAM介绍 3.1 发送缓冲区地址寄存器nn[0..7] 3.2 发送数据字节数寄存器nn[0..7] 3.3 接收缓冲区地址寄存器nn[0..7] 3.4 接收数据字节数寄存器nn[0..7] 3.5 地址偏移和USB本地地址的联系 4 应用举例 5 512Byte SRAM讲解 链接快速定位 USB -- 初识USB协议一 源码下载请参考链接USB -- STM32-FS-USB-Device驱动代码简述二 USB -- STM32F103虚拟串口bulk传输讲解三 USB -- STM32F103自定义HID设备及HID上位机中断传输讲解四 USB -- STM32F103 U盘MassStorageSDIO接口SCSI协议Bulk传输讲解五 USB -- STM32F103 USB DFU设备固件升级IAP控制传输讲解六 USB -- STM32F103 USB AUDIO音频Speak同步传输Out传输讲解七 USB -- STM32F103 USB AUDIO音频Microphone同步传输In传输讲解八 USB -- STM32F103 USB VIDEO视频Camera同步传输讲解九 USB -- STM32F103复合设备HIDMassStorage传输讲解十 前沿 我们在查看用户手册的时候会发现USB的寄存器地址有两块一块是0x40005C00 - 0x40005FFF一块是0x40006000 - 0x400063FF本章为大家讲解这两个寄存器地址有什么区别和联系。 1 0x40005C00和0x40006000地址的区别和联系 0x40005C00是USB寄存器的基地址所有其他USB寄存器会相对于基地址有所偏移。 0x40006000是USB的SRAM的地址可以理解为0x40006000地址处挂了一块512Byte的SRAM也叫缓冲区描述表此地址存放USB的数据信息包括端点数据的相对地址、端点数据长度以及端点的数据。 因此0x40005C00和0x40006000地址没有必然的联系只是0x40005C00是USB寄存器的基地址0x40006000是存放USB数据是SRAM的起始地址。 接下来重点讲解0x40006000这块RAM。 2 USB_BTABLE寄存器介绍 我们查看USB的用户手册的时候会看到USB_BTABLE寄存器该寄存器的目的是相对于0x40006000SRAM地址的偏移默认不偏移。 举个例子如果该寄存器的值为0x100那么SRAM的起始地址就变成了0x40006200了供应用程序使用的分组缓冲区地址需要乘以2才能得到缓冲区在微控制器中的真正地址USB的数据就从0x40006200开始存储。一般情况下这个值保持为0。 3 USB缓冲区描述表SRAM介绍 虽然缓冲区描述表位于分组缓冲区内但仍可将它看作是特殊的寄存器用以配置USB模块和微控制器内核共享的分组缓冲区的地址和大小。由于APB1总线按32位寻址所以所有的分组缓冲区地址都使用32位对齐的地址而不是USB_BTABLE寄存器和缓冲区描述表所使用的地址。 以下介绍两种地址表示方式一种是应用程序访问分组缓冲区时使用的另一种是相对于USB模块的本地地址。供应用程序使用的分组缓冲区地址需要乘以2才能得到缓冲区在微控制器中的真正地址。分组缓冲区的首地址为0x4000 6000。下面将描述与USB_EPnR寄存器相关的缓冲区描述表。 缓冲区描述表分为 发送缓冲区地址寄存器nn[0..7]发送数据字节数寄存器nn[0..7]接收缓冲区地址寄存器nn[0..7]接收数据字节数寄存器nn[0..7] 下图是一张缓冲区描述表的数据存放位置示意图从表中可知端点的发送缓冲区地址寄存器、发送数据字节数寄存器、接收缓冲区地址寄存器和接收数据字节数寄存器依次从0x40006000地址往上存储。 排完了发送缓冲区地址寄存器、发送数据字节数寄存器、接收缓冲区地址寄存器和接收数据字节数寄存器的地址之后地址所存的数据又在哪里查看呢我们接着往下面看。 3.1 发送缓冲区地址寄存器nn[0..7] 发送缓冲区地址寄存器就是存放发送数据的地址比如此地址为0x20那么我们就能够在0x400060000x20*20x40006040地址处填写发送的数据。 3.2 发送数据字节数寄存器nn[0..7] 也就是要发送的字节数最大为1023个字节但是我们的SRAM最大为512byte还要去掉前面几个已使用的字节存放数据地址和数据字节数最多就只支持400多个字节所以这里的1023字节需要根据SRAM的实际情况所决定。 3.3 接收缓冲区地址寄存器nn[0..7] 接收缓冲区地址寄存器就是存放接收数据的地址比如此地址为0x20那么我们就能够在0x400060000x20*20x40006040地址处读取USB接收到的数据。 3.4 接收数据字节数寄存器nn[0..7] 接收数据字节寄存器根据表161具体配置最大能够接收的数据的长度如果超过此长度USB模块将忽略超过的数据。 3.5 地址偏移和USB本地地址的联系 这里对地址偏移和USB本地地址做一个个人的理解如果我们只是应用编程我们完全不需要关心USB本地地址我们只需要关注地址偏移。 这四个寄存器都只使用了16bit的数据按照传统来说地址偏移应该是BTABLE0并且认为只有一个端点 发送缓冲区地址寄存器地址0x40006000发送数据字节数寄存器地址0x40006002接收缓冲区地址寄存器地址0x40006004接收数据字节数寄存器地址0x40006006 这就是USB本地地址 但是考虑这个MCU是一个32位寻址的MCU所以需要做32位对齐所以地址偏移变成了BTABLE0并且认为只有一个端点 发送缓冲区地址寄存器地址0x40006000发送数据字节数寄存器地址0x40006004接收缓冲区地址寄存器地址0x40006008接收数据字节数寄存器地址0x4000600C 这就是地址偏移 4 应用举例 这里我们使用官方自带的USB虚拟串口例程进行讲解不知道怎么下载和使用的读者可以参看博主的以下博客 USB -- STM32-FS-USB-Device驱动代码简述二 USB -- STM32F103虚拟串口bulk传输讲解三 下载好程序进入调试模式查看定义的发送缓冲区地址寄存器0的值是0x80定义的接收缓冲区地址寄存器0的值是0x40发送缓冲区地址寄存器1的值是0xC0发送缓冲区地址寄存器2的值是0x100接收缓冲区地址寄存器3的值是0x110。 定义的端点0接收数据字节数寄存器0为0x40也就是接收64字节的数据端点3的接收数据字节数寄存器3为0x40也就是接收64字节的数据。 这里发送11个字节和接收11个字节的数据查看到发送数据字节寄存器1为0x0B接收数据字节寄存器3为0x840B只看0-9位所以为0x0B。 前面定义了发送和接收缓冲区的地址截下来我们查看地址的值是否和串口助手的值一致我们TX的地址为0xC0RX的地址为0x110根据手册我们需要在0x400060000xC0*2地址处找到发送数据的起始地址在0x400060000x110*2地址处找到接收数据的起始地址见下图。 5 512Byte SRAM讲解 有的读者比较细心发现ST的手册上面说的是USB的SRAM是512Byte的空间为什么查看《存储器和总线架构》章节的时候发现地址空间从0x40006000 - 0x400063FFF这里是1024Byte难道是ST的笔误吗博主查看了最新的ST手册发现也是这样写的。 经过一番研究最终发现此SRAM只使用了低16位此MCU是32位的MCU如果只是使用低16位想要达到512Byte就需要增加一倍的地址空间所以这里的地址空间才会是0x40006000 - 0x40003FFF。 这个问题同样可以解释以下问题 我们可以看到ST的官方例程写的ENDP0_RXADDR和ENDP0_TXADDR值分别是0x40和0x80实际数据的地址分别是0x400060000x40*2和0x400060000x80*2这里两个地址相减得到0x400060000x80*2-0x400060000x40*20x80此时是128个字节那么就超了64个字节了这样可能造成地址空间的浪费端点0最大64字节。 是否可以改为ENDP0_RXADDR和ENDP0_TXADDR值分别是0x40和0x60这样0x400060000x60*2-0x400060000x40*20x40刚好是64字节。其实是不可以这样修改的因为SRAM使用的是低16位高16位未使用如果这里地址空间为0x40实际可使用的空间为0x20。
http://www.pierceye.com/news/237686/

相关文章:

  • wordpress建站怎么上传网站没有备案信息该怎么做
  • 沈阳网站推广有什么技巧软件开发工具通常也称为什么工具
  • 黑龙江龙采做网站如何网站建设制作解决方案
  • 百度推广自己做网站吗网页设计软件下载网站
  • wordpress内核源码分析南宁网站优化推广
  • 物流网站做那个好服务器怎么安装WordPress
  • 网站开发怎么兼容浏览器中国优秀设计网站有哪些内容
  • 黄冈网站官方登录平台做网站的条件
  • 潍坊网站建设推广公司网站建设类的手机软件
  • 建设小学网站建设网站代理
  • 怎么查看网站根目录网站建设费记什么科目
  • 文昌市规划建设管理局网站网站与个人网站
  • 昆明网站建设推荐q479185700上墙现在最火的推广平台有哪些
  • 长兴县城乡建设局网站wordpress的留言功能
  • 建设企业网站地址asp.net 4.0网站开...
  • 制作个人网站步骤提升学历励志语录
  • 福州建站服务管理页面布局标准格式
  • 做一个公司网站一般需要多少钱营销型网站功能表
  • 为什么菜市场不可以做网站河南阿里巴巴网站建设
  • asp.net动态的网站开发手机海报制作免费软件
  • 网站建设前准备龙岗网站优化公司案例
  • 做流量哪个网站好滨州j建设局网站投诉电话
  • 空白网站怎么建wordpress 邮箱订阅
  • 乡镇网站建设自查报告做企业门户网站要准备哪些内容
  • 百度做推广一般要多少钱相城seo网站优化软件
  • 博客和网站的区别贵阳网站推广优化公司
  • 专业做公司网站的机构时彩网站开发
  • 网站 建设设计深圳网站建设交易
  • 网站建设氵金手指下拉十二网页设计有啥教程
  • 物流企业网站建设策划书6wordpress 搜索 很慢