完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
CAN总线上9个节点,8个节点向某一节点发送一帧数据(有时会出现同时发送的情况),偶尔会出现丢失一帧数据的情况。500k的波特率。总线两端也接了120欧的匹配电阻。
|
|
相关推荐
4个回答
|
|
丢失一帧是什么意思,你想接收数据的这个节点少收到了一帧?确定其他的8个节点都正确发送出去了吗?
|
|
|
|
总线上有9个节点,8个节点只能接收对应ID的数据,1个节点接收总线上其他8个节点发送的数据(假设为节点A)。当A向其他8个节点发数据时,自己还的去接收其他节点发出的数据。 通过监测,A发的向8个节点发的数据已经发出去了(对应标号为1888-1895),8个节点收到数据会向总线发送数据。而A节点接收总线上的数据。监测到8个节电的数据只收到7个节点的。不能确定8个节点是否都将数据正确发送出去。 通过can工具,单独向8个节点发送大量数据,监测显示数据都可以正常接收和发送。 |
|
|
|
碧霄长博 发表于 2017-5-17 17:32 有CAN工具的话,trace下总线上的数据,根据CAN ID来确定是哪个节点没有正确发送。或者用示波器(能解析CAN帧的示波器)把这些帧抓住,也能分析出来CAN ID,顺便看下ACK位用没有响应。 |
|
|
|
通过软件仿真和CAN工具都是可以看出是哪个节点丢失数据的。而且我在发送端仿真时,显示数据是发出去了,但总线上和接收端都没看到。发送端发送的是自己节点的ID,接收端接收任意ID的数据。
发送节点是否发送成功,正在验证中。 接收和发送程序为: 发送: u8 CAN2_Send_Msg(u8 id,u8* msg,u8 len) { u8 mbox; u16 i=0; CanTxMsg TxMessage; TxMessage.StdId=id; // ±ê×¼±êʶ·ûΪ0 // TxMessage.ExtId=0x12; // ÉèÖÃÀ©Õ¹±êʾ·û£¨29룩 TxMessage.IDE=0; // ʹÓñê×¼±êʶ·û TxMessage.RTR=0; // ÏûÏ¢ÀàÐÍΪÊý¾ÝÖ¡£¬Ò»Ö¡8λ TxMessage.DLC=len; for(i=0;i mbox= CAN_Transmit(CAN2, &TxMessage); i=0; while((CAN_TransmitStatus(CAN2, mbox)==CAN_TxStatus_Failed)&&(i<0XFFF)) i++; //µÈ´ý·¢ËͽáÊø if(i>=0XFFF)return 1; return 0; } 接收 void CAN2_RX0_IRQHandler(void) { OS_ERR err; CanRxMsg RxMessage; int i=0,j; CAN2_Recev_busy_flag=1; #if SYSTEM_SUPPORT_OS //ʹÓÃUCOS²Ù×÷ϵͳ OSIntEnter(); #endif CAN_Receive(CAN2, 0, &RxMessage); ++CAN2_Recev_counter; Can2Frame_num++; for(i=0;i receive_buf[receive_counter_buf]=RxMessage.Data[i]; receive_counter_buf++; if(RxMessage.Data[i]=='}'&&RxMessage.Data[i-1]==0x0D) { if(receive_counter_buf==16||receive_counter_buf==8) { Receive_buf[receive_cir]=RxMessage.StdId; receive_cir++; for(j=0;j Receive_buf[receive_cir]=receive_buf[j]; receive_cir++; } Cmd_numb++; CAN2_Recev_data_counter=CAN2_Recev_data_counter+1; } receive_counter_buf=0; } } CAN_FIFORelease(CAN2, 0); // CAN_ClearITPendingBit(CAN2, CAN_IT_FMP0); #if SYSTEM_SUPPORT_OS OSIntExit(); //Í˳öÖÐ¶Ï #endif CAN2_Recev_busy_flag=0; } 估计接收程序没处理好,但是又没想到更好的接收处理方式 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
590 浏览 0 评论
AI模型部署边缘设备的奇妙之旅:如何在边缘端部署OpenCV
2241 浏览 0 评论
tms320280021 adc采样波形,为什么adc采样频率上来波形就不好了?
1233 浏览 0 评论
1788 浏览 0 评论
1464 浏览 0 评论
74814 浏览 21 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 00:06 , Processed in 0.626872 second(s), Total 79, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号