329_S32K144 CAN波特率修改

完整的S32K144的学习汇总如下:

https://github.com/GreyZhang/g_s32k144

    继续S32K144的学习,今天做一个简单一些的尝试,修改CAN的波特率。看了前面的CAN的简单实现,我感觉这个应该很容易。

    常见的CAN的波特率配置有三种,250K、500K以及1000K。在使用的时候,一般分别对应的场景需求有J1939、UDS以及BootLoader等。还有不挑波特率的XCP。

    今天尝试实现的波特率就包含这几种,配置的方式还是采用SDK的方式。为此,在配置中增加三种配置方式:

329_S32K144 CAN波特率修改_第1张图片

    其中,波特率相关的配置做一定的修改。分别按照上面的形式修改,250K参考如下:

329_S32K144 CAN波特率修改_第2张图片

    这个SDK的方便还在于,波特率的计算是自动的。只需要输入一个目标的波特率即可,相应的数据配置会自动完成。这个,实现方式是通过CAN驱动中的一个波特率的计算函数。如果简单的使用,可以不需要对此有深入的了解。

    有一点值得一说,那就是CAN的采样率有一点区别。在波特率设置为1000K的时候,采样率不再是87.5%。

    为了测试,我通过串口进行CAN的波特率的修改切换激发。串口接收到1的时候,波特率设置为250K,2对应500K,3对应1000K。

    设计的相关代码如下:

329_S32K144 CAN波特率修改_第3张图片

    原本我的软件中带有一个周期性的发送,现在通过CAN分析仪分别测试三种状态的波特率下是否CAN报文发出,都能够观察到报文的发出。但是,从我测试的效果看,发现了必须设置2次才能够成功的现象。即使是进行反初始化也没有取得一次切换成功的效果,具体的原因还没去追查。另外,最初的版本出现了切换后无法发出CAN报文的情况,追查下发现是出现了阻塞。接触阻塞之后,报文发送正常。

    今天的这次学习不算是很成功,但是也看到了相应的变化现象。如果是运用到工程中,或许还得有很多需要注意的细节。

    最近的工作中有很多让我感觉无奈的情况,回家后做一点简单的开发类练手倒成了我舒缓自己压力的一种手段。其实,我觉得这种方式也很好,短暂缓解焦虑的同时还稍微有一点点收获。不过,今天确实是又晚睡了一个半小时。加上白天的咖啡,不知道我今晚是否还会有香甜的睡眠。

    咖啡是程序员的好伙伴,但却不是我们健康的好伙伴。在此,祝愿看到我学习笔记的人能够享受咖啡且不让其成为我们身体的负担。希望大家收获知识,作出产品的同时也都健健康康!

完整的S32K144的学习汇总如下:

https://github.com/GreyZhang/g_s32k144

你可能感兴趣的:(S32K,嵌入式,CAN)