1.FRDM-MCXA156 板卡介绍
图1连接图
该板卡具有丰富的外设,基于NXP MCXA156微控制器(MCU)的设计和评估平台,一款面向工业和消费物联网(IoT)应用的低功耗微控制器。它配备了一个运行速度最高可达96 MHz的Arm Cortex-M33内核。而且为了调试MCXA156 MCU,FRDM-MCXA156开发板使用了一个板载(OB)调试探针,即MCU-Link OB,它基于另一款NXP MCU:LPC55S69。对于面向工业和消费物联网(IoT)应用,选择该款低功耗微控制器是再合适不过了。
2.MCXA156之CAN外设
这次评测的是FlexCAN外设。FlexCAN是一种通信控制器,它根据ISO 11898-1:2015标准和CAN 2.0 Part B协议规范实现了CAN协议。CAN协议最初主要被设计为车辆串行数据总线,以满足车辆电磁干扰(EMI)环境中特定的实时处理和可靠运行要求。FlexCAN是CAN协议规范、灵活数据速率CAN(CAN FD)协议以及CAN 2.0 Part B协议的完整实现。它支持标准和扩展消息帧以及长有效载荷。关于该外设的详细介绍可参考MCXA156 RM参考手册。如链接。
3.硬件电路
参考板卡的原理图,是自带CAN IC TJA1057的,这方面的测试应用就直接使用外部CAN测试卡连接即可。如图3所示:
图3 CAN原理图
4.开发环境
本次测试主要使用官方的bsp,毕竟官方框架都给搭好了,直接使用就可以了。开发环境为ENV和Keil5。
5.步骤说明
5.1 添加源码
在使用bsp之前需要,需要在board/Kconfig 中增加使能CAN外设的代码,这样在env 的界面中才能出现。如下所示:
关于这部分的编写,可以参考官方文档,这里是参考其他外设配置编写的。
5.2 ENV配置
在bsp中打开ENV环境,右键选择ConEmu here,打开ENV界面如图4所示:
图4
输入menuconfig 指令,出现选项列表,如图5所示:
图5
选择RT-Thread Components—->,找到Device Drivers—->,选择Enable CAN如图6所示:
图6
退到主菜单,选择Hardware Drivers Config—->,选择On-chip Peripheral Drivers—->,选择Enable CAN,如图7所示
图7
该板卡使用的是CAN0,选择Enable CAN0即可。
这些配置完,退出菜单,在主界面中重新生成keil project,使用scons —target=mdk5,如图8所示:
图8
这样配置完就可以进入程序了。
5.3 程序运行
打开项目文件,需要添加drv_can 驱动文件,右键项目名称,选择manage project items…,选择Drivers,增加文件即可,如图9所示:
图9
在main.c主函数中添加代码,可参考官方示例代码,这里需要注意,本板卡使用的外设是CAN0,代码如下:
参考如链接所示:
https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/can/can
编译无错误,Debug程序。打开CAN配套的测试软件,选择好接口和波特率。打开串口终端,如图10所示:
图10
开始运行程序,在串口终端msh中输入can_sample,可以看到在CAN终端会接收到一帧数据。如图11所示:
图11
在CAN终端发送一帧数据后,在串口终端可以接收到一帧数据,如图12所示:
图12
CAN的收发基本功能测试完成。
5.4 出现的问题
在打开串口终端软件的时候,输入指令时,出现溢出,如图13所示:
图13
在这里需要在rtconfig.h中将idle任务值改大一点,如图14所示:
图14
5.5 心得体会
通过这次RTT和FRDM-MCXA156共同学习,让自己对RTT又有了新的认识,对自己以后在项目中使用RTT有很大帮助,收获匪浅。这次外设测试也仅是开始,抽时间要更进一步学习,应用。
6.资料汇总
6.1 源码分享
frdm-mcxa156.zip
将这部分源码解压缩后,替换掉bsp->nxp->mcx->mcxa里面的同名文件就可以正常调试了。
drv_can是用哪个文件
bsp里自带的can文件,可以搜到。@CYFS