mcp25625 CAN控制嚣

41 篇文章 1 订阅

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

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

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

我的发送流程如下:

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

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

3.RTS  启动发送。

接收CAN数据包类型。

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

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

     看了韦老师的最新的linux中断处理过程,意识到这种处理方式太落后了, 最先进的处理方法是 中断只置标志,具体在线程中处理, 如果CAN数据的收发操作都在线程中处理的话,就不会出现CAN收数据与发数据相互嵌套了。 有时间了就按最先进的中断处理理念、思想来处理。!!!!  (在中断中收数据太浪费了!

MCP25625中文手册https://download.csdn.net/download/wandersky0822/13098565

突然发现这个片子集成完整的CAN控制器与CAN收发器,我只用了CAN控制器,外挂了一个CAN收发器,太浪费了

详细研究发现MCP2510 MCP2525  MCP25625内部寄存器一模一样,我说我的代码里面一会2515 一会25625呢

发现一个知识点,MCP2515 MCP2510 MCP25625这几个芯片应该是有相似之处的,我手里的MCP25625驱动里面用的都是MCP2510的寄存器定义,但函数名双叫MCP2515(),经过我详细观察这几个片子的手册,发现这3种版本寄存器定义是一样的, MCP2515是MCP2510的升级版本,MCP25625在我看来就是MCP2515上集成了一个can收发器,但是我没有找到官方的确认。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 9
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值