在进行一个USB设备开发之前,首先要根据具体使用要求选择合适的USB控制器。目前,市场上供应的USB控制器主要有两种:带USB接口的单片机(MCU)或纯粹的USB接口芯片。带USB接口的单片机从应用上又可以分成两类,一类是从底层设计专用于USB控制的单片机另一类是增加了USB接口的普通单片机,如Cypress公司的EZ-USB(基于8051),选择这类USB控制器的最大好处在于开发者对系统结构和指令集非常熟悉,开发工具简单,但对于简单或低成本系统。但价格因素也是在实际选择过程中需要考虑的因素。纯粹的USB 接口芯片仅处理USB通信,必须有一个外部微处理器来进行协议处理和数据交换。典型产品有Philips公司的PDIUSBD11(I2C接口)、PDIUSBD12(并行接口),NS公司的USBN9603/9604(并行接口),NetChip公司的NET2888 等。USB接口芯片的主要特点是价格便宜、接口方便、可靠性高,尤其适合于产品的改型设计(硬件上仅需对并行总线和中断进行改动,软件则需要增加微处理器的USB中断处理和数据交换程序、PC机的USB接口通信程序,无需对原有产品系统结构作很大的改动)。
USB接口芯片在进行USB通信时所需要的支持是不同的。一些芯片只需要访问一系列寄存器以存储和恢复USB数据。其他的芯片要求设备程序代码做更多的工作,包括管理描述符的重新获得、设定数据切换值和保证正确的交换包被发送等。
一些USB接口芯片上有通用功能的CPU,而其他的接口芯片则采取最简单的方法和接口与一个外部CPU连接。所有的USB控制器都有一个或多个uSB端口和缓存、寄存器和其他I/O。带有通用功能CPU的控制器芯片在芯片上也有程序和数据存储器或一个到外部存储器的接口。