Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
NXP 微控制器
CAN总线
NXP-MCXN947
NXP MCXN947测评之CAN
发布于 2024-04-09 11:39:02 浏览:399
订阅该版
[tocm] ## 一、前言 CAN是工业用途非常广泛的一种现场总线,CAN 是控制器局域网络 (Controller Area Network, CAN) 的简称,是由以研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。 CAN 控制器根据两根线上的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。 CAN 的连接示意图如下图所示: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240409/49d3b4b67f3337fc4b899a6750c98ad7.png) 详细的介绍可以参考RTThread文档中心:[CAN 简介](https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/can/can "CAN 简介") ## 二、配置项修改 如果是基于Keil进行开发,则需要使用ENV工具。下载安装好后,在项目所在文件夹右键即可进入项目配置页面。 在此之前,对于CAN模块,需要首先在如下文件中添加使能CAN模块配置项: \rt-thread-master\bsp\nxp\mcx\mcxn\frdm-mcxn947\board\Kconfig ```c menuconfig BSP_USING_CAN bool "Enable CAN" default n select RT_USING_CAN if BSP_USING_CAN config BSP_USING_CAN0 bool "Enable CAN0" default y config BSP_USING_CAN1 bool "Enable CAN1" default n endif ``` 之后打开ENV环境: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240409/6dd25ff4728dab976ddb607fd89fb158.png.webp) 开启使用CAN外设的开关: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240409/bcc8616c3716b6ab7ec6d25b9dd20337.png.webp) 接下来选择使用CAN0: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240409/9a33097717cdc3ce3db14b394ddd575f.png.webp) 点击保存,退出: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240409/c601c666d809bf5deb37e6fe7a3af83e.png) 生成Keil工程: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240409/53a8af02b2fdbe95c1a6f288c21a576b.png) ## 三、添加代码 添加can driver: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240409/eb403e9729bdfaf104c3a53a66c3999a.png) 参考:CAN 设备使用示例 https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/device/can/can?id=can-设备使用示例 根据FlexCAN的电路图: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240409/1970d6bc093bebfdf6e23c2238feda75.png.webp) 修改pin_mux.c ```c #ifdef BSP_USING_CAN0 PORT1->PCR[11] = PORT_PCR_MUX(11) | PORT_PCR_PS(0) | PORT_PCR_PE(1) | PORT_PCR_IBE(1); /* CAN0 RX */ PORT1->PCR[10] = PORT_PCR_MUX(11) | PORT_PCR_PS(0) | PORT_PCR_PE(1) | PORT_PCR_IBE(1); /* CAN0 TX */ #endif #ifdef BSP_USING_CAN1 PORT4->PCR[15] = PORT_PCR_MUX(11) | PORT_PCR_PS(0) | PORT_PCR_PE(1) | PORT_PCR_IBE(1); /* CAN1 RX*/ PORT4->PCR[16] = PORT_PCR_MUX(11) | PORT_PCR_PS(0) | PORT_PCR_PE(1) | PORT_PCR_IBE(1); /* CAN1 TX*/ #endif ``` ## 四、编译烧录 编译遇到错误: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240409/c943eb7be02edb25ac332e4f741ed8f0.png) 修改为: ```c /* hdr 值为 - 1,表示直接从 uselist 链表读取数据 */ rxmsg.hdr_index = -1; ``` 重新编译,下载: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240409/2f044083cefcf0e9961894e75ecd00e1.png.webp) 关于控制台输入输出,参考根据Reference Manual: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240409/4ed9143a87a4c9d5a52b5d23f7ca5c77.png.webp) 检查pin_mux.c里面P1_8与P1_9: ```c /* UART */ PORT1->PCR[8] = PORT_PCR_MUX(2) | PORT_PCR_PS(0) | PORT_PCR_IBE(1); /* FC4_P0 */ PORT1->PCR[9] = PORT_PCR_MUX(2) | PORT_PCR_PS(0) | PORT_PCR_IBE(1); /* FC4_P1 */ ``` ## 程序运行: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240409/2b7cfcba523dabf4a841d345f2d874cb.png) msh> can_sample 回车,可以看到CAN上位机接受到一帧CAN报文: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240409/cfd8879ed1fbc57257b423864431ae22.png.webp) 在上位机选择定时发送,5s发送一帧: ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240409/ea49d4689b0dea17dfc4fd3cc328da2e.png.webp) 至此,CAN的收发测试完毕。 代码: [nxp.zip](https://club.rt-thread.org/file_download/025db40490f2f336) 视频: [FRDM-MCXN947-CAN.mp4](https://club.rt-thread.org/file_download/716b3de02206fa28) ## 心得体会: 这次是第一次使用RTThread,对ENV工具还不是很熟悉,好在RTThread非常方便进行移植,网上分享的资料也十分丰富,所以是一次很不错的体验。接下来想好好学习一个FinSH和RTT的内核。
2
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
eekid
这家伙很懒,什么也没写!
文章
1
回答
0
被采纳
0
关注TA
发私信
相关文章
1
试贴-消灭0主题
2
LPC M4的一些资料
3
LPC4088的临时分支
4
lpc1788 ad 不稳定
5
1788 LCD控制器缓冲区字节问题
6
一起来学习LPC4088吧
7
上传LPC4088的realtouch主工程
8
RealBoard 4088预定帖 [第一批板子不多,预定提前结束]
9
晒RealBoard LPC4088开箱照啦,速带小板凳前来围观
10
4088主程序需要的SD卡资源
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
Debug
中断
编译报错
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
20
个答案
3
次被采纳
红枫
8
个答案
2
次被采纳
踩姑娘的小蘑菇
7
个答案
2
次被采纳
三世执戟
7
个答案
1
次被采纳
张世争
6
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
12
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部