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

[复制链接]
2105|4
 楼主| HonestQiao 发表于 2023-12-3 14:20 | 显示全部楼层 |阅读模式
一、硬件了解

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


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


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

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

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

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

  5. CONFIG_SHELL=y
  6. CONFIG_CAN_SHELL=y
  7. CONFIG_DEVICE_SHELL=y

  8. CONFIG_GPIO=y
  9. CONFIG_STATS=y
  10. CONFIG_STATS_NAMES=y
  11. CONFIG_STATS_SHELL=y
  12. CONFIG_CAN_STATS=y

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

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

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

在main()的数据发送部分:
2492656c1c98a50e6.png

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

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

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

三、运行测试:
编译上述代码:
52266656c1d927ebe9.png

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


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

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


bestwell 发表于 2023-12-8 08:22 | 显示全部楼层
回环测试通常是将CAN发送器的TX引脚连接到CAN接收器的RX引脚?
hearstnorman323 发表于 2023-12-8 09:42 | 显示全部楼层
需要配置CAN的波特率、滤波器模式等参数
zerorobert 发表于 2023-12-12 11:24 | 显示全部楼层
在回环测试中,  遇到各种错误              
 楼主| HonestQiao 发表于 2023-12-15 17:16 | 显示全部楼层
zerorobert 发表于 2023-12-12 11:24
在回环测试中,  遇到各种错误

遇到啥问题了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

115

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部