完善资料让更多小伙伴认识你,还能领取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没收到。不知咋回事? |
|
|
|
你好,我也面临了相同的问题。不知道您最后解决了没有。挖出了您这么久之前的帖子,真不好意思!
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
298 浏览 1 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
309 浏览 0 评论
826 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1911 浏览 2 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1427 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12032 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 08:58 , Processed in 0.580754 second(s), Total 76, Slave 59 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号