1.引言
最近工作中遇到需要6路CAN通信的情况,单片机自带的4路已不满足实际需求,故采用了SPI总线的CAN控制器芯片MCP2515,通过SPI通信的CAN扩展芯片最高可实现1Mbps的遵循CAN 2.0B的协议通信,配置起来也比较繁琐,故写诞生了这篇文章。本篇中仅对基础功能进行测试,如有疑问可留言交流或自行查看芯片手册。

2.硬件连接
由于该芯片主要起到SPI转CAN控制器的效果,还需搭配CAN收发器才能进行正常的CAN通信,这里采用的是一款国产芯片,川土微电子公司的IF1042VS,也可选用其他收发器,保证畅通即可。


3.芯片详情
3.1 SPI接口
MCP2515支持最高10MHz的SPI通信,可直接与微控制器上的SPI外设连接,并支持模式0和模式3,遵从SPI协议,可通过CS引脚片选的下拉开启通信;同时应注意,在传输另一个指令前应将片选置高后再拉低。

3.2 工作模式
MCP2515有5种工作模式,可通过CANCTRL寄存器的REQOP设置所需模式,要注意直到所有挂起的消息传输完成后,模式才会实际更改。通过CANSTAT寄存器的OPMODE可读取当前模式,建议在模式更改后再读取一下CANSTAT寄存器,以保证写入成功并进入预定模式。


1)配置模式:芯片在激活前必须首先进行初始化。上电、使用RESET引脚,或更改CANCTRL寄存器的REQOP<2.0>等均可进入配置模式,以下寄存器只有在配置模式下才能被更改。
| 标号 | 名称 | 功能 |
|---|---|---|
| 1 | CNF1, CNF2, CNF3 | 波特率配置 |
| 2 | TXRTSCTRL | 发送引脚配置 |
| 3 | Filter registers | 过滤器配置 |
| 4 | Mask registers | 掩码配置 |
2)睡眠模式:MCP2515具有内部睡眠模式,用于最大限度地减少设备的当前消耗。即使MCP2515处于睡眠模式,SPI接口也会保持活动状态以便读取。更改CANCTRL寄存器可进入睡眠模式,在写入寄存器后应进行读取,以确保芯片进入睡眠模式。
>>睡眠唤醒:睡眠模式下,可通过CAN总线唤醒或通过SPI切换模式。通常情况下,CAN总线唤醒为常见用法,需要配置CANINTE寄存器开启唤醒中断,当接收到RXCAN引脚上的电平变化,导致从睡眠模式唤醒的报文及在唤醒中接收到的报文将被忽略,同时芯片被唤醒,INT引脚能捕捉到下降沿跳变,MCP2515会自动进入仅监听模式,此时应手动设置芯片为正常模式。
3)仅监听模式:仅监听模式使MCP2515 可以接收包括错误报文在内的所有报文。这种模式可用于总线监视应用或热插拔状况下的波特率检测。
4)环回模式:环回模式允许器件内部的发送缓冲器和接收缓冲器之间进行报文的自发

最低0.47元/天 解锁文章
1200

被折叠的 条评论
为什么被折叠?



