Arce 发表于 2021-7-7 12:57:08

436_PIC18F4580 CAN模块初步

         全部学习汇总: https://github.com/GreyZhang/PIC18F
         先看一下我手中这个MCU的管脚定义:

         看上去,管脚功能相对来说比较单一。

         结合上面的文档信息,RB2可以在模式设置的时候自动处理掉,而RB3则必须要进行功能配置。

         以上是管脚配置的一些说明。因此,我自己修改代码的时候采用了上面的配置:

         本来还想在原来的代码基础上做一下调整修改,后来考虑到都是ECAN模块,或许这个跟MCP2515基本上是一致的。对比了文档发现果真是相似的,这就是一个很好的兆头了。为什呢?因为我刚刚用过MCP2515,基于Arduino的平台。虽然,之前的驱动是C++写的,但是稍作修改就能够在这里用上。最为关键的一部分就是波特率的配置,肯定是有用的。接下来,设计代码如下:


         其实,大致的框架就是来自于Arduino相关的一些开源项目针对MCP2515设计的驱动。修改之后,沿用部分之前的例子的测试代码:

         原来的代码会发送上面play那一串数字,当然,这里我还改了一个延时函数,因为之前没有注意到这里有一个溢出。正好前面把常用的数据类型整理了一下,这里正好用上。这个IDE的警告信息查看真的不算是很方便,不是很好用。

         上面保留了原来的测试框架,同时,把LED灯闪烁给修复掉了。简单起见,直接拷贝了积分延时,其实现在我这里的延时直接填充一个数值也不会超限了。懒得去修改了,下次,先看测试效果。

         嗯,CAN报文发送出来了。值得一说的是,这个板子还有一个终端电阻的陷阱。必须得整上终端电阻,否则是没有报文的。搞得我最后这一步都去抓了波形,好在我设备齐全。接下来,该稍微调整一下了。这次例程分析有点多了,接下来,先梳理一下MCU的资源看看这个片子的资源和性能。

  
文档来源:51CTO技术博客https://blog.51cto.com/greyzhang/2993363
页: [1]
查看完整版本: 436_PIC18F4580 CAN模块初步