本帖最后由 lvben5d 于 2019-2-15 10:32 编辑
之前使用STM32F103 USB做DEV的时候,每个EP都有自己独立的RX和TX 缓冲区。 GD32 FS USB在设计的时候,为了增加1个OUT或控制包的数据长度,设计了共享RxFIFO 可以设置到512字节。 我理解为,哪个EP有OUT或控制数据包到来,都是从这个RxFIFO读出数据就好了,因为USB 处理速度要很快,每次收到需要从RxFIFO取走数据后,这个RxFIFO就成为了任意下一个传输事物中,数据包的存放地。 可以理解为公交车,但是不支持3P。否则你的程序没取走前面的就有BUG了。PS: 为GD32E103的设计点赞,个人觉得这样增加了RxFIFO的长度,可以在一次传输中断完成后,再去取,对于大数据包是非常便利的,缺点是你必须马上去车上拿你要的,否则就要出事。 而STM32那边 每个EP 自己有自己的RX BUF 就可以稍微悠着点拿。 对于实际应用来说,GD32的RxFIFO可以容纳更多字节,会更好用。毕竟E系列的GD32 USB RAM可是有1.25K 4字节对齐。 而STM32只有512
|