我使用的是OTG_FS的bulk方式传输,PC为主机,
单片机为设备。
1:一帧内32最大可以传输多少字节给PC?一帧内可以传输多少次事务,一次事务传输可以传输多少个数据包,一个数据包可以发送多少字节数据,这些数据是USB硬件自动分为一个个64字节的数据包发送给主机的么?
2:我看USB2.0上规定的数据包数据大小最大为1023字节,但bulk端点最大只能为64字节,那发送超过64字节的数据是分为多个数据包还是只是按64字节划分的?
3:32一次传输的数据大小有没有限制,当他的传输需要几帧的时间才能完成的时候在下一帧开始的时候还会接收SOF包么,还是只是接着传输上一次没传输完的数据包?
4:假如我一帧内传输的数据没达到最大值,是不是意味着我这1ms内只能传输这么多数据,若要开始其他的传输只能等下一ms的SOF开始信号后才能继续?
刚刚接触USB,望各位大神解答,先行感谢了!!!
一个帧内可能有多种传输,各类传输的带宽由主机控制。
每种传输可能需要多个事务处理完成, 每个事务处理由多个包组成,其中数据包负责传输数据。
每个数据包所能传输的最大字节 由传输类型和USB速度模式【FS/HS】决定。
比方BULK传输,FS 模式下,每个数据包最大传输字节为64.
一次传输的数据没有限制,但每次事务能传输的数据有限。当待传输数据超过一次事务中的数据包最大字节数时,可以通过多个事务处理来完成。
比方FS,BULK模式下,你要传输1500字节数据,可以多个多次事务完成,最后一个不到64字节的数据传输视为本轮传输结束。如果每次都是刚好64字节传输,最后补个0字节传输事务即可。
SOF包是主机定期发送给设备,用来主机、设备的同步。每帧的开始都会发SOF包。
还要注意一点,数据的收发的主导权在主机。细节得看看USB协议资料。
一周热门 更多>