可能比较乱,随手记吧。
参考的是《圈圈教你玩USB》。
1.PDIUSBD12芯片,符合USB2.0协议,但不支持高速,只支持12Mb/s的全速模式——挑芯片时要注意
2.USB开发者论坛 http://www.usb.org/
3.Hub只能扩展出更多的USB口,不能扩展带宽,是共享一个USB主控制器的带宽的
4.USB OTG是USB On-The-Go的缩写,OTG技术就是实现在没有Host的情况下,实现设备间的数据传送
5.USB OTG增加了一种mini USB接口,比普通4线USB口多了一条ID线标示是主机还是设备
6.在标准PC上,USB主控制器是挂接在PCI总线上的
7.标准USB连接线使用4芯电缆:5V电源、正负差分数据(D+、D-)、地,USB OTG的miniUSB接口增加了一条ID线
8.USB在低速和全速模式是电压传输,高速是电流传输
9.USB采用NRZI编码,遇0电平翻转1不变,连续6个1的时候强制插入一个0
10.USB主机如何检测到插入设备:USBHub上的每个下游端口的D+、D-都接一个15kΩ的下拉电阻到地,当没有插入时输入端就被拉到低电平,在USB设备的D+或D-上接一个1.5kΩ的上拉电阻到3.3V,低速接D-,高速接D+,插入设备时,1.5kΩ和15kΩ的电阻分压使接上拉电阻的数据线的电压约为3V,即接收端检测到高电平,然后看是哪条数据线的高电平来决定速度
11.USB描述符关系:一个USB设备只有一个设备描述符,设备描述符决定该设备有多少种配置,每种配置有一个配置描述符,每个配置描述符定义了该配置中有多少接口,每个接口有一个接口描述符,接口描述符定义了该接口有多少个端点,每个端点有一个端点描述符,端点描述符定义端点大小、类型。如果有类特殊描述符,是跟在接口描述符之后
12.USB传输类型之一:批量传输,令牌包阶段→数据包阶段→握手包阶段
13.USB传输类型之二:中断传输,不是设备主动发出中断,而是主机保证在不大于某个时间内安排一次传输,用于数据量小但对时间要求严格的设备,比如HID的鼠标、键盘等,还可以用于不断检测某一状态,检测到后再批量传输
14.USB传输类型之三:等时传输(同步传输),用于要求数据量大、实时性好的设备,如音频、视频设备
15.USB传输类型之四:控制传输,建立过程(SETUP令牌包→DATA0数据包→ACK握手包)→可选数据过程(包含一个或多个数据事务,与批量事务一样,但是数据方向必须都相同,第一个数据包要用DATA1数据包,此后的数据包是DATA0与DATA1交替)→状态过程(数据方向与数据过程相反,只使用DATA1包)
16.端点0是默认控制端点,一上电就存在且可用,非0端点要Set Config之后才能用
17.挂起,USB特有,总线上3ms没有数据设备就要挂起。——3ms是固定的吗?
18.带压摆率控制是输出口,芯片在设计时就限制了电压的变化速度,数据翻转时边沿不会很陡峭,减小数字噪声
19.突然有个疑问——USB不是串口通信吗,而且D12也有D+、D-管脚,那DATA0~DATA7的管脚又是输入输出什么数据的?
20.小容量电容高频特性好,一般滤除高频信号
21.使用示波器时注意探头对电路的影响,用x1档示波器探头就相当于100pF电容,在频率较高时影响很大,信号会有很大的衰减,甚至振荡电路停振,用x10会改善很多
22.KeilC程序中,关键字volatile是告诉编译器不要优化对这个变量的操作,关键字idata是变量超过128字节时可以使用高128字节的RAM