|
刚接触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个设置不是相互矛盾的吗? |
stm32 usb hid设备能发数据给PC,但不能接收PC的数据!!!
无法通过 SPI 读取 TCD1304数据
MotorControl Workbench 6.4.1 生成 FOC 项目代码后运行死机。
F407的SDIO的硬件分流问题
workbench5.3.1生成代码问题
STLink下载程序失败,Flash部分地址不能写入
求助,局部变量初始化时未赋值会导致什么后果?
TIM11,TIM13失效
局部变量初始化时未赋值会导致什么后果
在 STM32CubeIDE 中使用 RTOS 代理
微信公众号
手机版
第二个问题应该是端点未使能的情况下都是可以修改的
评分
查看全部评分
感谢你的解答
但是,应用程序知道SETUP包的数量干什么用呢,收到一个SETUP包之后按照要求响应主机就行了呀,需要设置这个DOEPTSIZ寄存器的应用场景有哪些呢?
端点0的控制寄存器中手册描述USBAEP总是置1的,所以,在枚举中断中,官方库又设置寄存器的MPSIZ就不明白其原因了