28335 can接收邮箱如何读取发送邮箱ID号

[复制链接]
226|5
 楼主 | 2019-3-11 18:45 | 显示全部楼层 ||阅读模式
本人遇到一个问题:在can网络中实现一个收件箱接收多个发送邮箱发送的信息。通过读取发送邮箱的ID号来识别是哪个邮箱发送的信息。收件箱可以通过过滤实现接收多个发件箱的数据,但我没找到收件箱读取发送邮箱ID的寄存器,不知道该如何实现接收邮箱读取发送邮箱ID号?希望广大网友可以提供方法,最好有例程。本人在ti官网没找到相关方法。谢谢!
| 2019-3-12 09:56 | 显示全部楼层
好的啊! 可以的啊!

使用道具

评论回复
| 2019-3-12 15:41 | 显示全部楼层
可以仔细查阅一下手册、说明文档之类的资料

使用道具

评论回复
| 2019-4-24 16:40 | 显示全部楼层
MSGID of a rcv MBX is transmitted as the MDL data

使用道具

评论回复
| 2019-4-24 16:46 | 显示全部楼层
    // Write to the mailbox RAM field of MBOX0 - 15
    ECanaMboxes.MBOX0.MDL.all = 0x9555AAA0;
    ECanaMboxes.MBOX0.MDH.all = 0x89ABCDEF;

    ECanaMboxes.MBOX1.MDL.all = 0x9555AAA1;
    ECanaMboxes.MBOX1.MDH.all = 0x89ABCDEF;

    ECanaMboxes.MBOX2.MDL.all = 0x9555AAA2;
    ECanaMboxes.MBOX2.MDH.all = 0x89ABCDEF;

    ECanaMboxes.MBOX3.MDL.all = 0x9555AAA3;
    ECanaMboxes.MBOX3.MDH.all = 0x89ABCDEF;

    ECanaMboxes.MBOX4.MDL.all = 0x9555AAA4;
    ECanaMboxes.MBOX4.MDH.all = 0x89ABCDEF;

    ECanaMboxes.MBOX5.MDL.all = 0x9555AAA5;
    ECanaMboxes.MBOX5.MDH.all = 0x89ABCDEF;

    ECanaMboxes.MBOX6.MDL.all = 0x9555AAA6;
    ECanaMboxes.MBOX6.MDH.all = 0x89ABCDEF;

    ECanaMboxes.MBOX7.MDL.all = 0x9555AAA7;
    ECanaMboxes.MBOX7.MDH.all = 0x89ABCDEF;

    ECanaMboxes.MBOX8.MDL.all = 0x9555AAA8;
    ECanaMboxes.MBOX8.MDH.all = 0x89ABCDEF;

    ECanaMboxes.MBOX9.MDL.all = 0x9555AAA9;
    ECanaMboxes.MBOX9.MDH.all = 0x89ABCDEF;

    ECanaMboxes.MBOX10.MDL.all = 0x9555AAAA;
    ECanaMboxes.MBOX10.MDH.all = 0x89ABCDEF;

    ECanaMboxes.MBOX11.MDL.all = 0x9555AAAB;
    ECanaMboxes.MBOX11.MDH.all = 0x89ABCDEF;

    ECanaMboxes.MBOX12.MDL.all = 0x9555AAAC;
    ECanaMboxes.MBOX12.MDH.all = 0x89ABCDEF;

    ECanaMboxes.MBOX13.MDL.all = 0x9555AAAD;
    ECanaMboxes.MBOX13.MDH.all = 0x89ABCDEF;

    ECanaMboxes.MBOX14.MDL.all = 0x9555AAAE;
    ECanaMboxes.MBOX14.MDH.all = 0x89ABCDEF;

    ECanaMboxes.MBOX15.MDL.all = 0x9555AAAF;
    ECanaMboxes.MBOX15.MDH.all = 0x89ABCDEF;
// This function reads out the contents of the indicated
// by the Mailbox number (MBXnbr).
void mailbox_read(int16 MBXnbr)
{
   volatile struct MBOX *Mailbox;
   Mailbox = &ECanaMboxes.MBOX0 + MBXnbr;
   TestMbox1 = Mailbox->MDL.all; // = 0x9555AAAn (n is the MBX number)
   TestMbox2 = Mailbox->MDH.all; // = 0x89ABCDEF (a constant)
   TestMbox3 = Mailbox->MSGID.all;// = 0x9555AAAn (n is the MBX number)
} // MSGID of a rcv MBX is transmitted as the MDL data.
我觉得读MDL的data就能知道是哪个发送邮箱的ID了  希望对你有点帮助

使用道具

评论回复
| 2019-4-25 12:52 | 显示全部楼层
感觉楼主还没搞清楚CAN的基本工作方式。
CAN的每个消息有个ID,在总线上是广播出去的,谁都可以收,至于你处不处理,就要用到接收屏蔽过滤码了。
你可以配置屏蔽过滤只检查ID的高25位符合,ID的低3位不管,那么低3位从0~7的消息就都可以发到这个邮箱了。接收到数据后再根据ID低3位判断是那个主机发送的。

使用道具

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

快速回复 返回顶部 返回列表