你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于STM32F4 USB模块寄存器的问题

[复制链接]
393877719 提问时间:2018-4-23 20:12 /
刚接触USB部分时间不长,把F4的官方例程大概看了一下,太长,太繁琐,所以,自己通过读写寄存器的方式把初始化和中断进行了梳理,目前已经能枚举成功,并能正确加载WinUSB驱动。
但是,有些寄存器的设置完全不知道作者的意图,以及寄存器的功能和设计原因,还希望有这方面研究的网友能指导一下。
1.OTG_FS_DOEPTSIZx寄存器
手册描述:要接收 SETUP 数据包,必须将控制 OUT 端点中的 STUPCNT 字段 (OTG_FS_DOEPTSIZx) 编程为非零值。但是又接着说:如果在接 收 SETUP 数据包之前,未将 STUPCNT 字段编程为适当值,模块仍能接收 SETUP 数 据包并使 STUPCNT 字段递减。
好像是也不会因为该寄存器的值影响中断,因为没搞清楚,所以直接忽略了该寄存器的设置,仍然可以顺利枚举
2.OTG_FS_DIEPCTL0 和OTG_FS_DOEPCTL0寄存器:
在USB复位中断中,例程注释了:If the EP is already active don't change the EP Control register.      而IN EP0和OUT EP0默认情况下USBAEP=1,所以,按照注释来讲,并不会设置这2个寄存器。
但是,在枚举完成中断中,USB_OTG_EP0Activate函数又根据枚举速度来设置了DIEPCTL0.MPSIZ。
这2个设置不是相互矛盾的吗?

收藏 评论2 发布时间:2018-4-23 20:12

举报

2个回答
anobodykey 回答时间:2018-4-24 09:44:50
多看手册呀,If the STUPCNT field is not programmed to a proper value before receiving a SETUP packet, the core still receives the SETUP packet and decrements the STUPCNT field, but the application may not be able to determine the correct number of SETUP packets received in the Setup stage of a control transfer
第二个问题应该是端点未使能的情况下都是可以修改的

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

393877719 回答时间:2018-4-24 10:00:47
anobodykey 发表于 2018-4-24 09:44
多看手册呀,If the STUPCNT field is not programmed to a proper value before receiving a SETUP packet ...

感谢你的解答
但是,应用程序知道SETUP包的数量干什么用呢,收到一个SETUP包之后按照要求响应主机就行了呀,需要设置这个DOEPTSIZ寄存器的应用场景有哪些呢?
端点0的控制寄存器中手册描述USBAEP总是置1的,所以,在枚举中断中,官方库又设置寄存器的MPSIZ就不明白其原因了
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版