Controller Area Network (CAN)
22.1 概述
22.1.1 特性
22.1.2 功能描述
22.1.3 框图
图22-1. CAN 框图
22.1.3.1 CAN内核
22.1.3.2 消息处理程序
22.1.3.3 消息RAM
22.1.3.4 寄存器和消息对象访问(IFx)
22.2 配置设备引脚
22.3 操作模式
22.3.1 初始化
22.3.2 CAN消息传输(正常操作)
22.3.2.1 禁用自动重传
22.3.2.2 自动总线打开
22.3.3 测试模式
22.3.3.1 静默模式
图22-2. 静默模式下的CAN内核
图22-3. 环回模式下的 CAN内核
22.3.3.3 外部环回模式
图22-4. 外部环回模式下的CAN内核
图22-5. 环回与静默模式组合下的CAN内核
22.5 中断功能
22.5.1 消息对象中断
22.5.2 状态更改中断
22.5.3 错误中断
22.6 全局断电模式
22.6.1 进入全局掉电模式
22.6.2 从全局掉电模式唤醒
22.7 本地掉电模式
22.7.1 进入本地掉电模式
22.7.2 从本地掉电模式唤醒
22.8 奇偶校验机制
22.8.1 奇偶校验错误的行为
22.9 调试模式
22.10 模块初始化
22.11 消息对象的配置
22.11.1 数据帧的发送对象的配置
图22-6. 发送对象的初始化
22.11.2 远程帧的发送对象的配置
22.11.3 配置数据帧的单个接收对象
图22-7. 数据帧的单个接收对象的初始化
22.11.4 远程帧的单个接收对象的配置
图22-8. 远程帧的单个接收对象的初始化
22.11.5 FIFO缓冲区的配置
22.12 消息处理
22.12.1 消息处理程序概述
22.12.2 接收/发送优先级
22.12.3 事件驱动的CAN通信中的消息传输
22.12.4 更新传输对象
22.12.5 更改发送对象
22.12.6 接收到的消息的可接受过滤
22.12.7 数据帧的接收
22.12.8 接收远程帧
22.12.9 读取接收的消息
22.12.10 为接收对象请求新数据
22.12.11 在FIFO缓冲区中存储接收的消息
22.12.12 从FIFO缓冲区读取
图22-9. FIFO缓冲区的CPU处理(中断驱动)
22.13.1 位时间和位速率
图22-10. 位定时
表22-1. CAN协议要求的可编程范围
22.13.1.1 同步段
22.13.1.2 传播时间段
图22-11. 传播时间段
22.13.1.3 相位缓冲区段和同步
图22-12. 后沿和早期同步
图22-13. 过滤短主导尖峰
22.13.1.4 振荡器容差范围
22.13.2 CAN位定时的配置
图22-14. CAN内核的CAN协议控制器的结构
22.13.2.1 位定时参数的计算
22.13.2.2 高波特率位定时示例
22.13.2.3 低波特率位定时示例
22.14 消息接口寄存器集
22.14.1 消息接口寄存器设置1和2
图22-15. IF1 / IF2寄存器和消息RAM之间的数据传输
22.15 消息RAM
22.15.1 消息对象的结构
图22-16. 消息对象的结构
表22-2. 消息对象字段描述(接上)
表22-2. 消息对象字段描述(接上)
表22-3. 消息RAM在调试模式下寻址
表22-3. 消息RAM在调试模式下寻址(接上)
图22-17. 调试模式下的消息RAM表示
22.16 寄存器
22.16.1 CAN基地址
表22-4. CAN基地址列表
22.16.2 CAN_REGS 寄存器
表22-5. CAN_REGS 寄存器
表22-6. CAN_REGS访问类型代码
图22-18. CAN_CTL寄存器
表22-7. CAN_CTL寄存器字段描述(接上)
表22-7. CAN_CTL寄存器字段描述(接上)
22.16.2.2 CAN_ES寄存器(偏移= 4h) [重置 = 3h]
图22-19. CAN_ES寄存器
表22-8. CAN_ES寄存器字段描述(接上)
22.16.2.3 CAN_ERRC寄存器(偏移= 8h) [重置 = 0h]
图22-20. CAN_ERRC Register
图22-21. CAN_BTR Register
表22-10. CAN_BTR寄存器字段描述(接上)
22.16.2.5 CAN_INT寄存器(偏移= 10h) [重置 = 0h]
图22-22. CAN_INT Register
22.16.2.6 CAN_TEST寄存器(偏移= 14h) [重置 = 0h]
图22-23. CAN_TEST Register
图22-24. CAN_PERR Register
图22-25. CAN_REL Register
图22-26. CAN_RAM_INIT Register
图22-27. CAN_GLB_INT_EN Register
图22-28. CAN_GLB_INT_FLG Register
图22-29. CAN_GLB_INT_CLR Register
图22-30. CAN_ABOTR Register
图22-31. CAN_TXRQ_X Register
图22-32. CAN_TXRQ_21 Register
图22-33. CAN_NDAT_X Register
图22-34. CAN_NDAT_21 Register
图22-35. CAN_IPEN_X Register
图22-36. CAN_IPEN_21 Register
图22-37. CAN_MVAL_X Register
图22-38. CAN_MVAL_21 Register
图22-39. CAN_IP_MUX21 Register
图22-40. CAN_IF1CMD Register
表22-29. CAN_IF1CMD寄存器字段描述(接上)
表22-29. CAN_IF1CMD寄存器字段描述(接上)
图22-41. CAN_IF1MSK Register
图22-42. CAN_IF1ARB Register
图22-43. CAN_IF1MCTL Register
表22-32. CAN_IF1MCTL寄存器字段描述(接上)
图22-44. CAN_IF1DATA Register
图22-45. CAN_IF1DATB Register
图22-46. CAN_IF2CMD Register
表22-35. CAN_IF2CMD寄存器字段描述(接上)
表22-35. CAN_IF2CMD寄存器字段描述(接上)
图22-47. CAN_IF2MSK Register
图22-48. CAN_IF2ARB Register
图22-49. CAN_IF2MCTL Register
表22-38. CAN_IF2MCTL寄存器字段描述(接上)
图22-50. CAN_IF2DATA Register
图22-51. CAN_IF2DATB Register
图22-52. CAN_IF3OBS寄存器
表22-41. CAN_IF3OBS寄存器字段描述(接上)
图22-53. CAN_IF3MSK Register
图22-54. CAN_IF3ARB Register
图22-55. CAN_IF3MCTL Register
表22-44. CAN_IF3MCTL寄存器字段描述(接上)
图22-56. CAN_IF3DATA Register
图22-57. CAN_IF3DATB Register
图22-58. CAN_IF3UPD Register