微波EDA网,见证研发工程师的成长!
首页 > 通信和网络 > 通信网络技术文库 > 基于ARM7的CAN-USB转换器设计

基于ARM7的CAN-USB转换器设计

时间:08-02 来源:互联网 点击:
环形缓冲区  

在本设计中,设计了两个环形缓冲区,分别存放USB及CAN的数据,使其能同步发送,一个典型的缓冲区数据结构如下:  

struct CANRecRinBuf  
{  
Uint32 CANBuf[MAX];  
Uint32 WritePtr;  
Uint32 ReadPtr;  
}  

数据元素是无符号32位整数,MAX为环形缓冲区最大长度,WritePtr为读指针,ReadPtr为写指针。读写指针初始化为WritePtr = ReadPtr =0。通过CAN控制器接受的数据存放在环形缓冲区CANRecRinBuf中,再读出数据从USB端输出,保证了数据通信的可靠性。  

上位机监控界面  

安装CH372的上位机驱动后,基于CH372的USB设备就可以被上位机识别了。调用CH372提供的动态连接库CH372.dll及其相应的LIB文件CH372.Lib和头文件CH372.h,以建立上位机的工序,调用CH372提供的库函数CH375OpenDevice()、CH375CloseDevice(),用于打开和关闭设备,调用CH375WriteData(); CH375ReadData()接收下位机通过CH372发送上来的数据,并根据CAN总线数据的格式将其封装成CAN格式的数据,提供对CAN数据的收发CANDownload(),CANUpload()。用C++设计相应的图形界面以实现和下位机的通信。

结语  

在ABS ECU的研发项目中,我们使用了此转换器将ECU的CAN数据转换成USB数据和上位机通信,ECU上传需监控参数,上位机下传标定参数。其硬件上使用ARM7内核的LPC2119作为控制器,以及底层软件的设计确保了转换器在实际的ECU开发的CCP标定的工程中,在大量数据进行传输的过程中有较好的可靠性。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top