mcp25625 CAN控制嚣

现在 的主流MCU都内置的CAN了,但是一些特殊的条件下还有可能需要独立CAN控制嚣,mcp25625就是我公司常用的一个独立CAN控制嚣。

mcp25625 CAN控制嚣

mcp25625 CAN控制嚣

这个片子有中文PDF,用起来应该不是问题。下面重点说下它的寄存器

mcp25625 CAN控制嚣

左边是控制寄存器,中间是发送寄存器,右边是接收寄存器,排列的还是有规律的。由于这个片子是SPI接口的,不能轻意的寻址到任意寄存器,(相对并口接口FMC来说),好在这个片子提供了常用的几个指令,和burst访问模式,才使得可以很方便的控制片子。常用指令集如下:

mcp25625 CAN控制嚣

我的发送流程如下:

1.RRX STATUS 读状态,找到那个空的TX缓冲区,

2. LOAD TX BUFFER 加载数据到那个空的TX缓冲区。

3.RTS  启动发送。

接收CAN数据包类型。

需要注意一点的是,有时候你会这么操作,发送数在主程序中,接收数据在中断程序中,但是就一条SPI控制总线,如果正在发送数据时来中断了, 在中断中又去接收CAN,那么就会中断SPI接口的发送时序,就会有问题。

我的解决办法是发送CAN数据的时候禁止接收中断,简单粗暴、简单有效的解决了这个非常隐蔽的问题。