位置:51电子网 » 技术资料 » 通信网络

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

发布时间:2008/5/29 0:00:00 访问次数:432

  设计了一种can-usb转换器,实现了can总线与上位机的实时通信,完成了对can总线通信的实时信息采集。

  引言

  abs(防抱死刹车系统)ecu(电控单元)在研发过程中,为了实时确定其行车参数和控制参数,通常会使用标定技术,标定技术就是通过一定的命令对ecu上传和读取控制算法参数,以达到对其实时修改以寻求最优的技术。

对于车载电控单元来说,其通常只有can总线通信接口,为了能实现上位机和ecu能直接进行通信,实现利用标定技术对abs ecu 进行开发,我们设计了一款能实现can到usb的数据转换器。

can通信协议是一种用于汽车内部测量与执行部件之间的数据通信协议。而usb具有即插即用的优点,并且有较高的通信速率,对于实现上位机和下位机的通信进行标定十分方便。我们设计的数据转换器采用了nxp公司的lpc2119 arm7处理器,通过它成功地实现上位机和ecu的可靠通信和对下位机的标定。

  系统硬件设计

  lpc2119 arm7处理器

  lpc2119是基于一个支持实时仿真和跟踪的16/32 arm7 tdmi-s cpu 的微控制器,并带有128/256kb嵌入的高速flash 存储器。128 位宽度的存储器接口和独特的加速结构使32 位代码能够在最大时钟速率下运行。

  usb转换芯片ch372

  ch372 是一个usb 总线的通用设备接口芯片,在本地端,ch372 具有8 位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到控制器的系统总线上; ch372 内置了usb 通讯中的底层协议,在内置固件模式下,ch372自动处理默认端点0 的所有事务。

  系统设计

  转换器直接使用usb的5v供电,使用了lm1117将5v电源转换成3.3v和1.8v以供arm处理器及其外围模块使用,对于can控制器输出的逻辑电平用tja1050转换成差分电平输出ch372的设计十分重要,外接电容用于ch372 内外部电源节点去耦。在lpc2119的各电压引脚分别接了0.01mf的电容进行滤波。在usb转换芯片的设计中,可选4.7kw电阻用于在电源断电后将电解电容中的电能及时释放掉,使vcc 及时下降到0v,确保在下次通电时ch372 能够可靠地上电复位。为使ch372 能够可靠复位,电源电压从0v 上升到5v 的上升时间应该少于100ms,所以电容的容量和电阻的阻值都不能太大。用15pf 的独石或高频瓷片电容作为ch372的时钟振荡电路的起振电容。

  系统硬件设计部分框图如图1。

图1 转换器框图

  系统软件设计

  系统程序主要包括can控制器驱动程序,usb控制芯片ch372驱动程序,数据读写缓冲区的设计,以及如何调用can和usb的读写函数使数据的通信更好的同步。

  can驱动程序

  根据lpc2119微处理器can 控制器的特性,将can 的驱动程序分为3 个层次:

1.硬件抽象层:将can 控制器的硬件特性用数据类型进行抽象,并提供can 控制器硬件操作的接口。对物理层的寄存器和相应地址影射,定义了can 控制器寄存器的数据类型和对寄存器的操作方法。

2.功能函数层:can 控制器各种功能的实现函数,该层的函数利用硬件抽象层中对寄存器操作的接口来访问can 控制器来实现各种can 控制器所能提供的功能。

3.应用程序接口层:在该层中的主要提供给3 个函数,初始化can 控制器caninit()、发送数据cansenddata()、接收数据canrecievedata()。

  ch372驱动程序

  ch372 芯片在本地端提供了通用的被动并行接口。ch372 芯片的读写时序主要要求读写使能信号有一个2~10ms的持续时间,并且在a0=1时写入命令,a0=0时读写数据。在本设计中,用lpc2119的io口来表示ch372的各信号,并需要严格按照其时序要求用软件模拟其读写时序,一个典型的写数据子函数如下:

  usbwritedata(uint32 data)

  {

  ………………………

  io0clr=0x00000010; //a0=0,表示以下

  写入为数据

  io0pin=data; //向数据端口写入数据

  io0set=0x00000020; //rd=1,读信号无效

  io0clr=0x00000040; //wr=0,写使能

  delay8us(1); //延时8us,表示写信号

  有效宽度

  io0set=0x00000060;

  …………………………

  }

  在以上程序中,对各端口的操作先后代表了ch372的读写时序信号的先后,适当的延时表示有效的写/读选通脉冲wr/rd的宽度,其典型值为90到10000ns,我们选择25ms。同理可得写命令,读数据子函数:usbwritecmd (uint32 cmd),usbreaddata( )。调用以上子函数提供了发送和接收数据的函数: irq_ch372(void),

  设计了一种can-usb转换器,实现了can总线与上位机的实时通信,完成了对can总线通信的实时信息采集。

  引言

  abs(防抱死刹车系统)ecu(电控单元)在研发过程中,为了实时确定其行车参数和控制参数,通常会使用标定技术,标定技术就是通过一定的命令对ecu上传和读取控制算法参数,以达到对其实时修改以寻求最优的技术。

对于车载电控单元来说,其通常只有can总线通信接口,为了能实现上位机和ecu能直接进行通信,实现利用标定技术对abs ecu 进行开发,我们设计了一款能实现can到usb的数据转换器。

can通信协议是一种用于汽车内部测量与执行部件之间的数据通信协议。而usb具有即插即用的优点,并且有较高的通信速率,对于实现上位机和下位机的通信进行标定十分方便。我们设计的数据转换器采用了nxp公司的lpc2119 arm7处理器,通过它成功地实现上位机和ecu的可靠通信和对下位机的标定。

  系统硬件设计

  lpc2119 arm7处理器

  lpc2119是基于一个支持实时仿真和跟踪的16/32 arm7 tdmi-s cpu 的微控制器,并带有128/256kb嵌入的高速flash 存储器。128 位宽度的存储器接口和独特的加速结构使32 位代码能够在最大时钟速率下运行。

  usb转换芯片ch372

  ch372 是一个usb 总线的通用设备接口芯片,在本地端,ch372 具有8 位数据总线和读、写、片选控制线以及中断输出,可以方便地挂接到控制器的系统总线上; ch372 内置了usb 通讯中的底层协议,在内置固件模式下,ch372自动处理默认端点0 的所有事务。

  系统设计

  转换器直接使用usb的5v供电,使用了lm1117将5v电源转换成3.3v和1.8v以供arm处理器及其外围模块使用,对于can控制器输出的逻辑电平用tja1050转换成差分电平输出ch372的设计十分重要,外接电容用于ch372 内外部电源节点去耦。在lpc2119的各电压引脚分别接了0.01mf的电容进行滤波。在usb转换芯片的设计中,可选4.7kw电阻用于在电源断电后将电解电容中的电能及时释放掉,使vcc 及时下降到0v,确保在下次通电时ch372 能够可靠地上电复位。为使ch372 能够可靠复位,电源电压从0v 上升到5v 的上升时间应该少于100ms,所以电容的容量和电阻的阻值都不能太大。用15pf 的独石或高频瓷片电容作为ch372的时钟振荡电路的起振电容。

  系统硬件设计部分框图如图1。

图1 转换器框图

  系统软件设计

  系统程序主要包括can控制器驱动程序,usb控制芯片ch372驱动程序,数据读写缓冲区的设计,以及如何调用can和usb的读写函数使数据的通信更好的同步。

  can驱动程序

  根据lpc2119微处理器can 控制器的特性,将can 的驱动程序分为3 个层次:

1.硬件抽象层:将can 控制器的硬件特性用数据类型进行抽象,并提供can 控制器硬件操作的接口。对物理层的寄存器和相应地址影射,定义了can 控制器寄存器的数据类型和对寄存器的操作方法。

2.功能函数层:can 控制器各种功能的实现函数,该层的函数利用硬件抽象层中对寄存器操作的接口来访问can 控制器来实现各种can 控制器所能提供的功能。

3.应用程序接口层:在该层中的主要提供给3 个函数,初始化can 控制器caninit()、发送数据cansenddata()、接收数据canrecievedata()。

  ch372驱动程序

  ch372 芯片在本地端提供了通用的被动并行接口。ch372 芯片的读写时序主要要求读写使能信号有一个2~10ms的持续时间,并且在a0=1时写入命令,a0=0时读写数据。在本设计中,用lpc2119的io口来表示ch372的各信号,并需要严格按照其时序要求用软件模拟其读写时序,一个典型的写数据子函数如下:

  usbwritedata(uint32 data)

  {

  ………………………

  io0clr=0x00000010; //a0=0,表示以下

  写入为数据

  io0pin=data; //向数据端口写入数据

  io0set=0x00000020; //rd=1,读信号无效

  io0clr=0x00000040; //wr=0,写使能

  delay8us(1); //延时8us,表示写信号

  有效宽度

  io0set=0x00000060;

  …………………………

  }

  在以上程序中,对各端口的操作先后代表了ch372的读写时序信号的先后,适当的延时表示有效的写/读选通脉冲wr/rd的宽度,其典型值为90到10000ns,我们选择25ms。同理可得写命令,读数据子函数:usbwritecmd (uint32 cmd),usbreaddata( )。调用以上子函数提供了发送和接收数据的函数: irq_ch372(void),

相关IC型号

热门点击

 

推荐技术资料

耳机的焊接
    整机电路简单,用洞洞板搭线比较方便。EM8621实际采... [详细]
版权所有:51dzw.COM
深圳服务热线:13692101218  13751165337
粤ICP备09112631号-6(miitbeian.gov.cn)
公网安备44030402000607
深圳市碧威特网络技术有限公司
付款方式


 复制成功!