微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于LPC2294的CAN总线智能节点设计

基于LPC2294的CAN总线智能节点设计

时间:04-29 来源:互联网 点击:

在设置各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总线节点的一个模块,能够和仪器仪表等设备相结合,使其具有网络通信的能力,有着广阔的应用前景。

  

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

网站地图

Top