阅读:1112回复:1
初学者关于USB的几个问题
各位大虾你们好!
小弟初学USB编程,有几个问题一直搞不明白,特来此向各位大虾请教: 1. USB里有2条线,一条是D+,一条是D-,D+是full-speed,D-是low-speed。请问这2条线是否只能用于对应的功能?在一条线上的同一个时间片(1ms里)是否只能有一个方向的传输? 2. USB协议里指出每1ms为一个时间片,时间片由SOF开始,EOF结束,一个时间片里可以有多个事务。在一个事务里又分为几个包传输,请问一个事务的握手包返回成功了下一个事务才能发送?握手包是由哪个发送的,硬件还是软件? 3. USB里有几种传输,都需要不同的带宽,请问这些带宽的设置是在哪里设置的?驱动还是用户写程序?还有时间片又是在哪里指定的? 4. 数据包传输的过程中会改变触发位,请问这个触发位是在哪里?怎么改变? 以上几个问题是我在学习USB的过程中所遇到的,百思不得其解,请大家帮帮忙,谢谢!! |
|
沙发#
发布于:2007-10-12 17:22
1. D+,D-两条线共同实现差分信号传输,间单的说就是同一时间两条线的电平信号是相反的.这样做可以更好抗物理干扰.
"D+是full-speed,D-是low-speed"错误的, 只是设备的D+有接上拉电阻,插入PC后被认为是全速设备, 设备的D-有接上拉电阻,插入PC后被认为是低速设备. 在1MS的时间片里因为要完成很多个传输事务,传输方向回发生很多次改变. 2. 握手包有USB主机控制器驱动或IC上的固件控制发送,对于USB设备驱动是透明的. 3. 每种传输最高传输速率USB协议有规定,但实际传输速度跟应用程序,设备驱动和IC固件设计有关. 时间片,各设备传输速率控制,由主机控制器驱动控制,对应用程序,设备驱动是透明的. 4. 你所说的"改变触发位"是不是Data Toggle,如果是对应用程序,设备驱动不用管,对于IC上的固件来说就要控制. |
|