打印
[KungFu32位 MCU]

KF32A136使用记录之CAN模块

[复制链接]
1604|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-8-1 09:14 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

     

这个芯片CAN模块怎么用?

          答:用还能咋用,又不能吃,把总线上的数据想象成水流,你来使用这个模块生成你和你的接收的人都能理解的水流,那你咋处理嘞,由于咱的can实际上是单线连接,别人也不知道在什么时候采样水流,比如大水流是1,小水流是0,如果你一直是大水冲下去,谁知道你是一个1一直发还是很多个1连续发,所以咱就得先说好,在多少个时间范围里去采样水流的大小,这就是常说的波特率(通过CAN_BRGR寄存器配置),然后在博世公司的CAN2.0B标准中有拓展和标准格式CANID,这个CANID就是用来很多人都想发消息的时候,谁先谁后的问题。

          但是TX和RX是哪两个脚去发消息你总得和CPU说好吧,那就得配置相应的管脚成复用数字功能,再打开它们的外设使能,让它们能干活,好这个搞定了,接着配置CAN吧,先进入复位状态把CAN外设时钟打开(为什么会有外设时钟这玩意要打开呢,咋不能一直开着呢,因为外设太多咱不能都开,那浪费电,土豪随意),中断打开。

        再进入到这款CAN的特色,在RAM中专门用1K的地方给你装了51个邮箱,你总不能不配置一下吧,不然重要邮件都丢了血亏!再设置设置全局掩码寄存器,啥叫全局掩码呢,就是前面提到的CANID,我不可能所有邮件都收吧(CAN发消息属于广播,只要在其中就能收到消息),这时候咱先设置一下门槛,只有符合的才要,粗略收一下,然后还可以为每一个单独的邮箱设置掩码,比如说这个邮箱装工作邮件,那个邮箱生活邮件,再来个私密邮件等等。

        当进行到这的时候,CAN就设置好了,就像windows电脑开机了!

        然后就是咋收邮件了,如果有人在CAN总线上发广播了,哎咱自动收,前面不是配置好,收什么邮件并且放哪了吗,如果匹配对了,那就存进来,这个简单。

        再就是发邮件了,首先是啥时候发,当 ARBSTA0 == 1且 TXR == 1的时候就可以发了,然后就是谁发,这么多邮箱都要发咋办,得选一个吧,这个过程叫仲裁,谁优先级高谁先,然后把TXR清零代表,我发完了,如果想占着一直发就不清零,发完再清就行。

        之后就是一些错误处理了,先这样吧。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/m0_70995226/article/details/130406480

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1747

主题

15155

帖子

10

粉丝