根据你的问题描述和日志,CAN8/CAN9 自收发自测失败的核心原因是:配置文件未正确映射硬件通道。
快速排查步骤
1. 检查配置文件
CAN 通讯需要正确配置 ipcf_channel.json 文件:
cat /app/Can/can_multi_ch/config/ipcf_channel.json
CAN8 发送、CAN9 接收的正确配置应如下:
{
"enable": true,
"channels": [
{
"name": "bypass",
"hw_chan": 9,
"sw_chan": 0,
"baudrate": 500000,
"role": "receiver"
},
{
"name": "bypass",
"hw_chan": 8,
"sw_chan": 0,
"baudrate": 500000,
"role": "transmitter"
}
]
}
2. 确认跳线帽连接
从你的接线图看,需要确认:
- CAN8_TX 连接 CAN9_RX
- CAN8_RX 连接 CAN9_TX
- 跳线帽已插入对应位置(MCU 扩展板上的 CAN 回路选择跳线)
3. 正确测试命令
# 终端1:启动接收(先启动)
sudo ./canhal_get bypass
# 终端2:启动发送
sudo ./canhal_send bypass 8
4. 查看你的日志关键错误
从你上传的日志看,关键错误是:
[CANHAL][ERROR][ipcf_dev.cpp:136]:HorizonHal_IPCF_Recv of id:0 failed, ret is -11
错误码 -11 表示通道未正确初始化或配置不匹配
常见问题
- 配置文件未修改:默认配置可能不是 CAN8/CAN9 组合
- 波特率不匹配:确保收发双方波特率一致(默认 500K)
- 跳线帽位置错误:MCU 扩展板上有多个跳线选择,需确认选择的是 CAN8/9 回路
- 权限问题:确保使用
sudo运行
参考资源
- 官方文档:CAN 使用指南 | RDK DOC
- 类似案例:S100 MCU CAN 通讯打通
建议先检查配置文件内容,然后发出来,我可以帮你确认配置是否正确。