STM32
直播中

梅利号

8年用户 1491经验值
擅长:可编程逻辑
私信 关注
[问答]

使用STM32F103R8T6+ENC28J60+LWIP作网络通讯,CAN发送失败了怎么解决?

你好:使用STM32F103R8T6+ENC28J60+LWIP作网络通讯,现在遇到一个问题:使用CUDE建立的MDK工程,在调试网络部分之前,CAN收发正常。在移植完LWIP 2.1.3之后,网络正常DHCP、TCP、UDP都没有问题,但是,CAN发送却失败了(用测试仪不能接收到数据)。
通过排查,发现当注释掉LWIP初始化代码的mem_init()函数之后,CAN发送就正常了,但是,LWIP肯定就无法正常工作。
有没有可能HAL的CAN通讯,与LWIP有内存方面的冲突?
MDK版本5.38,CUDEMX是最新版本。我试过把STM32F107+LWIP,通过CUDE生成的代码中的LWIP和middle ware 部分移植过去,CAN依然无法正常工作(当然,移植可能有些疏漏,网络部分也没有正常工作)。

回帖(1)

王建华

2024-3-13 15:03:20
CAN 通讯的代码相对来说不多,可以尝试从这里调试找问题:
1. 在发送数据前,对比CAN 配置寄存器是否正确,包括时钟部分。
2. 看看数据是否正确的传递改发送邮箱,因为邮箱后是硬件自动发送的。

看看CAN的正常执行是否有被改变。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分