USB协议要点
1、每个端点号对应两个端点地址,每个端点地址对应一个管道。
2、USB主设备枚举是首先检测从设备的描述信息,解析出要使用的管道号以便后续设置
USB主模式
1、在枚举设备获取描述符时,USB指示灯才会亮,也就是只有 TD 传输时才会亮。
使用LPC1788官方例程
1、查看端口号是否是否一致,若不一致,需要重新配置引脚服用、LPC_USB->StCtrl等参数。
2、配置5V供电引脚、指示灯引脚,时钟部分不需要做修改。
3、特别注意的是,和USB相关的变量地址要在 0x20000000 到 0x20008000 范围中。
例程中使用 __attribute__ ((section("USB_RAM"))) 实现这点,此时需要在LINK 选项中的SCT文件中添加
RW_IRAM2 0x20000000 0x00008000 {
*.o (USB_RAM)
}
USB_RAM就是申请到制定范围内的节,每次定义变量时,在后面加上__attribute__ ((section("USB_RAM"))) 就可以使变量地址在这片区域中。
4、U盘多次拔插不能识别可能是缓冲区没有释放的原因,官方程序中有相关的处理函数,并且再次连接是要重新枚举。
USB从模式
1、从模式的官方例程没有给出完整源码,