SJA1000独立的CAN控制器应用指南_第1页
SJA1000独立的CAN控制器应用指南_第2页
SJA1000独立的CAN控制器应用指南_第3页
SJA1000独立的CAN控制器应用指南_第4页
SJA1000独立的CAN控制器应用指南_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SJA1000独立的CAN控制器应用指南目录1介绍 (22概述 (22.1 SJA1000的特征 (22.2 CAN节点结构 (33系统 (43.1 SJA1000的应用 (43.2 电源 (53.3 复位 (53.4 振荡器和时钟策略 (53.4.1 睡眠和唤醒 (63.5 CPU接口 (63.6 物理层接口 (74CAN通迅的控制 (84.1 控制SJA1000的基本功能和寄存器 (84.1.1 发送缓冲器/接收缓冲器 (94.1.2 验收滤波器 (104.2 CAN通讯的功能 (144.2.1 初始化 (154.2.2 传输 (194.2.3 中止发送 (224.2.4 接收 (234.

2、2.5 中断 (275PELICAN模式的功能 (305.1 接收FIFO/报文计数器/直接RAM访问 (305.2 错误分析功能 (325.2.1 错误计数器 (335.2.2 出错中断 (335.2.3 错误码捕捉 (345.3 仲裁丢失捕捉 (365.4 单次发送 (375.5 仅听模式 (385.6 自动位速率检测 (385.7 CAN的自测试 (395.8 接收同步脉冲的产生 (406参考文献 (417附录 (411介绍SJA1000是一个独立的CAN 控制器它在汽车和普通的工业应用上有先进的特征由于它和 PCA82C200在硬件和软件都兼容因此它将会替代PCA82C200SJA10

3、00有一系列先进的功能适合 于多种应用特别在系统优化诊断和维护方面非常重要 本文是要指导用户设计基于SJA1000的完整的CAN 节点同时本文还提供典型的应用电路图和编程 的流程图 2概述SJA1000独立的CAN 控制器有2个不同的操作模式 BasicCAN 模式和PCA82C200兼容 PeliCAN 模式 BasicCAN 模式是上电后默认的操作模式因此用PCA82C200开发的已有硬件和软件可以直接在SJA1000上使用而不用作任何修改 PeliCAN 模式是新的操作模式它能够处理所有CAN2.0B 规范的帧类型而且它还提供一些增强功能使SJA1000能应用于更宽的领域 2.1 SJA

4、1000的特征 SJA1000的特征能分成3组1 已建立的PCA82C200功能这组的功能已经在PCA82C200里实现 2 改良的PCA82C200功能这组功能的部份已经在PCA82C200里实现但是在SJA1000 里这些功能在速度大小和性能方面得到了改良 3PeliCAN 模式的增强功能在PeliCAN 模式里SJA1000支持一些错误分析功能支持系统诊断 系统维护系统优化而且这个模式里也加入了对一般CPU 的支持和系统自身测试的功能 SJA1000所有的特征包括它们在应用中主要的优点都被列在下面的表中 表1 SJA1000应用中的优点 已建立的PCA82C200功能 灵活的微处理器接口

5、 允许接口大多数微型处理器或微型控制器 可编程的CAN 输出驱动器对各种物理层的分界面CAN 位频率高达1Mbit/s SJA1000覆盖了位频率的所有范围包括高速应用 提高的PCA82C200功能CAN2.0B(passive SJA1000的CAN2.0B passive 特征允许CAN 控制器接收有29位标识符的报文64个字节接收FIFO 接收FIFO 可以存储高达21个报文这延长了最大中断服务时间避免了数据超载24MHz 时钟频率 微处理器的访问更快和CAN 的位定时选择更多接收比较器旁路 减少内部延迟由于改进的位定时编程使CAN 总线长度更长PeliCAN 模式的增强功能 CAN2.

6、0B active CAN2.0B active 支持带有29位标识符的网络扩展应用发送缓冲器 有11位或29位标识符的报文的单报文发送缓冲器 增强的验收滤波器 两个验收滤波器模式支持11位和29位标识符的滤波 可读的错误计数器 可编程的出错警告界限支持错误分析在原型阶段和在正常操作期间可用于诊断系统维护系统优化错误代码捕捉寄存器 出错中断仲裁丢失捕捉中断支持系统优化包括报文延迟时间的分析单次发送使软件命令最小化和允许快速重载发送缓冲器 仅听模式 SJA1000能够作为一个认可的CAN 监控器操作可以分析CAN 总线 通信或进行自动位速率检测自测试模式 支持全部CAN 节点的功能自测试或在一个

7、系统内的自接收2.2 CAN 节点结构通常每个CAN 模块能够被分成不同的功能块SJA1000用使应用345最优化的CAN 收发器连接到CAN 总线收发器控制从CAN 控制器到总线物理层或相反的逻辑电平信号 上面一层是一个CAN 控制器它执行在CAN 规范8里规定的完整是CAN 协议它通常用于报文缓 冲和验收滤波而所有这些CAN 功能都由一个模块控制器模块控制器模块控制器控制它负责执行应用的功能例如控制执行器读传感器和处理人机接口MMI如图1所示SJA1000独立的CAN 控制器通常位于微型控制器和收发器之间大多数情况下这个控 制器是一个集成电路 图1 CAN 模块装置2.3 结构图下图是SJ

8、A1000的结构图 C AN-B us Line 图2 SJA1000的结构图根据CAN 规范CAN 核心模块核心模块控制CAN 帧的发送和接收 接口管理逻辑接口管理逻辑负责连接外部主控制器该控制器能可以是微型控制器或任何其他器件经过SJA1000复用的地址/数据总线访问寄存器和控制读/写选通信号都在这里处理另外除了PCA82C200已有的BasicCAN 功能还加入了一个新的PeliCAN 功能因此附加的寄存器和逻辑电路主要在这块里生效 SJA1000的发送缓冲器发送缓冲器发送缓冲器能够存储一个完整的报文扩展的或标准的当主控制器初始化发送接口管理逻辑会使CAN 核心模块从发送缓冲器读CAN

9、报文 当收到一个报文时CAN 核心模块将串行位流转换成用于验收滤波器的验收滤波器的验收滤波器的并行数据通过这个可编程的滤波器SJA1000能确定主控制器要接收哪些报文 所有收到的报文由验收滤波器验收并存储在接收接收FIFO 储存报文的多少由工作模式决定而最多能存储32个报文因为数据超载可能性被大大降低这使用户能更灵活地指定中断服务和中断优先级3系统 为了连接到主控制器SJA1000提供一个复用的地址/数据总线和附加的读/写控制信号SJA1000可以作为主控制器外围存储器映射的I/O 器件3.1 SJA1000的应用SJA1000的寄存器和管脚配置使它可以使用各种各样集成或分立的CAN 收发器由

10、于有不同的微控制器接口应用可以使用不同的微控制器图3所示是是一个包括80C51微型控制器和PCA82C251收发器的典型SJA1000应用CAN 控制器功能像是一个时钟源复位信号由外部复位电路产生在这个例子里SJA1000的片选由微控制器的P2.7口控制否则这个片选输入必须接到VSS 它也可以通过地址译码器控制例如当地址/数据总线用于其他外围器件的时侯 VVV 图3 典型的SJA1000应用3.2 电源SJA1000有三对电源引脚用于CAN 控制器内部不同的数字和模拟模块 VDD1/VSS1内部逻辑 数字 VDD2/VSS2输入比较器 模拟 VDD3/VSS3输出驱动器模拟为了有更好的EME

11、性能电源应该分隔开来例如为了抑制比较器的噪声VDD2可以用一个RC 滤波器来退耦 3.3 复位 为了使SJA1000正确复位CAN 控制器的XTAL1管脚必须连接一个稳定的振荡器时钟见3.4节引脚17的外部复位信号要同步并被内部延长到15个t XTAL 这保证了SJA1000所有寄存器能够正确复位见1要注意的是上电后的振荡器的起振时间必须要考虑 3.4 振荡器和时钟策略SJA1000能用片内振荡器或片外时钟源工作另外CLKOUT 管脚可被使能向主控制器输出时钟频率图4显示了SJA1000应用的四个不同的定时原理如果不需要CLKOUT 信号可以通过置位时钟分频寄存器Clock Off=1关断这将

12、改善CAN 节点的EME 性能CLKOUT 信号的频率可以通过时钟分频寄存器改变f CLKOUT = f XTAL / 时钟分频因子12468101214上电或硬件复位后时钟分频因子的默认值由所选的接口模式引脚11决定如果使用16MHz 的 晶振Intel 模式下CLKOUT 的频率是8 MHz Motorola 模式中复位后的时钟分频因子是12这种情况CLKOUT 会产生1.33MHz 的频率 Clock Off = 0 Clock Off = 1Clock Off = 1Clock Off = 1µµµ图4 时钟策略3.4.1 睡眠和唤醒置位命令寄存器的进入睡

13、眠位BasicCAN 模式或模式寄存器PeliCAN 模式的睡眠模式位后如果没有总线活动和中断等待SJA1000就会进入睡眠模式振荡器在15个CAN 位时间内保持运行状态此时微型控制器用CLKOUT 频率来计时进入自己的低功耗模式如果出现三个唤醒条件之中的一个1振荡器会再次启动并产生一个唤醒中断振荡器稳定后CLKOUT 频率被激活3.5 CPU 接口SJA1000支持直接连接到两个著名的微型控制器系列80C51和68xx 通过SJA1000的MODE 引脚可选择接口模式Intel 模式MODE 高Motorola 模式 MODE 低地址/数据总线和读/写控制信号在Intel 模式和Motoro

14、la 模式的连接如图5所示Philips 基于80C51系列的8位微控制器和XA 结构的16位微型控制器都使用Intel 模式为了和其他控制器的地址数据总线和控制信号匹配必须要附加逻辑电路但是必须确保在上电期间不产生写脉冲另一个方法在这个时候使片选输入是高电平禁能CAN 控制器 VV图5 SJA1000的CPU时钟接口3.6 物理层接口为了和PCA82C200兼容SJA1000包括一个模拟接收输入比较器电路如果收发器的功能由分立元件实现就要用刀这个集成的比较器C omparator B ypass = inactiveC omparator B ypass = active(C B P = 0

15、(C B P = 1tt图6 SJA1000的接收输入比较器如果使用外部集成收发器电路而且没有在时钟分频寄存器里使能比较器旁路功能RX1输出要被连接到2.5V 的参考电压现有的收发器电路参考电压输出图6显示了两种设置的相应电路CBP=激活和CBP=非激活另外唤醒信号的通道被下拉对于使用集成的收发器电路的所有新应用我们建议激活 使用SJA1000的比较器旁路功能图7如果这个功能被使能施密特触发器的输入有效内部的传播延迟t D2比接收比较器的延迟t D1要小得多它对最大的总线长度6有正面的影响另外休眠模式的电 流将显著降低 图7 带有集成收发器电路的标准应用4CAN 通迅的控制4.1 控制SJA1

16、000的基本功能和寄存器 SJA1000的功能配置和行为由主控制器的程序执行因此SJA1000能满足不同属性的CAN 总线系统的要求主控制器和SJA1000之间的数据交换经过一组寄存器控制段和一个RAM 报文缓冲器完成RAM 的部分的寄存器和地址窗口组成了发送和接收缓冲器对于主控制器来说就象是外围器件寄存器 表2根据它们在系统的作用分组列出了这些寄存器 注意一些寄存器只在PeliCAN 模式有效控制寄存器就仅在BasicCAN 模式里有效而且一些寄存器是只读的或只写的还有一些只能在复位模式中访问关于寄存器的读和或写访问位定义和复位值等更多信息可在数据表1中找到 表2 SJA1000内部寄存器的

17、分类寄存器地址使用类型 寄存器名称符号PeliCAN 模式 BasicCAN 模式功能模式MOD 0选择睡眠模式验收滤波器模式自测试模式只听模式和复位模式控制CR 0 在BasicCAN 模式里选择复位模式命令CMR1 BasicCAN 模式的睡眠模式命令选择不同的操作模式的要素时钟分频器CDR 3131在CLKOUT 设置时钟信号引脚 7选择PeliCAN 模式比较器旁路模式TX1管脚14输出模式验收码ACR 验收屏蔽AMR1629 202345 验收滤波器位的模式选择 总线定时寄存器0BTR0 总线定时寄存器1BTR1 6 7 6 7 位定时参数的设置输出控制OCR 88 输出驱动器属性的

18、选择命令CMR 11自接收清除数据超载释放接收缓冲器中止传输和传输请求的命令状态SR 2 2 报文缓冲器的状态CAN 核心模块的状态 中断IR 3 3 CAN 中断标志中断使能IER 4在PeliCAN 模式使能和禁能中断设定CAN 通讯的要素控制CR 0 在BasicCAN 模式使能和禁能中断事件仲裁丢失捕捉ALC 11 显示仲裁丢失位的位置 错误代码捕捉ECC 12 显示最近一次的错误类型和位置 出错警告界限EWLR 13 产生出错警告中断的阀值选择 RX 错误计数RXERR 14 反映接收错误计数器的当前值 TX 错误计数TXERR 1415反映发送错误计数器的当前值 Rx 报文计数器R

19、MC 29 接收FIFO 里的报文数量 复杂的错误检测和分析的要素RX 缓冲器起始地址RBSA30显示接收缓冲器提供的报文的当前内部RAM 地址发送缓冲器TXBUF 1628 1019 信息缓冲器 接收缓冲器RXBUF 1628 2029 4.1.1 发送缓冲器/接收缓冲器要在CAN 总线上发送的数据被载入SJA1000的存储区这个存储区叫发送缓冲器从CAN 总线上收到的数据也存储在SJA1000的存储区这个存储区叫接收缓冲器这些缓冲器包括23或5个字节的标识符和帧信息取决于模式和帧类型而最多可以包含8个数据字节关于报文缓冲器各位的定 义和组成等更多信息见数据表1BasicCAN 模式缓冲器长

20、10个字节见表3 2个标识符字节 最多8个数据字节 PeliCAN 模式这些缓冲器是13个字节长见表4 1字节帧信息 2个或4个标识符字节标准帧或扩展帧最多8个数据字节 表3 BasicCAN 模式里的RX 和TX 缓冲器CAN 地址十进制 名称 组成和注释TX 缓冲器10 RX 缓冲器20标识符字节1 8位标识符TX 缓冲器11RX 缓冲器21标识符字节2 3位标识符1位远程传输请求位4位数据长度代码表示数据字节的数量 TX 缓冲器1219RX 缓冲器2229数据字节18由数据长度代码指明最多8个数据字节表4 PeliCAN 模式里的RX 缓冲器1读访问和TX 缓冲器写访问2CAN 地址十进

21、制 名称 组成和标注 16帧信息1位说明如果报文包括一个标准帧或扩展帧 1位远程传输请求位 4位数据长度码说明数据字节的数量1718 标识符字节1 2 标准帧11位标识符 扩展帧16位标识符 1920标识符字节3 4仅扩展帧13个标识符 帧类型 标准帧1926 扩展帧2128数据字节18由数据长度代码说明最多8个数据字节1整个接收FIFO 64个字节能通过CAN 地址3295访问见5.1节2TX 缓冲器的读访问可通过CAN 地址96108完成也见5.1节 4.1.2 验收滤波器独立的CAN 控制器SJA1000装配了一个多功能的验收滤波器该滤波器允许自动检查标识符和数据字节使用这些有效的滤波方

22、法可以防止对于某个节点无效的报文或报文组存储在接收缓冲器里因此降低了主控制器的处理负载滤波器由验收码寄存器和屏蔽寄存器根据数据表1给定算法来控制 接收到的数据会和验收代码寄存器中的值进行逐位比较接收屏蔽寄存器定义与比较相关的位的位置0=相关1=不相关只有收到报文的相应相应相应的位与验收代码寄存器相应的位相同报文才会被接收 BasicCAN 模式里的验收滤波SJA1000在这个模式可以即插即用地取代PCA82C200硬件和软件因此验收滤波功能与PCA82C200的一样也可以使用这个滤波器是由两个8位寄存器验收码寄存器ACR 和验收屏 蔽寄存器AMR 控制CAN 报文标识符的高8位和这些寄存器里值

23、相比较见图8因此可以定义若干组的标识符为被任何一个节点接收例子MSB LSB验收码寄存器ACR 包括0 1 1 1 0 0 1 0 验收屏蔽寄存器AMR 包括0 0 1 1 1 0 0 0 带有11位的标识符信息被接收0 1 X X X 0 1 0 X X XX=无关 ID.10ID.0在验收屏蔽寄存器里是1的位置上标识符相应的位可以是任何值这对于三个最低位也一样因此在这个例子里可以接收64个不同的标识符标识符其他的位必须等于验收代码寄存器相应位的值 J K710011.GWM (1 图8 BasicCAN 模式的验收滤波 PeliCAN 模式的验收滤波 PeliCAN 模式的验收滤波已被扩展

24、4个8位的验收码寄存器ACR0ACR1ACR2和ACR3和 验收屏蔽寄存器AMR0AMR1AMR2和AMR3可以用多种方法滤波报文如图9和图10所示这些寄存器可用于控制一个长的滤波器或两个短的滤波器报文的哪些位用于验收滤波取决于收到的帧标准帧或扩展帧和选择的滤波器模式单滤波器或双滤波器有关报文的哪些位和验收码和屏蔽位相比较的更多信息请看表5从图和表可以看出标准帧的验收滤波可以包括RTR 位甚至数据字节对于不需要 经过验收滤波的报文位例如报文组被定义为接受验收屏蔽寄存器必须相应的位位置上置1如果报文不包括数据字节例如是一个远程帧或者数据长度码为零但是验收滤波包括数据字节 则如果标识符直到RTR

25、位都有效的话报文会被接收 例1 假设前面描述的同样的64个标准帧报文要在PeliCAN 模式里滤波可以通过使用一个长滤波器完成单滤波器模式验收代码寄存器ACRn和验收屏蔽寄存器AMRn包括 n 0 1(高四位 2 3 ACRn 01XX X010 XXXX XXXX XXXX XXXX XXXX AMRn0011 100011111111 11111111 1111接收的报文ID.28ID.18RTR 01xx x010 xxxxX不相关x任意只使用了ACR1和AMR1的高四位在验收屏蔽寄存器是1的位置上标识符相应的位可以是任何值譬如远程发送请求位和数据字节 1和2的位 J K710011.G

26、 WM (2 图9 PeliCAN 模式的验收滤波单滤波器模式 例2假设下面2个有标准帧标识符的报文在标识符不用进一步译码就被接收数据和远程帧必须被正确接 收数据字节不要求验收滤波 报文1ID.281011 1100 101ID.18 信息2ID.281111 0100 101ID.18 使用单滤波器模式可以接收到四个报文而不仅是要求的两个 N 0 1(高4位 23ACRn 1X11 X100 101XXXXX XXXX XXXX XXXX AMRn 0100 1000 0001 1111 1111 1111 1111 接收的报文ID.28ID.18RTR 1011 1111 1011 111

27、10100 0100 1100 1100101x 101x 101x 101x报文2 报文1 X不相关x任意只使用了ACR1和AMR1的高四位 这个结果不满足不进一步解码而接收两条信息的要求 使用双滤波器可以得到正确的结果滤波器1滤波器2n 0 1 3 低四位2 3 高四位ACRn 1011 1100 101X XXXX XXXX 1111 0100 101X AMRn 0000 0000 0001 1111 1111 0000 0000 0001 10111100101X11110100101X接收的信息 ID.28ID.18RTR报文1报文2 X不相关x任意 报文1被滤波器1接收报文2被滤

28、波器2接收如果报文至少被两个滤波器中的一个接收报文就被存到接收FIFO 这种方法可满足于这种要求例3在这个例子里使用一个长的验收滤波器滤波一组带有扩展帧标识符的报文 n 0 1 2 3高六位ACRn 1011 0100 1011 000X 1100 XXXX 0011 0XXXAMRn 0000 0000 0001 0001 0000 1111 0000 0111 接收的报文 ID.28ID.18RTR 1011 0100 1011 000x 1100 xxxx 0011 0xX不相关x任意只使用了ACR1和AMR1的高六位 J K710011.G WM (3 图10 PeliCAN 模式的验

29、收滤波双滤波器模式 例4 有些使用标准帧系统仅用11位标识符和头两个数据字节识别报文如果报文超过8个数据字节头两个数据字节定义为报文头和使用分段存储协议就会使用像这样的协议例如DeviceNet 对于这种系统类型SJA1000除了滤波11位标识符和RTR 位外在单滤波器模式里能滤波两个数据字节在双滤波器模式里能过滤一个数据字节除了11位标识符和RTR 位下面的例子显示了用双滤波器模式在这种系统里有效地滤波报文 滤波器1滤波器2 n 0 1 3 低四位2 3高四位 ACRn 1110 1011 0010 11111001 11110100 XXX0 AMRn 0000 0000 0000 000

30、0 0000 00000000 11101110 1011 0010 11111001 11110100xxx 0 接收的报文标识符+RTR 头一个数据字节 标识符 RTRX 不相关x任意滤波器1滤波的报文有 标识符11101011001 RTR也就是说是数据帧以及 数据字节11111001这是指例如DeviceNet一个信息的所有段都被过滤 滤波器2用来过滤一组8个报文其中报文有 标识符11110100 000到11110100111以及 RTR也就是数据帧 表5 PeliCAN 模式的验收滤波器总结帧类型 单滤波器模式图9双滤波器模式图10验收的报文位 - 11位标识符 - RTR 位 -

31、 第一个数据字节8位 - 第二个数据字节8位滤波器1验收的报文位 - 11位标识符 - RTR位 - 第一个数据字节8位 使用的验收码寄存器和屏蔽寄存器- ACR0/ACR1或ACR3的低四位 - AMR0/AMR1或AMR3的低四位 滤波器2 用于验收测试的报文位 - 11位标识符 - RTR 位标准使用的验收码寄存器和屏蔽寄存器- ACR0或ACR1/ACR2/ACR3的高四位 - AMR0或AMR1/AMR2/AMR3的高四位 接收屏蔽寄存器的未使用的位应设为1使用的验收码寄存器和验收屏蔽寄存器- ACR2或ACR3的高四位 - AMR2或AMR3的高四位用于验收的报文位 - 11位基本

32、的标识符 - 18位扩展的标识符 - RTR 位滤波器1用于验收的报文位 - 11位基本标识符 - 扩展标识符的5个最高位使用的验收码和验收屏蔽寄存器- ACR0/ACR1和AMR0/AMR1滤波器2用于测试验收的报文位 - 11位基本的标识符 - 扩展标识符的5个最高位 扩展使用的验收码和验收屏蔽寄存器- ACR0/ACR1/ACR2或ACR3的高六位 - AMR0/AMR1/AMR2或AMR3的高六位 验收屏蔽寄存器的未使用的位应设为1 使用的验收码和验收屏蔽寄存器 - ACR2/ACR3/和AMR2/AMR34.2 CAN 通讯的功能通过CAN 总线建立通讯的步骤是 系统上电后 根据SJ

33、A1000的硬件和软件连接设置主控制器 根据选择的模式验收滤波位定时等等设置CAN 控制器的通讯这也是在SJA1000硬件复位后进行 在应用的主过程中 准备要发送的报文并激活SJA1000发送它们 对被CAN 控制器接收的报文起作用 在通讯期间对发生的错误起作用 图11表示了程序的总体流程接下来会详细地解说那些直接控制SJA1000的流程 4.2.1 初始化如上面提到的一样独立的CAN控制器SJA1000必须在上电或硬件复位后设置CAN通讯在由主控制器操作期间它可能会发送一个软件复位请求SJA1000会被重新配置再次初始化流程图 如图12本章还会给出一个使用80C51派生的微控制器编程的例子

34、上电后主控制器在运行完自已的特殊复位程序后进入SJA1000的设置程序由于图11的configure control lines.部份和使用的控制器有关所以这里不作讨论但是这章的例子主要显示了如何配置一个80C51派生器件 初始化过程的描述见图12假设上电后独立CAN控制器在管脚17得到一个复位脉冲低电平使它进入复位模式在设置SJA1000的寄存器前主控制器通过读复位模式/请求标志来检查SJA1000是否已达到复位模式因为要得到配置信息的寄存器仅在复位模式可写 在复位模式中主控制器必须配置下面的SJA1000控制段寄存器 模式寄存器仅在PeliCAN模式为应用选择下面的工作模式 验收滤波器模式

35、 自我测试模式 仅听模式 时钟分频寄存器定义 使用BasicCAN模式还是PeliCAN模式 是否使能CLKOUT管脚 是否旁路CAN输入比较器 TX1输出是否用作专门的接收中断输出 验收码寄存器和验收屏蔽寄存器 定义接收报文的验收码 对报文和验收码进行比较的相关位定义验收屏蔽码 总线定时寄存器见6 定义总线的位速率 定义位周期内的采样点位采样点 定义在一个位周期里采样的数量 输出控制寄存器 定义CAN总线输出管脚TX0和TX1的输出模式正常输出模式时钟输出模式双相输出模式或测试输出模式 定义TX0和TX1输出管脚配置悬空下拉上拉或推挽以及极性 图11 程序的总体流程图con gure acc

36、eptance co e an图12 SJA1000的初始化流程图在将这个信息发送到SJA1000的控制段后SJA1000会清除复位模式/请求标志进入工作模式要必须先检查标志是否确实被清除是否进入了工作模式才能进行下一步的操作这通过循环读标志实现在硬件复位等待期间管脚17是低电平不能清除复位模式/请求标志因为这将迫使复位模式/请Array求标志变成复位/存在查阅数据表1可得到进一步的信息因此这个循环是不断尝试清除标志和检查是否成功离开复位模式进入工作模式后CAN 控制器的中断可被使能如果适合的话 例子SJA1000的配置和初始化这个例子是基于图3的应用例子在下面编程例子里假设微型控制器S87C

37、654是主控制器它以SJA1000输出的时钟作为时钟信号在上电期间一个复位电路为微型控制器和CAN 控制器提供硬件复位信号在复位1期间SJA1000的时钟分频寄存器清零因此CAN 控制器进入BasicCAN 模式且时 钟输出使能当晶振起振后CAN 控制器能够给S87C654传送时钟信号管脚11的时钟频率是f CLK/2它支持80C51系列控制器收到这个时钟信号后微控制器启动自已的复位过程如图11所示 在附录里给出了不同的常数和变量等等的定义变量在BasicCAN 和Pelican 模式里的的含意可以 不同例如InterruptEnReg 在BasicCAN 模式里是指控制寄存器但在Pelica

38、n 模式里是指中断使能寄存器编程使用的是C语言在这个例子里假设CAN 控制器要被初始化然后在PeliCAN模式里使用 这很容易地就可以从BasicCAN 模式相应的初始化程序实现 第一步必须在主控制器和SJA1000之间设定一个通讯链路片选中断等等如图11的configureControl lines. /*定义中断优先级和控制电平激活见4.2.5章*/PX0=PRIORITY_HIGH /*设CAN 有一个高优先级中断 */ IT0INTLEVELACT /*中断0为电平激活 */ /*使能SJA1000的通讯接口 */ CS ENABLE_N; /*SJA1000接口使能 */*通讯连接的

39、定义结束 */第二步是初始化SJA1000的所有内部寄存器因为一些寄存器在仅复位模式期间可被写所以在写入之前必须检查上电后SJA1000被设定为复位模式如果复位模式已被置位在循环里面可以检查到/*中断禁能如果使用上电后不需要 */EA DISABLE /*所有中断禁能 */ SAJIntEn =DISABLE; /*来自SJA100的外部中断禁能 */*设定复位模式/请求位注上电后SJA1000处于BasicCAN 模式在超时和出现错误信号后跳出循环 */ while(ModeControlReg & RM_RR_Bit= =ClrByte /*其他位而不是复位模式/请求位没有改变 *

40、/ ModeControlReg = ModeControlRegRM_RR_Bit /*根据图3给定的硬件设定时钟分频寄存器 选择PeliCAN 模式旁路CAN 输入比较器作为外部收发器使用为控制器S87C654选择时钟*/ClockDiv 标识符eReg=CANMode_Bit CBP_BitDivBy2/*如果需要在上电后总是必须的CAN 中断禁能 写SJA1000中断使能/控制寄存器 */InterruptEnReg=ClrIntEnSJA /*定义验收代码和屏蔽*/ AcceptCode0Reg=ClrByteAcceptCode1Reg=ClrByte AcceptCode2Reg

41、=ClrByte AcceptCode3Reg=ClrByte AcceptMask0Reg=DontCare /*接收任何标识符 */ AcceptMask1Reg=DontCare /*接收任何标识符 */ AcceptMask2Reg=DontCare /*接收任何标识符 */ AcceptMask3Reg=DontCare /*接收任何标识符 */ /*配置总线定时 */ /*位频率1Mbit/s24MHz 总线被采样一次 */BusTiming0Reg=SJW_MB_24Prec_MB_24BusTiming1Reg=TSEG2_MB_24TSEG1_MB_24 /*配置CAN 输出

42、TX1悬空TX0推挽正常输出模式*/OutControlReg = Tx1Float Tx0PshPullNormalMode /*离开复位模式/请求也就是转向操作模式S87C654的中断使能 但SJA1000的CAN 中断禁能这可以在一个系统里面分别完成 */*清除复位模式位选择双验收滤波器模式关闭自我测试模式和仅听模式清除休眠模式唤醒*/ do /*等待直到RM_RR_Bit 清零 */*在超时和出现错误后跳出循环 */ModeControlReg = ClrBytewhile(ModeControlReg&RM_RR_Bit != ClrByte SJAIntEn = ENABL

43、E /*SJA1000的外部中断使能 */ EA = ENABLE /*所有中断使能 */*- SJA1000初始化例子的结束 -*/4.2.2 传输根据CAN 协议规范8报文的传输由CAN 控制器SJA1000独立完成主控制器必须将要发送传送到发送缓冲器的报文然后将命令寄存器里的发送请求标志置位发送过程可由SJA1000的中断请求控制或由查询控制段的状态标志控制 中断控制的发送根据图13给出的控制器的主要过程CAN 控制器的发送中断以及为和SJA1000通讯主控制器使用的外部中断使能而且优先级高于启动发送也由中断控制中断使能标志是位于BasicCAN 模式的控制寄存器和PeliCAN 模式的

44、中断使能寄存器见表2及1 当SJA1000正在发送报文时发送缓冲器被写锁定所以在放置一个新报文到发送缓冲器之前主控 制器必须检查状态寄存器见1的发送缓冲器状态标志TBS发送缓冲器被锁定 主控制器将新报文暂时存放在它自已的存储器里并设置一个标志表示一个报文正在等待发送 如何处理可以设计来保存几个要发送的报文的临时存储计器是软件设计者的问题启动传输报文会在中断服务程序中处理程序在当前运行的发送末端被初始化从CAN 控制器收到中断见图13的中断处理过程后主控制器会检查中断类型如果是发送 中断它会检查是否有更多的报文要被发送一个正在等待的报文会从从临时存储器复制到发送缓冲器表示要发送更多信息的标志被清

45、除置位命令寄存器见1的发送请求TR 标 志使SJA1000启动发送 发送缓冲器被释放 主控制器将新报文写入发送缓冲器并置位命令寄存器见1的 发送请求TR 标志这将使SJA1000启动发送在发送成功结束时CAN 控制器产生会一个发送中断 copy message from temporary storinto the Transmit Bufferset Transmission R eques t bi图13发送一个报文的流程图中断控制查询控制的发送 流程如图14所示CAN 控制器的发送中断在这类传输控制中禁能只要SJA1000正在发送报文发送缓冲器就被写锁定因此在将新报文放入发送缓冲器之前主

46、控制器必须检查状态寄存器见1的发送缓冲器状态标志TBS发送缓冲器被锁定 周期查询状态寄存器主控制器等待直到发送缓冲器被释放 发送缓冲器被释放主控制器将新的报文写入发送缓冲器并置位命令寄存器见1的发送请求TR标志此时SJA1000将启动发送 PeliCAN模式的例子在附录里给出了不同的常数和变量等等的定义变量在BasicCAN 和Pelican 模式里的的含意可以 不同例如InterruptEnReg 在BasicCAN 模式里是指控制寄存器但在Pelican 模式里是指中断使能寄存器编程使用的是C语言根据4.2.1节给出的例子初始化CAN 控制器后可启动正常的通讯 : /*等待直到发送缓冲器被

47、释放 */Do /*等待时启动查询定时器并运行一些任务在超时和出现错误后跳出循环 */while(statusReg & TBS_Bit != TBS_Bit /*释放发送缓冲器信息可写入缓冲器 */ /*在这个例子里会发送一个标准帧信息 */TxFrameInfo = 0x08 /*SFF(dataDLC 8 */TxBuffer1 =0xA5 /*标识符 1 A510100101 */ TxBuffer2 = 0x20 /*标识符 22000100000*/ TxBuffer3 = 0x51 /*data1 =51 */ TxBuffer10 = 0x58/*data8 =58 *

48、/*启动发送 */ CommandReg =TR_Bit /*置位发送请求位*/ 状态寄存器的TS 和RS 标志能检测CAN 控制器是否已达到空闲状态TBS 标志和TCS 标志可以检 查是否成功发送BasicCAN 模式的例子 在附录里给出了不同的常数和变量等等的定义变量在BasicCAN 和Pelican 模式里的的含意可以不同例如InterruptEnReg 在BasicCAN 模式里是指控制寄存器但在Pelican 模式里是指中断使能寄存器编程使用的是C语言根据4.2.1节给出的例子初始化CAN 控制器后可启动正常的通讯 : /*等待直到发送缓冲器被释放 */Do /*等待时启动查询定时

49、器并运行一些任务在超时和出现错误后跳出循环 */while(StatusReg & TBS_Bit != TBS_Bit /*发送缓冲器被释放信息可写入缓冲器 */ /*BasicCAN模式里只有标准帧信息 */ TxBuffer1 = 0xA5 /* 标识符1A510100101 */ TxBuffer2 = 0x28 /* 标识符22800100000DLC8*/TxBuffer3 = 0x51 /* data1=51 */TxBuffer10 = 0x58/* data8=58 */ /*启动发送 */CommandReg = TR_Bit /*置位发送请求位*/TBS 和TCS

50、标志用于检查是否成功发送 图14发送一个报文的流程图查询控制4.2.3 中止发送 一个已经请求发送的报文可通过置位命令寄存器1的相应位执行中止发送命令中止发送这个功能可用于例如发送一个比现在的报文更紧急的报文而这个报文已被写入发送缓冲器但是直到现在没有被成功地发送 图15显示了一个使用发送中断的流程这个流程显示了为了发送更高优先级的报文而中止当前发送的 报文的情况不同原因的中止报文发送要求不同的中断流程一个相应的流程能从查询控制发送的处理中得到 以免报文由于不同的原因仍然等待处理发送缓冲器会锁定见图15的主流程图如果要求发送一个紧急报文置位命令寄存器里中止发送位当这条等待处理的报文已被成功的发

51、送或中止后发送缓冲器被释放同时产生一个发送中断被在中断流程要检查状态寄存器的发送完成标志确定前面的发送 是否成功状态未完成表示发送被中止在这种情况下主控制器要运行一个特殊程序来处理中止发 送例如在检查后重复发送中止的报文如果它仍然有效的话 Message has hi h priorit ?setTransmission Re uest bitsetTransmission Re uest bit图15中止发送一个报文的流程图中断控制4.2.4 接收根据CAN 协议规范8报文的接收由CAN 控制器SJA1000独立完成收到的报文放在接收缓冲器(见4.1.1和5.1可以发送给主控制器的报文由状态

52、寄存器的接收缓冲器状态标志RBS见1和接收 中断标志RI见1标出如果使能主控制器会将这条信息发送到本地的报文存储器然后释放接收缓冲器并对报文操作发送过程能被SJA1000的中断请求或查询SJA1000的控制段状态标志来控制 查询控制接收 流程如图16所示CAN 控制器在这种接收类型下接收中断禁能主控制器如常读SJA1000的状态寄存器检查接收缓冲状态标志RBS 看是否收到一个报文这些标志的定义位于控制段的寄存器见1接收缓冲器状态标志表示空也就是没有收到报文 主控制器继续当前的任务直到收到检查接收缓冲器状态的新请求 图16接收一个报文的流程图查询控制接收缓冲器状态标志表示满也就是说收到一个或多个报文 主控制器从SJA1000得到第一个报文然后通过置位命令寄存器的相应位发送一个释放接收缓冲器命令如图16所示主控制器在检查更多信息报文前可以处理每个收到的报文但也可以通过再次查询接收缓冲器状态位立即检查

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论