1.CAN总线简介
(1)低成本; (2)极高的总线利用率; (3)很远的数据传输距离(长达10Km); (4)高速的数据传输速率(高达1Mbit/s); (5)可根据报文的 ID 决定接收或屏蔽该报文; (6)可靠的错误处理和检错机制; (7)发送的信息遭到破坏后,可自动重发 ; (8)节点在错误严重的情况下具有自动退出总线的功能; (9)报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息 。
标准格式的ID有11个位。从ID28到ID18被依次发送。禁止高7位都为隐性(禁止设定:ID=1111111XXXX) 扩展格式的 ID 有 29 个位。基本 ID 从 ID28 到 ID18,扩展 ID 由 ID17 到ID0 表示。基本 ID 和标准格式的 ID 相同。禁止高 7 位都为隐性。(禁止设定:基本 ID=1111111XXXX)
ACK段用来确认是否正常接收。由ACK槽(ACK Slot)和ACK界定符2个位构成。
数据帧和遥控帧的不同:遥控帧的RTR位为隐性位,没有数据段。没有数据段的数据帧和遥控帧可通过RTR位区别开来。
遥控帧的数据长度码以所请求数据帧的数据长度码表示。
主动错误标志:处于主动错误状态的单元检测出错误时输出的错误标志。 被动错误标志:处于被动错误状态的单元检测出错误时输出的错误标志。
(1)关于ISO11898,ISO11898是通信速度为125kbps-1Mbps 的CAN高速通信标准。目前,ISO1 1898追加新规约后,成为ISO11898-1新标准。 (2)关于ISO11519,ISO11519是通信速度为125kbps 以下的CAN低速通信标准。ISO11519-2是ISO11519-1追加新规约后的版本。
9)RSCAN0RMNB 为接收缓冲区编号寄存器,其位图如下图所示:
1、传输完成; 2、在TMTAR位被设置为1之后,传输已被中止; 3、当TMOM位设置为1时,检测到错误或仲裁丢失。
首先需要配置CKSC_ICANOSCD_CTL寄存器0位为1,把C_ISO_CANOSC时钟选择为MAINOSC/1。 然后配置P1_1为CAN的使能口,P1_2和P1_3为CAN的收发IO口。 接着配置GCTR 和C3CTR寄存器第2位为0,其他位保持不变,让CAN和通道从全局停止模式退出。 之后需要配置GCFG寄存器第4位为1,选择clk_xincan作为CAN的时钟源。 配置C3CFG寄存器,设置SJW、TSEG1、TSEG2、BRP,通过这些参数计算出波特率。 计算公式如下:Baudrate = fCAN/(BRP+1)/(1+TSEG1+TSEG2)。
首先配置GAFLCFG0寄存器最后一位是1,选择通道3的接收规则数量为6。 然后设置GAFLECTR寄存器第8位为1,使能接收规则,接着就可以开始配置GAFLID0、GAFLM、GAFLP0、GAFLP1寄存器,写入接收规则。 最后只需要配置RMNB寄存器第4位为1,设置为有16个接受数组,然后配置GCTR寄存器第10、 9 、8位都为0。
首先通过读取RMND0、RMND1、RMND2三个寄存器来判断是否有接收到数据,如果有接收到新数据,就把新的数据存入到临时数组中。 紧接着清除接受标志位,把数据从临时数组中写入接受数组。 最后检测是否有消息覆盖,没有则返回CAN_RTN_OK。
汽车研发交流群,有兴趣的朋友请添加群主:prOmiseyes,备注:公司+职务入群。仅限汽车从业人员。