本文介绍了基于单片机和USB HOST接口芯片在汽车行驶记录仪中实现USB HOST功能的相关模块设计,该模块很好地实现了汽车行驶记录仪中单片机向优盘大量数据的快速传输。
USB HOST相关模块的总体设计
汽车行驶记录仪中的USB HOST相关模块由单片机、USB HOST接口、FLASH、铁电存储体(FRAM)、实时时钟和电源管理等部分组成,其功能框图如图1所示。汽车行驶记录仪工作时,由单片机通过前端接口电路拾取汽车行驶状态的各种信息,包括车速、发动机转速和各种车辆开关信号等。汽车行驶记录仪以实时时钟为基准,把车辆信息按类别分别存入FRAM和FLASH。需要从汽车行驶记录仪中获取汽车记录状态信息时,用户插入优盘,单片机自动识别优盘并加载驱动程序,当完成设备枚举和Bulk_Only传输协议后,单片机就可以把汽车行驶记录仪中记录的状态信息以文件的形式传输到优盘。本文重点介绍电源模块、USB HOST模块、数据存储模块的硬件设计。
考虑到汽车的复杂工况以及记录仪的性价比,单片机至少为工业级产品,由于有USB HOST结构,FLASH和RAM要足够大,这样系统资源才够用。另外,考虑到成本和开发周期,单片机选择51系列比较有利,综合以上因素,单片机选择AT89C51RD2,扩展RAM;目前市场上的USB设备芯片比较多,而HOST要少一些。选择USB HOST接口芯片要考虑两点:一是在硬件上必须比较容易和51单片机相连接,二是软件开发难度不能太大,因此选择SL811HST。对于数据存储体,必须满足存储时间为15年有效,而且存储容量为至少360小时有效数据,普通数据FLASH擦写次数为100万次,不能满足记录仪中频繁擦写数据的要求,而铁电擦写次数为无限次,但大容量FRAM价格很高,综合这两点,存储体采用小容量FRAM和FLASH结合,这样既满足记录仪要求又有比较低的成本。
电源模块硬件设计
汽车电子产品产生电磁干扰的最根本原因就是在其工作过程中产生的di/dt。电源模块设计就是要在这些干扰源下能正常工作,其硬件电路如图2所示。
在电源输入处,二极管VD1(IN4007)的作用是防止反接,这样即使在电源接反的情况下,电子设备也不会被损坏;VD2(A36A)为瞬态抑制二极管,能吸收高压脉冲电压,防止大功率器件工作时产生的高压脉冲对电子设备的损坏;L1和L2是低电感磁条,其能有效的损耗干扰成分的能量,能很好改善电源性能;F1和F2为自复位二级管,防止电子设备内有器件被损坏时,电源短路造成对其他器件的损坏。三端稳压管7812(N2)提供12V电压满足前端输入接口拾取电路的需要,同时给三端稳压器7808(N1)提供输入,N1提供8V电压,满足里程输出以及速度输出需要,开关稳压器LM2576(N3)提供5V输出,最大输出电流为3A,满足记录仪带打印机的需要。WRD24B05(N4)为DC-DC转换器,隔离汽车和电子设备电源,使设备电源稳定可靠。正向电压调节器SPX1117(N5)提供3.3V电压,供SL811HST和存储体的需要,N6前端的晶体管8550控制N6的输入,N6给IC卡供电,需要电源可控。
USB HOST模块硬件设计
在汽车行驶记录仪USB HOST模块中,单片机采用AT89C51RD2,USB HOST接口芯片采用SL811HST,该模块硬件电路如图3所示,SL811HST提供并口总线数据协议和控制线CS、RD、WR、INTRQ以及A0,利用单片机的读写信号线RD、WR,以及控制线A0、INT1就能把SL811HST和AT89C51RD2连接起来,其中8根数据线在控制线的控制下与AT89C51RD2进行数据交换。USB HOST包含有USB设备枚举协议、Bulk_Only传输协议以及FAT文件结构,AT89C51RD2的RAM资源不够,因此,系统扩展了32Kb SRAM,其占有低32Kb地址。为了保证操作SL811HST的可靠性,用HC00扩展了逻辑电路,因此SL811HST占有0x8000和0x8001两个地址。另外,USB总线的电气特性要求在USB收发器之前必须串接22~44Ω电阻,同时必须根据不同的USB设备传输速度(全速或低速),配置好上拉电阻和下拉电阻的位置。
当CS、RD有效时,如果A0为高,这是读当前地址或寄存器数据,如果A0为低,则读当前地址或寄存器地址。当CS、WR有效时,如果A0为高,这是写当前地址或寄存器数据,如果A0为低,则写当前地址或寄存器地址。
USB HOST识别设备过程如下:当SL811HST连接上USB设备后,就会产生一个中断。AT89C51RD2接收到中断后,进入枚举过程。从USB设备插入接口开始到客户驱动程序能够使用该设备还有一些工作要做,这一段可以称作设备识别过程,也称枚举过程。枚举过程是所有USB设备使用前必经的过程,USB HOST端在使用前需要知道这是一个低速设备还是一个全速设备,需要知道这个设备的一些特性和能力,以便载入相应的驱动程序。当USB HOST配置完USB设备后,通过描述符提供的信息识别出Bulk_Only的Mass Storage设备,然后进入Bulk_Only 传输方式,在此方式下,USB与设备之间的所有数据均通过Bulk_In和Bulk_Out 来传输,不再通过控制端点传输任何数据。在这种传输方式下,有三种数据类型在USB和设备之间传输,CBW、CSW和普通数据。CBW(Command Block Wrapper,即命令块分组)是从USB HOST发送到设备的命令,命令的格式遵从接口中的bInterfaceSubClass所指定的命令块,这里为SCSI传输命令集。USB设备需要将SCSI命令从CBW中提取出来,执行相应的命令,完成以后向HOST发出当前命令执行状态CSW(Command Status Wrapper), HOST根据CSW来决定是否继续传送下一个CBW或数据。USB HOST要求USB设备执行的命令如果为发送数据,则此时需要将特定的数据传送出去,传送完毕后发出CSW,使USB HOST进行下一步操作。
图2 电源模块原理图
图3 USB HOST模块原理图
存储模块硬件设计
结合普通FLASH和FRAM来存储数据,既满足了数据存储擦写次数的要求,也有比较低的成本。数据存储模块的硬件电路如图4所示。
FRAM芯片FM24CL16通过I2C接口和AT89C51RD2相连,I2C总线通过两根线——串行数据(SDA)和串行时钟(SCL)线连接到总线上的任何一个器件,每个器件都有一个唯一的地址,而且都可以作为一个发送器或接收器。此外,器件在执行数据传输时也可以看作是主机或从机,I2C是一个多主机总线,SDA和SCL都是双线路,连接到总线的器件的输出级必须是漏极开路或集电极开路,都通过一个电流源或上拉电阻连接到正的电源电压。当总线空闲时,这两条线路都是高电平。FLASH芯片AT45DB041通过SPI接口和AT89C51RD2相连接,SPI是一个全双工的串行接口,采用三线同步的数据传输形式。在一定的数据传输过程中,接口上只能有一个主机和一个从机进行通信。在一次传输过程中,主机总是向从机发送一个字节数据,而从机也总是向总机发送一个字节数据。
图4 存储模块原理科
小结
本设计实现了汽车行驶记录仪的USB HOST功能,使汽车行驶记录仪与优盘可进行大量数据的快速交换。基于本设计的产品在送检、认证和使用过程中,USB HOST技术性能达到了产品设计要求和技术要求,方便了用户对大量数据进行快速采集。