打印
[STM32U5]

【NUCLEO-U5A5ZJ-Q测评】CAN接口回环测试

[复制链接]
1609|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
一、硬件了解

在 NUCLEO-U5A5ZJ-Q 开发板上,提供了CAN接口:



在Zephy中,也正好提供了对应的支持:



在 ./boards/arm/nucleo_u5a5zj_q/nucleo_u5a5zj_q-common.dtsi 中,也有对应的定义:


这正好可以在Zephyr中,测试 NUCLEO-U5A5ZJ-Q 的CAN通信功能。

二、代码
在Zephyr中,提供了一个CAN测试的代码:samples/drivers/can/counter
如果有其他支持CAN的设备,可以将PD0、PD1连接上进行测试。
如果没有其他支持CAN的设备,也可以做回环测试。

要做回环测试,需要先配置prj.conf:
CONFIG_POLL=y
CONFIG_CAN=y
CONFIG_CAN_INIT_PRIORITY=80
CONFIG_CAN_MAX_FILTER=5

CONFIG_SHELL=y
CONFIG_CAN_SHELL=y
CONFIG_DEVICE_SHELL=y

CONFIG_GPIO=y
CONFIG_STATS=y
CONFIG_STATS_NAMES=y
CONFIG_STATS_SHELL=y
CONFIG_CAN_STATS=y

CONFIG_LOOPBACK_MODE=y
上述配置中的 CONFIG_LOOPBACK_MODE ,控制着是否开启回环测试。

在代码中,定义了两种类型的消息帧:


change_led_frame用于控制LED,counter_frame用于发送测试用的计数器数据。

在main()的数据发送部分:


每次发送切换LED消息,然后发送计数器的消息。

在代码中,负责LED切换的回调代码如下:


负责接受到计数器消息的代码如下:


三、运行测试:
编译上述代码:


然后使用pydocd烧录:
 pyocd flash --erase chip --target stm32u5a5zjtxq ./build/zephyr/zephyr.hex


烧录完成,用串口监听工具监听,具体运行后的输出信息如下:


从上述输出可以看到,已经收到了自身发出的消息。
同时,板子上的LED也会随着每一次消息的发送,而闪烁起来。


使用特权

评论回复
沙发
bestwell| | 2023-12-8 08:22 | 只看该作者
回环测试通常是将CAN发送器的TX引脚连接到CAN接收器的RX引脚?

使用特权

评论回复
板凳
hearstnorman323| | 2023-12-8 09:42 | 只看该作者
需要配置CAN的波特率、滤波器模式等参数

使用特权

评论回复
地板
zerorobert| | 2023-12-12 11:24 | 只看该作者
在回环测试中,  遇到各种错误              

使用特权

评论回复
5
HonestQiao|  楼主 | 2023-12-15 17:16 | 只看该作者
zerorobert 发表于 2023-12-12 11:24
在回环测试中,  遇到各种错误

遇到啥问题了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

37

主题

91

帖子

2

粉丝