完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
本人使用英飞凌的xc886单片机,此单片机内含muliCAN模块。请教下:can发送报文能连续发多个报文吗(非FIFO模式,就是一帧一帧的发)?因为我写了个例子:发送方:用报文1、2、3发送数据;接收方:用报文1、2、3接收,结果只有报文1收到数据,另两个没收到(报文ID,优先级按列表顺序,)。
发送方: 部分主程序 CAN_vLoadData(1,MO1); CAN_vLoadData(2,MO2); CAN_vLoadData(3,MO3); CAN_vTransmit(1); 部分中断程序 switch(sucCanNum) { case 0: CAN_vTransmit(2); sucCanNum++; Tr_flag++; break; case 1: CAN_vTransmit(3); sucCanNum++; Tr_flag++; break; case 2: sucCanNum++; Tr_flag++; break; } 接收方 部分中断程序 switch(sucCanNum) { case 0: CAN_vWriteCANAddress(CAN_MODATAL1); CAN_vReadEN(); MO1L.ubDB[3]=CAN_DATA0; MO1L.ubDB[2]=CAN_DATA1; MO1L.ubDB[1]=CAN_DATA2; MO1L.ubDB[0]=CAN_DATA3; CAN_ADCON = ADR_INC; CAN_vReadEN(); MO1H.ubDB[3]=CAN_DATA0; MO1H.ubDB[2]=CAN_DATA1; MO1H.ubDB[1]=CAN_DATA2; MO1H.ubDB[0]=CAN_DATA3; sucCanNum++; CAN_vWriteCANAddress(CAN_MOCTR1); CAN_vWriteAMData(0x000000A0); // 清零MSGVAL break; case 1: CAN_vWriteCANAddress(CAN_MODATAL2); CAN_vReadEN(); MO2L.ubDB[3]=CAN_DATA0; MO2L.ubDB[2]=CAN_DATA1; MO2L.ubDB[1]=CAN_DATA2; MO2L.ubDB[0]=CAN_DATA3; CAN_ADCON = ADR_INC; CAN_vReadEN(); MO2H.ubDB[3]=CAN_DATA0; MO2H.ubDB[2]=CAN_DATA1; MO2H.ubDB[1]=CAN_DATA2; MO2H.ubDB[0]=CAN_DATA3; sucCanNum++; CAN_vWriteCANAddress(CAN_MOCTR2); CAN_vWriteAMData(0x00000020); // 清零MSGVAL break; case 2: CAN_vWriteCANAddress(CAN_MODATAL3); CAN_vReadEN(); MO3L.ubDB[3]=CAN_DATA0; MO3L.ubDB[2]=CAN_DATA1; MO3L.ubDB[1]=CAN_DATA2; MO3L.ubDB[0]=CAN_DATA3; CAN_ADCON = ADR_INC; CAN_vReadEN(); MO3H.ubDB[3]=CAN_DATA0; MO3H.ubDB[2]=CAN_DATA1; MO3H.ubDB[1]=CAN_DATA2; MO3H.ubDB[0]=CAN_DATA3; sucCanNum=0; break; } |
|
相关推荐
3个回答
|
|
首先 CAN发送和串口发送有些地是相似的,发送都需要时间。
发送你用的是几个ID,我看不出来。但是你用了3个邮箱。也是可以的。发送不同的ID用同一个邮箱也是可以的。发送前先初始化邮箱。 对于接收,你这样写是有问题的。 应该是这样,接收一般只有一个邮箱就可以了。 中断接收,然后判断接收的ID,并提取数据区。 应该这样 中断服务irq { CAN_vReadEN(); MO1H.ubDB[3]=CAN_DATA0; MO1H.ubDB[2]=CAN_DATA1; MO1H.ubDB[1]=CAN_DATA2; MO1H.ubDB[0]=CAN_DATA3; 然后判断接收的ID。 } |
|
|
|
3q!其实我用的是3个报文发送,3个报文的ID是一样的。接收也是3个报文,ID也一样。其实我开始想法是:发送方用报文1.报文2,报文3发3帧数据,然后接收方对应地用报文1,报文2,报文3接收。结果按上面写后,只有接收方报文1收到了发送方报文1的数据,报文2、3没收到。不知咋回事? |
|
|
|
你好,我也面临了相同的问题。不知道您最后解决了没有。挖出了您这么久之前的帖子,真不好意思!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
【RA-Eco-RA2E1-48PIN-V1.0开发板试用】(第三篇)ADC采集+PWM输出
515 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十五章 人脸识别实验
515 浏览 0 评论
780 浏览 0 评论
如何用OpenCV的相机捕捉视频进行人脸检测--基于米尔NXP i.MX93开发板
1360 浏览 0 评论
《DNK210使用指南 -CanMV版 V1.0》第四十章 YOLO2人手检测实验
572 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11757 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 00:30 , Processed in 0.435981 second(s), Total 45, Slave 39 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号