MCP2515 CAN控制器的使用
MCP2515最高支持SPI速率为10MHZ,本身CAN速率最高支持1MHZ(传输距离缩短),只支持SPI倆种传输模式 00,11。有些寄存器只能在配置模式修改。MCP2510的发送操作通过
三个发送缓冲器来实现。这三个发送缓冲器各占据14个字节的SRAM。第一字节是控制寄存器TXBNCTRL,该寄存器里的内容设定了信息发送的条件,且给出了信息的发送状态;第二
至第六字节用来存放标准的和扩展的标识符以及仲裁信息;最后八个字节则用来存放待发送的数据信息。
1.引脚说明:
TXCAN—连接到 CAN 总线的发送输出引脚
RXCAN—连接到 CAN 总线的接收输入引脚
CLKOUT—带可编程预分频器的时钟输出引脚
TX0RTS—发送缓冲器 TXB0 请求发送或通用数字输入引脚。
RX0BF—接收缓冲器 RXB0 的中断引脚或通用数字输出引脚
INT—中断输出引脚
RESET—低电平有效器件复位输入引脚
SCK—SPI接口时钟引脚
SI—SPI接口数据输入引脚
SI—SPI接口数据输出引脚
CS—SPI接口片选输入引脚
2. CAN的特点
(1) 多主控制
在总线空闲时,所有的单元都可开始发送消息(多主控制)。 最先访问总线的单元可获得发送权(CSMA/CA 方式)。
多个单元同时开始发送时,发送高优先级ID消息的单元可获得发送权。
(2) 消息的发送
在CAN协议中,所有的消息都以固定的格式发送。ID并不是表示发送的目的地址,而是表示访问总线的消息的优先级。
仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。
(3) 系统的柔软性
与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬
件及应用层都不需要改变。
(4) 通信速度
在同一网络中,所有单元必须设定成统一的通信速度。即使有一个单元的通信速度与其它的不一样,此单元
也会输出错误信号,妨碍整个网络的通信。不同网络间则可以有不同的通信速度。
(5) 远程数据请求
可通过发送“遥控帧” 请求其他单元发送数据。
(6) 错误检测功能·错误通知功能·错误恢复功能
所有的单元都可以检测错误(错误检测功能)。
检测出错误的单元会立即同时通知其他所有单元(错误通知功能)。
正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送
此消息直到成功发送为止(错误恢复功能)。
(7) 故障封闭
CAN可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部
故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上
隔离出去。
单元始终处于3 种状态之一。
(1) 主动错误状态
主动错误状态是可以正常参加总线通信的状态。
处于主动错误状态的单元检测出错误时,输出主动错误标志。
(2) 被动错误状态
被动错误状态是易引起错误的状态。
处于被动错误状态的单元虽能参加总线通信,但为不妨碍其它单元通信,接收时不能积极地发送错误通知。
处于被动错误状态的单元即使检测出错误,而其它处于主动错误状态的单元如果没发现错误,整个总线也被
认为是没有错误的。 处于被动错误状态的单元检测出错误时,输出被动错误标志。
处于被动错误状态的单元在发送结束后不能马上再次开始发送。在开始下次发送前,在间隔帧期间内
必须插入“延迟传送”(8 个位的隐性位) 。
(3) 总线关闭态
总线关闭态是不能参加总线上通信的状态。
信息的接收和发送均被禁止。
这些状态依靠发送错误计数和接收错误计数来管理,根据计数值决定进入何种状态。错误状态和计数值的关
系如表1 及图4 所示。
8.2 数据帧
数据帧由7 个段构成。
数据帧的构成如图16所示。
(1) 帧起始
表示数据帧开始的段。
(2) 仲裁段
表示该帧优先级的段。
(3) 控制段
表示数据的字节数及保留位的段。
(4) 数据段
数据的内容,可发送0 ~8 个字节的数据。
(5) CRC 段
检查帧的传输错误的段。
(6) ACK 段
表示确认正常接收的段。
(7) 帧结束
表示数据帧结束的段
MCP2515有配置模式、正常模式、休眠模式、监听模