关 闭

新闻中心

EEPW首页 > 安全与国防 > 设计应用 > 基于Cortex-M3内核芯片LM3S2965的CAN总线节点设计

基于Cortex-M3内核芯片LM3S2965的CAN总线节点设计

作者:时间:2011-02-15来源:网络收藏

  32个报文对象是相同的,优先级除外。最小编号的报文对象具有最高的优先级。优先级以两种方式影响操作:第一种,如果在同一时间准备好多个操作,那么具有最高优先级的报文对象将会首先发生;第二种,多个报文对象正在挂起中断时,如果读取中断状态,则具有最高优先级的报文对象首先出现。由应用负责把32个报文对象作为一个源来管理,并确定分配和释放它们的最佳途径。

  控制器在下列条件下能够产生中断:

  ①当任何一个报文对象发送一个报文时;

  ②当任何一个报文对象接收一个报文时;

  ③满足警告条件,如一个错误计数器达到了限值,或出现多个总线错误时;

  ④满足控制器错误条件,如进入总线关闭状态时。

  图3是总线节点的软件流程。其中的对象就是一组数据的信息,包括下面结构体的信息:

c.JPG

  其中,ulMsglD用作11或29位标识符的报文标识符;ulMsgIDMask为在使能标识符过滤器时所使用的报文标识符屏蔽;ulFlags保存多个状态标志和tCANObjFlags所指定的设置;ulMsgLen是报文对象中的数据字节数;pucMsgData是指向报文对象的数据的指针。

  此结构是对与CAN控制器中一个CAN报文对象相关的项目进行的压缩。可以直接将这个对象的信息填充,即进行对象的赋值工作。下面的代码是程序中CAN接口部分的初始化部分:

d.JPG


  上面的这些函数都已经通过提供的API函数完成工作,CANConfigureNetwork函数要自己编写,代码如下:

f.JPG

  这里仅仅是对前文介绍的对象进行赋值,是将系统中真正用到的对象配置成我们需要的对象(包括是发送还是接收)。此处鉴于篇幅只给出了两个对象,一个用于发送数据,一个用于接收数据。上面的函数设置好后就可以通过CAN中断控制器来接收和发送数据。上述程序代码在Keil C3.78版本上调试编译通过,并且已经成功用于产品中。

结语

  本文介绍的CAN总线接口节点设计方案实现非常方便,硬件电路简单,软件设计模块化,可以应用此方案设计实用的系统。本文的接口就是的一部分,可以直接将仪表与传感器组成的称重系统接入现有的分布式网络中。

称重传感器相关文章:称重传感器原理

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭