USB(Universal Serial Bus)通讯具有传输速度快、可靠性高、支持即插即用等优点,已经逐步成为现代数据传输的主流方式,获得了广泛的应用。
然而,在USB应用技术越来越成熟的同时,开发人员对于USB技术的运用越来越倾向于顶层使用,对于USB的底层原理与基础协议关注的很少,这会导致在实际开发过程中,遇到问题之后不知从何处着手解决。只有了解了USB的传输协议或者是底层传输通讯原理,才能很好的找出解决途径。
文中基于作者多年的USB开发使用经验,并且结合目前研究与生产中广泛使用的几种USB控制芯片,包括Cypress公司的enCoRe系列芯片、EZ-USB芯片以及Netchip公司的NET2888芯片等等,总结了它们在开发使用中最容易遇到而又非常重要的几个问题:USB设备与主机建立通讯过程中枚举和重枚举的区别,这个区别体现在不同的USB控制芯片当中,它对于设备的启动以及连接主机都有深刻影响;重枚举与重置的区别,很多把这个概念混淆,导致在应用中出错;固件程序控制多种启动方式的区别,同样的代码控制着不同的启动方式,理解了这个过程才能很好地控制芯片的工作。