完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用STM32F103作为CAN从机发送和接收数据,从机是被动发送,在收到主机特定命令帧后才会发送数据,其余时候只接收:问题1:单个发送没有问题,多个CAN并在一起,其中某个会出现只能接收并未发送的情况(主机下发内容能收到,但主机无法收到该ID上的数据内容),不知道为什么会出现这样的问题?现在就想试一下,在这种情况下重新初始化CAN模块能不能恢复CAN正常通信?我的想法是通过主机告知从机,让从机自己重新初始化CAN。
问题2:如果将主机挂在总线上,存在某些从机在重新上电后无法正常启动的情况,大多数都能正常运行。 请问有遇到类似情况的人能解答下没有?欢迎探讨! 附CAN通信配置: void MX_CAN_Init(void) { CAN_FilterConfTypeDef sFilterConfig; hcan.Instance = CAN1; hcan.Init.Prescaler = 8; hcan.Init.Mode = CAN_MODE_NORMAL; hcan.Init.SJW = CAN_SJW_1TQ; hcan.Init.BS1 = CAN_BS1_15TQ; hcan.Init.BS2 = CAN_BS2_2TQ; hcan.Init.TTCM = DISABLE; // ʱ¼ä´¥·¢Ä£Ê½ hcan.Init.ABOM = DISABLE; // ×Ô¶¯ÀëÏß¹ÜÀí hcan.Init.AWUM = DISABLE; // ×Ô¶¯»½ÐÑģʽ hcan.Init.NART = DISABLE; // ·Ç×Ô¶¯ÖØ´«Ä£Ê½ hcan.Init.RFLM = DISABLE; // ½ÓÊÕFIFOËø¶¨Ä£Ê½ hcan.Init.TXFP = DISABLE; // ·¢ËÍFIFOÓÅÏȼ¶ if (HAL_CAN_Init( hcan) != HAL_OK) { Error_Handler(); } sFilterConfig.FilterNumber = 0; // sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK; sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT; sFilterConfig.FilterIdHigh = (((uint32_t)PS << 3) 0xFFFF0000) >> 16; // ¹ýÂËID¸ßλ sFilterConfig.FilterIdLow = ((uint32_t)PS << 3) | CAN_RTR_DATA | CAN_ID_EXT; // ¹ýÂËIDµÍλ sFilterConfig.FilterMaskIdHigh = 0x0000; sFilterConfig.FilterMaskIdLow = 0x00FF; // ¹ýÂ˱êʶ·ûµÍλ sFilterConfig.FilterFIFOAssignment = 0; sFilterConfig.FilterActivation = ENABLE; sFilterConfig.BankNumber = 14; if (HAL_CAN_ConfigFilter( hcan, sFilterConfig) != HAL_OK) { Error_Handler(); } } |
|
相关推荐
1个回答
|
|
问题1:出现只能接收并未发送的情况可能是由于某个CAN节点的发送缓冲区已满,导致数据无法发送出去。你可以通过检查发送完成标志位或者发送缓冲区溢出标志位来判断是否发送成功,然后决定是否重新发送。另外,如果只有一个节点发送数据,而其他节点只负责接收数据,可以考虑使用CAN的主动发送模式,这样可以高效地发送数据。
在重新初始化CAN模块之前,建议先检查发送缓冲区是否已满、是否设置了正确的波特率等。如果确实有问题导致发送失败,可以尝试重新初始化CAN模块来恢复正常通信。 问题2:某些从机在重新上电后无法正常启动的情况可能是由于从机的硬件故障或者初始化配置错误导致的。可以首先检查相关的硬件连接和电源供电是否正常。如果硬件连接和电源供电无问题,可以尝试重新初始化从机的CAN模块,包括配置寄存器和滤波器等,并确保从机的CAN初始化参数与主机保持一致。 当然,以上只是一些常见的问题和解决方法,具体情况还需要根据你的具体硬件设计和软件实现来进行分析。希望能对你有所帮助。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1574 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1519 浏览 1 评论
949 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
672 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1565 浏览 2 评论
1852浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
622浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
507浏览 3评论
512浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
494浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-14 15:28 , Processed in 0.914165 second(s), Total 83, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号