EDN China > 设计实例 > 工业电子 > 网络与总线 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

嵌入式系统的CAN总线设计

湖南工学院 龙卓珉?? 2009年06月29日 ?? 收藏0

  3 系统软件的设计

  CAN控制器对于主控制器(CPU)来讲是一个存储器映象的I/O设备,SJA1000的功能配置和行为由主控制器的程序执行,主控制器和SJA1000之间的数据交换经过一组寄存器(控制段)和一个RAM(报文缓存器)完成。RAM部分的寄存器和地址窗口组成了发送缓存器和接收缓存器,其中控制段由CPU在初始化时设置,需要发送的数据由CPU填入发送缓存器中。接收缓存器有两个,对于CPU而言两者地址是相同的,当CPU读取一个缓存器时,另一个可同时在接收数据,两者替工作。SJA1000初始化程序图3所示。

SJA1000初始化程序图

  SJA1000控制段寄存器包括控制寄存器CR、命令寄存器CMR、状态寄存器SR、中断寄存器IR、接收代码寄存器ACR、接收屏蔽寄存器AMR、总线定时寄存器BTR0及BTRl、输出控制寄存器OCR、测试寄存器TR。控制寄存器用来控制中断、复位和同步方式。命令寄存器用来控制发送、终止发送、缓冲区释放、清除过载状态、睡眠、唤醒和接收方式。状态寄存器用于指示CAN控制器的当前工作状态,包括接收缓冲区状态、数据是否超载、发送缓冲区状态、发送是否结束、接收是否正在进行、发送是否正在进行、错误状态和总线是否关闭。中断寄存器用来指示各中断源状态,包括接收中断、发送中断、出错中断、超载中断和唤醒中断。接收代码寄存器存放用于接收帧识别的代码。接收屏蔽寄存器说明对应于接收代码的哪些位参与接收帧识别。总线定时寄存器用来设定总线通信速率。输出控制寄存器用来控制输出驱动器的输出方式。测试寄存器仅用于芯片内部测试。

  控制CAN总线时首先初始化各寄存器,以设定通信参数(如:模式、位速率、验收码、屏蔽码、字段长、总线定时、输出模式等),BASIC CAN方式控制段共10个字节。发送数据时首先置位命令寄存器,然后将被发送的报文写入发送缓冲区,最后置位请求发送,由SJAl000完成发送。接收通过查询状态寄存器,读取接收缓冲区获得信息,然后释放接收缓冲器。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

SJAl000? 嵌入式? CAN总线? ARM?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈