设计给出的can总线智能节点设计方案,它采用内置多路can总线控制器的lpc2294作为主控制器,采用隔离can收发器ctm1050t作为收发器,使得该节点体积小、功耗低、抗干扰性好,因而特别适用于汽车、工业控制以及医疗系统和容错维护总线中。
1.硬件设计
1.1 lpc2294的特点
lpc2294是philips公司推出的一款功能强大的超低功耗的具有arm7tdmi内核的32位微控制器。内部嵌入256 kb的高速flash 存储器和16kb静态ram。128 位宽度的存储器接口和独特的加速结构使32 位代码能够在最大时钟速率(60mhz)下运行。对代码规模有严格控制的应用可使用16 位thumb 模式将代码规模降低超过30%,而性能的损失却很小。
由于lpc2294 的144 脚封装、极低的功耗、两个个32 位定时器、八通道10 位adc、四路互连的can接口、pwm 通道(六路)以及多达九个外部中断管脚使它们特别适用于汽车、工业控制应用以及医疗系统和容错维护总线。
lpc2294 集成4路can 控制器。他们具有如下特性:
★ 单个总线上的数据传输速率高达1mb/s
★ 32 位寄存器和ram访问
★ 兼容can 2.0b, iso 11898-1标准
★ 全局验收滤波器可以识别所有can 总线的11 位和29 位rx 标识符
★ 验收滤波器为选择的标准标识符提供了full can-style 自动接收功能
1.2 隔离can收发器ctm1050t
ctm1050t是一款带隔离的高速can收发器芯片,其主要功能是将can控制器的逻辑电平转换为can总线的差分电平,并且具有(dc 2500v)隔离功能、esd保护功能及tvs管防总线过压功能。ctm1050t具有以下特性:
☆完全符合can 2.0和iso 11898标准的can收发器
☆具有隔离、esd保护功能及tvs管防总线过压功能;
☆速率最高达1mbit/s;
☆隔离电压:dc 2500v
☆电磁辐射eme极低,电磁抗干扰emi性极高;
☆无需外加元件可直接使用。
1.3 can智能节点硬件电路设计
can智能节点硬件电路如图1所示。
图1基于lpc2294的can总线智能节点硬件电路
主控制器lpc2294的晶振频率范围为1~30mhz。本设计选晶振频率为20mhz。内部256kb的高速flash存储器用于代码和数据的存储。对于flash存储器,可通过内置的串行jtag接口进行在系统编程(isp in-system programming),或进行在应用编程(iap in-application programming)。为了便于调试和系统升级,在设计中总可以预留这些接口电路。
lpc2294采用双电源供电。cpu的供电电压范围为1.65~1.95v(1.8±0.15v),i/o供电电压范围为3.0~3.6v(3.3±03v)。
隔离can总线收发器ctm1050t是can协议控制器和物理总线之间的接口。在以往的设计方案中需要高速光耦(6n137)、dc/dc电源隔离模块、can收发器等其他元件才能实现带隔离的can收发电路,现在只需利用一片ctm1050t接口芯片就可以实现带隔离的can收发电路,并且隔离电压可以达到dc 2500v。
1.4硬件的抗干扰设计
在本设计所应用的场合中,产生电磁信号的设备较多,包括超短波设备、音频设备、电源等,因此抗干扰设计显得尤为重要。主要采取了以下措施:
(1)为了进一步提高can总线节点的抗干扰能力,保证各节点之间在电气上是完全隔离和独立的,我们采用隔离can收发器ctm1050t,取代传统的光耦与电源隔离模块,提高性能的同时简化电路设计。
(2)在can总线的两端加有两个120ω的电阻,这两个电阻对于总线阻抗的匹配起着相当重要的作用。去掉它们会使数据通信的抗干扰性及可靠性大大降低,甚至无法通信。
(3)canh和canl与地之间并联了两个30pf的小电容,可虑除总线上的高频干扰并且具有一定的防电磁辐射的能力。
2.软件设计
对于一般的32位arm嵌入式应用系统,在运行主程序前必须初始化运行环境,即编写arm控制器启动代码。该启动代码包括异常向量表、堆栈初始化、存储系统初始化和目标板初始化等,一般用汇编语言编写。
对于该设计来说,关键的是编写can驱动程序。主程序只需通过调用驱动程序提供的接口来实现数据的接受和发送。驱动程序包括四部分内容:can控制器的初始化、接收数据、发送数据和总线异常处理。图2为主程序流程图。
图2 主程序流程图
2.1 can控制器的初始化
初始化can 控制器的操作包括:硬件使能、设置管脚连接、软件复位、设置报警界限、设置总线波特率、设置中断工作方式、设置验收滤波器工作方式、设置工作模式并启动can等。需要特别指出的是设置总线波特率是个难点,所有can节点的波特率都要相同才能正常工作,所以要正确配置vpbdiv和pll寄存器。在设置各can寄存器之前必须进行软件复位,这是因为can的某些寄存器必须在软复位下读写。
值得注意的是,lpc2294为所有的can 控制器提供了全局接收标识符查询功能。2kb的接收过滤用ram可容纳1024个标准标识符或者512个扩展标识符或两种类型混合的标识符。通过软件处理,可在该ram中设置存放1~5个标识符表格,它能更容易的对任意复杂的id进行筛选过滤,满足复杂的id的接受过滤要求。大大减少了系统软件设计复杂度及运行时的负担。设置验收滤波器工作方式,必须首先创建lut表格,指定每个表格的起始地址,并用实际的id地址初始化该表格。最后设定验收滤波器模式寄存器。若该节点不主动发送数据,可选择在总线不活动时进入睡眠模式。
2.2 数据发送
将待发送的数据打包成符合can 协议的帧格式后,便可写入发送缓存区,并启动发送。在写发送缓存区前必须查询其状态。lpc2294中的can控制器为了提高大量数据发送的效率,每个can控制器都有三个独立的发送缓冲区,它们的状态可以通过查询cansr得知。只有当其中有空闲的发送缓冲区时才可将数据写入。在发送大量数据数,这一步显得尤为重要,否则发送可靠性将不能保证。启动发送成功后,只能通过查询cangsr的tcs位或配合发送成功中断来判断数据是否发送成功。
2.3 数据接收
接收数据可采用查询方式或中断方式。在某一段时间内,can总线并不总是在活动,为了提高效率,可采用中断方式。在初始化程序中必须使能接收中断。在中断服务子程序中,读取canicr,判断是否有接收中断标志,有则读取接收缓冲区数据。
2.4 异常情况处理
在总线发生严重故障的情况下,can节点有可能脱离总线,此时以下寄存器位被置位:cansr的bs位、canir的bei位和ei位(如果使能)和canmod的rm位。rm将许多can控制器功能复位和禁止。软件下一步必须置零rm位。发送错误计数器将递减计数总线释放条件(11个连续的隐性位)的第128个事件。软件可通过读取tx错误计数器对计数器递减计数的情况进行监测。
一些不是很严重的错误一般不会引起总线错误,即使不处理也不会产生什么致命错误,为了提高中断处理速度,可以根据实际情况裁减中断服务程序。
3结束语
由于该方案体积小、功耗低、抗干扰性好,现已应用于电磁环境复杂的某装甲车通信设备中,满足了该项目对can网络节点的要求。此外该设计作为can总线节点的一个模块,能够和仪器仪表等设备相结合,使其具有网络通信的能力,有着广阔的应用前景。
Ixia推出CloudStorm网络安全测试平台
双十一预售5大数码家电推荐,你的购物车添加了么
锂电隔膜在线缺陷检测系统的相关功能说明
NB-IoT:加速智慧城市发展的基石
面筋测定仪的应用及参数
基于LPC2294的CAN总线智能节点设计
航天航空电路板测试的重点与难点
德州仪器 MSP430系列新增多款新型MCU 可适应105°C的工作温度
日本地震导致硅片等半导体设施停工,预计影响可控
Grove Beginner Kit for Arduino入门套件试用指南
芯片法案通过对全球半导体影响剧烈,中国内地语音芯片或将受阻!
聊聊芯片设计、流片那些事
只有一个输出端的时钟信号线能够实现差分线吗
IBM人机辩论赛 最终AI利大于弊观点险胜
四输入音源自动选择器,Audio source selector
5V稳压电源中滤波电容的选取
百度视觉团队在全球最大规模目标检测竞赛,中国团队从全球450多支参赛队伍中脱颖而出
液态金属基可拉伸封装材料的出色性能
中电器材喜获美信中国区代理权,本土分销更添优势
STM32 + MPU6050设计便携式Mini桌面时钟