完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
例程中使用了IfxMultican_Can_MsgObj_initConfig这个函数,里面设置了int型的messageId ,只能接收messageId的报文。我看到有acceptanceMask这个参数,但既然设置了Id,mask并没办法起作用啊请问大佬们该怎么配置目前用的是TC297的板子,不过不同板子原理应该差不多。
|
|
相关推荐
1个回答
|
|
在TC297中,可以使用acceptanceMask参数来配置接收多个id的CAN报文。acceptanceMask参数表示匹配接收的报文id的位掩码,只有与mask中的位相匹配的报文才会被接收。
接口函数IfxMultican_Can_MsgObj_initConfig的原型如下: void IfxMultican_Can_MsgObj_initConfig(IfxMultican_Can_MsgObjConfig *config, IfxMultican_Can_Node *node); 其中IfxMultican_Can_MsgObjConfig结构体定义如下: typedef struct { IfxCAN_MsgObjId id; /**< brief Message object Id */ uint32 acceptanceMask; /**< brief Mask for identifier acceptance filtering */ uint32 acceptanceId; /**< brief Message object IDE and Identifier */ IfxMultican_IdleState control; /**< brief Message object configuration - Use to define the expected status of pins if the CAN module is in its inactive state */ IfxMultican_Frame frame; /**< brief CAN frame type */ IfxMultican_IdleState idleState; /**< brief Expected CAN bus state in idle */ IfxMultican_FrameCounterControl frameCntl; /**< brief Frame Counter Control */ IfxMultican_BitSamplePointControlbitSampling bitSampling; /**< brief bit Sampling technique */ IfxMultican_BitSamplePointControl samplePoint; /**< brief Sample Point */ IfxMultican_DataLengthCode dataLengthCode; /**< brief Message object Data length code */ IfxMultican_ExtendedFrameId extendedFrameId; /**< brief Message object extended frame */ IfxMultican_RxMsgProcessControl rxControl; /**< brief Receive message process control */ IfxMultican_TxMsgProcessControl txControl; /**< brief transmit message process control */ IfxMultican_Exte } IfxMultican_Can_MsgObjConfig; 你可以设置acceptanceMask参数为一个非零值,只有接收到的报文id与acceptanceMask进行与运算后的结果等于acceptanceId才会被接收。示例代码如下: ```c IfxMultican_Can_MsgObjConfig msgObjConfig; IfxMultican_Can_MsgObj_initConfig(&msgObjConfig, &canNode); msgObjConfig.id = messageId; // 设置报文id msgObjConfig.acceptanceMask = mask; // 设置mask,用于接收多个id msgObjConfig.acceptanceId = messageId; // 设置接收id IfxMultican_Can_MsgObj_init(&msgObj, &msgObjConfig); // 初始化消息对象 ``` 需要注意的是,以上代码只会接收通过acceptanceMask和acceptanceId指定的报文id,如果要接收多个id,需要配置不同的消息对象,然后分别设置不同的acceptanceId和acceptanceMask。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
飞凌嵌入式ElfBoard EL 1板卡-i2c与从设备通讯编程示例之i2c-tools工具使用
1226 浏览 0 评论
stc15f2k60s2利用串口传输字模存储到eeprom并进行点阵显示
1453 浏览 1 评论
1457 浏览 0 评论
615 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-串口通讯编程示例之串口编写程序
1283 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11602 浏览 31 评论
浏览过的版块 |
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-4 12:14 , Processed in 0.580572 second(s), Total 76, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号