无薪税绵 发表于 2018-1-29 12:42
感觉这两句有问题:
endpoint_size |= (UX_DCD_OTG_FS_DOEPTSIZ_XFRSIZ_MASK & (endpoint.wMaxPacketSize * ...
在非0的OUT端点中,DOEPTSIZ_XFRSIZ为位,DOEPTSIZ_PKTCNT为位
计算传输大小时:
endpoint_size = (0x0007FFFF & (endpoint.wMaxPacketSize * (fifo_length - 1 + endpoint.wMaxPacketSize)));
计算数据包个数:
endpoint_size |= ((fifo_length - 1 + endpoint.wMaxPacketSize) / endpoint.wMaxPacketSize) << 19;
其中,fifo_length为读取的端点长度
这样,合理吗?
再有,fifo_length和endpoint.wMaxPacketSize是一个意思吧,为什么又需要定义一个fifo_length呢?
wylew 发表于 2018-1-29 15:27
接口芯片不是外接,而是集成到控制器中的
貌似ST有“on-chip Hi-speed PHY ”的只有F7X2、F7X3系列,其它都是Full-speed的PHY,极速就是12Mbit/S,你用的那颗芯片?你靠dd报告的速度可信吗?为啥不是MCU来统计结果回传?
高速丢包这个有可能是电路的干扰造成,这块要通过软件硬件综合分析。选择一个最合适的速度。追求速度软硬件各项成本开销都有
kylongmu 发表于 2018-1-29 22:52
貌似ST有“on-chip Hi-speed PHY ”的只有F7X2、F7X3系列,其它都是Full-speed的PHY,极速就是12Mbit/S, ...
芯片似乎用的是3500,至于速率,因为缺少Windows下的驱动,只能接在linux主机上,但在linux主机上能测试虚拟串口的工具似乎没找到。。。你有推荐的吗?
wolfgang2015 发表于 2018-1-29 23:23
高速丢包这个有可能是电路的干扰造成,这块要通过软件硬件综合分析。选择一个最合适的速度。追求速度软硬件 ...
硬件上面现在没有动,只考虑软件上面,cdc类驱动用了三个端点,一个中断端点,两个批量端点,就是现在在IN和OUT批量端点上的传输大小和数据包个数上修改,但没有设计好合理的大小和个数。。。
St的mcu有3500吗?你连自己用的芯片都是似乎……
kylongmu 发表于 2018-1-29 23:48
St的mcu有3500吗?你连自己用的芯片都是似乎……
因为对USB phy操作不多,而且也没研究太长时间,所以对这个不是特别的清晰,查了下,USB phy芯片用的是USB3500,并且嵌入了USB控制芯片内部
wylew 发表于 2018-1-29 17:55
在非0的OUT端点中,DOEPTSIZ_XFRSIZ为位,DOEPTSIZ_PKTCNT为位
计算传输大小时:
endpoint_ ...
fifo_length为端点长度
endpoint.wMaxPacketSize是最大允许封包值
不是同一概念。
丢包的问题,看看是不是优先级太低导致的问题。
无薪税绵 发表于 2018-1-30 08:30
fifo_length为端点长度
endpoint.wMaxPacketSize是最大允许封包值
不是同一概念。
代表的含义是不一样,fifo_length的值根据不同的端点采用不同的传输方式而改变,控制传输时为8,高速批量传输时为512......您说的那个优先级太低,指的是什么的优先级?还有,就像我这BULK-OUT端点的传输大小和包个数可以这样计算,那对应的BULK-IN端点又该如何设计呢?
你看看这位大神的博客,应该对你有帮助的。
http://www.cnblogs.com/zkp2010/p/5510753.html