RT-Thread上CAN实践

描述

开箱测试

RT-Thread官方已完成了对英飞凌XMC7200 EVK的移植,通过shell可以看到做好了uart3的console。

本文将介绍如何进行RT-Thread Can 移植。

RT-Thread

接下来我们要完成CAN_FD的驱动移植,并正常启动RT-Thread,首先参考下面的帖子搭建好开发环境:

https://club.rt-thread.org/ask/article/4e5abc98191c3747.html

接着在RT-Thread主仓中找到xmc7200的模板工程(路径:\bsp\Infineon\xmc7200-kit_xmc7200_evk)。在不改变任何参数的情况下,我们修改应用程序让三个灯循环点亮,接着进行编译和并下载程序验证。

RT-Thread

下载验证:

RT-Thread

原理图分析

RT-Thread

RT-Thread

从开发板的原理图和芯片复用手册可知,驱动CAN_FD芯片的是P0.2和P0.3两个引脚,使用CAN0通道1进行控制。另外P1.0引脚控制CAN transceiver的standby功能。

驱动移植

使用RT-Thread ENV 工具对内核进行配置,开启内核层CAN总线驱动,并重新生成KEIL MDK工程,运行scons --target=mdk5

RT-Thread

在HAL_Drivers目录下添加硬件层的can驱动代码,命名为drv_can.c drv_can.h.

RT-Thread

参考STM32的RTT HAL驱动,我们需要针对性地对各部分进行更改,仔细核对驱动API调用方法才能完成移植。由于是第一次使用英飞凌XMC系列处理器,并没有完全了解其驱动库架构和寄存器对应关系,需要进一步更改才能使用。目前实现的功能是内核驱动挂载并正常显示。

如下图所示,可查找到名为xmc_can0的设备,但是无法对其进行操作。

RT-ThreadRT-Thread

CAN测试

为了完成XMC7200 CANFD驱动评估,需要一个CAN总线分析仪。考虑到成本原因,我选择通过嘉立创开源项目拷贝一个现有方案并手工贴片完成一个简单的CAN采集器,用于测试和数据分析。选中了下面这款USB_TO_CAN tool,并进行打板,焊接,测试,下载官方的固件并进行通信验证。

RT-Thread

完成的实物和测试效果如下图:

RT-Thread

参考STM32的CAN驱动,我们移植英飞凌的CAN驱动对接到RT-Thread的

CAN框架。最终完成了一个传统CAN模式的测试框架,并提交到github上面。https://github.com/Jason0204/rtthread-xmc7200 测试效果如下:

RT-ThreadRT-Thread

XMC7200EVK 传统模式下的CANFD在RT-Thread下的运行已经完成驱动移植和部分测试。

原文链接

原文链接:https://club.rt-thread.org/ask/article/ee5a26b536d9a122.html

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分