TUSB3410选用12MHz晶振,与MCU信号连接如表2所示,数据传输时,MCU的UART模块开始工作,支持TUSB3410所有波特率,同时通过12C模块与外部EEPROM采用在线编程方式直接存储数据MCU的P3.O/SETO引脚作为TUSB3410的复位脚,当MCU访问EEPROM时,复位该引脚,当没有外设连耐也可用该引脚进行复位测试
4.低成本参考设计
系统的功耗设计可以从两方面考虑:(1)不使用外部EEP-ROM;(2)不使用外部晶振
(1)不使用外部EEPROM
利用TUSB3410实现的USB转UART接口可以不使用外部EEPROM,VID/PID描述符使用TI的默认缺省值,TUSB3410固件从主机PC上下载即可实现通讯,但是,存在两个问题:①因为不具备唯一VlD值,系统的USB设备兼容性不好;②当主机检测到两个不同USB设备,具有相同的VID/PID和序列号时,可能会导到USB设备不能正常工作或发生设备连接冲突所以,通常设计中不推荐采用此方法,除非该系统为独立总线工作方式,即不与外界任何USB设备同进与主机通讯
(2)MSP430微控器器不使用外部晶振
TUSB3410由CLKOUT引脚输出UART波特率或一个固定的3.556MHz的频率信号,该频率信号可以作为MCU的外时钟输入,这种稳定的频率信号可作为MCU外设的工作频率,此时MCU无须连接外部晶振
当系统选用TUSB3410产生的频率作为MCU时钟时,只需修改TUSB3410固件,通过设置MODECNFG配置寄存器的CLKOUTEN位,CLKOUT位使能输出,同时,CLKSLCT位用于选择以UART输出还是固定频率输出
修改后的固件存放在外部EEPROM或存放于系统的驱动程序包中,当存于系统驱动程序包中时,设备连接时修改后的固件自动从操作系统驱动程序中载入,MCU的OSCFAULT位用于检测是否系统使用外部晶振当TUSB3410输出7.3728MHz频率作为MCU的UART模块的时钟源时,此时UART传输速率可达921 000波特
软件设计
MCU固件的主程序流程图如图4所示,MCU上电复位后调用InitSystem()初始化程序,初始化外设、看门狗、通用I/O口等,设置系统时钟为外部8MHz晶振,同时将USARTO设为12C模式与外部EEPROM实时通讯
MCU初始化时,TUSB3410处于复位状态,MCU通过12C直接检测外部EEPROM的有效地址位和ACK应答位,当接收到有效ACK信号时,则调用EEPROM-Verify()程序校验该EEPROM中的程序是否与MSP430F1612内部Flash存储的EEPROM镜像文件一致若检测到外部EEPROM为空,则调用EEPROM_Write()程序将MSP430F1612内部Flash存储的EEPROM镜像写入EEPROM当EEPROM程序更新后,TUSB3410释放复位信号,读取外部EEPROM值,当连接到USB主机控制器时,TUSB3410会将这些数据提供给USB主机核对,同时将MCU复位引脚设为NMI模式,防止MCU意外复位
初始化后,MCU通过Timer_B7模块检测SWl-SW4按键状态,当有键按下,捕获/比较模块捕捉到按键的上升沿信号时产生中断,同时唤醒MCLJ
中断服务程序流程图如图5所示,首先将USARTO设为UART异步串口模式,然后以460 800波特进行通讯,一帧数据通信的字符格式为8位数据位和1个停止位,没有奇偶校验位当系统要求高速率传输时,主机PC需打开虚拟COM口,并MCU配置相匹配,此时MCU传输速率可达到921 600波特
PC主机固件及USB驱动程序不作为本文叙述的重点
小结
超低功耗MSP430微控制器与TUSB3410实现USB设备的接口设计,具有功耗低、可靠性高、移植性强等特点,同时也可以加以推广应用到其它便携式设备开发中