USB-CAN转接系统设计
端口,此时可以写入命令;当A0引脚为低电平时,选择数据端口,此时可以读写数据。单片机通过8位并口对CH372芯片进行读写时,所有操作都是由一个命令码、若干个输人数据和若干个输出数据组成。
但部分命令不需要输入数据,而部分命令也可以没有输出数据。
CH372芯片专门用于处理USB通讯。在接收到数据或发送完数据后,CH372将以中断方式通知单片机进行处理。单片机通过CH372接收和发送数据的流程图如图3所示。
4 CAN控制器部分
CAN控制器SJA1000可以通过总线驱动器PCA82C250接收CAN总线上的信号,并将其传送到微控制器,同时接收微控制器传来的信号,然后通过驱动器再传送到CAN总线。
由于SJA1000与CH372的地址/数据总线共用,故应通过片选加以区别。操作时可将地址锁存管脚ALE/AS与单片机的ALE/P相连接,WR和RD管脚分别与单片机的WR、RD相连接。MODE管脚拉高则选用INTEL模式。应用时应将中断管脚INT与AT89C52的INT1相连,并接外部中断1,同时应接上拉10 kΩ电阻。电源与地之间应连接去耦电容。
SJA1000的TX0和RX0管脚分别与驱动器82C250的TX和RX相连接,可用于向CAN总线发送和接收数据。此时,需要将RX1管脚接到一个稳定的电平上,并将系统中的RX1接地。
在CAN总线端,单片机控制着传输流程。SJA1000的初始化由单片机完成,其初始化流程图见图4所示,在正常工作模式下,单片机可控制SJA1000的收发等操作,以完成和CAN总线的通信。当主机端传来数据时,单片机将数据转发到SJA1000的发送缓冲区,并由SJA1000根据CAN协议自动封装后发送到CAN总线上;当SJA1000接收到来自CAN总线上的一个有效的报文后,系统将在INT引脚上产生一个硬件中断信号(低有效),当单片机收到中断信号后,即进人中断服务程序,以完成数据的接收和处理,其中断服务流程见图5所示。
5 结束语
本文介绍的USB-CAN转接系统可以实现预期的目标。它能够实现数据的传输,从而为CAN总线和PC机的连接提供了一个方便实用的USB接口。
- Linux系统下USB摄像头驱动程序开发(04-25)
- 基于uClinux嵌入式系统的汽车黑匣子的设计(07-08)
- 基于WinCE操作系统的通用USB数控键盘设计(08-05)
- 基于WinCE的ARM视频监控系统(11-14)
- 基于LabVIEW的USB实时数据采集处理系统的实现(03-26)
- 基于DSP和USB的高速数据采集与处理系统设计(05-01)