
你好:使用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依然无法正常工作(当然,移植可能有些疏漏,网络部分也没有正常工作)。 希望得到您的帮助,谢谢。 HighCloud 2023-9-7 如果需要代码,我会将相关代码作为附件发送 |
STM32F103C8出現找不到'STM32100B_EVAL/stm32100b_eval.h' file not found
关于三轴陀螺仪 I3G4250D
STM32的DCode bus是连接到bus matrix的吗?参考手册描述和图片是不符吗?
stm32f407无法配置定时器2为全部dma
使用stm32F407连接PHY芯片进行以太网通讯,一插网线就会进入错误中断。
STM32H7双核调试问题:CM7能成功调试但CM4始终报"Failed to read ROM table via AP 3"错误
STM32F103TBU6 封装是VFQFPN36 将PD0和PD1配置成CAN不成功是什么原因
stm32G474的flash模式如何判定?single bank 和dual bank
串口DMA + 空闲中断收发 ?
F103RCT6芯片对AFIO->MAPR寄存器写入时出错
1. 在发送数据前,对比CAN 配置寄存器是否正确,包括时钟部分。
2. 看看数据是否正确的传递改发送邮箱,因为邮箱后是硬件自动发送的。
看看CAN的正常执行是否有被改变。
听上去像是栈的size没有重新设置。
楼主配置一下,看看是不是stack溢出了
你不妨调整下堆栈大小,再就是看看CAN使用到的内存数据是否可能被以太网内存动态分配时跟CAN所用内存冲突了。这个恐怕真要看看代码了。
CAN_MCR before init LWIP: 0x00010084 CAN_MSR before init LWIP: 0x00000C08
CAN_MCR after init LWIP: 0x00010084 CAN_MSR after init LWIP: 0x00000008
CAN_MCR before send with LWIP: 0x00010084 CAN_MSR before send with LWIP: 0x00000008
难道LWIP改变了CAN_MSR?这看起来不应该啊。
感谢大家,特别是butterflyspring,我检查了寄存器,发现可能是LWIP改变了寄存器。现在我把
MX_CAN_Init();放在LWIP_INIT();之后,看起来,一切都正常了。但是,问题的根源并没有得到解决。