首先F2812的eCAN模块是配置在eCAN增强模式,11位标识符。
我想使能多个邮箱接收,每个邮箱接收不同的的标识符
比如邮箱31我接收标识符为1XX XXXX XXXX
邮箱30我接收标识符为10XX XXXX XXXX
邮箱29我接收标识符为11XX XXXX XXXX
//LAMI ECanaLAMRegs.LAM31.bit.LAMI = 1; ECanaLAMRegs.LAM30.bit.LAMI = 1; ECanaLAMRegs.LAM29.bit.LAMI = 1; ECanaLAMRegs.LAM31.bit.LAM_H = 0x1000; ECanaLAMRegs.LAM30.bit.LAM_H = 0x1800; ECanaLAMRegs.LAM31.bit.LAM_H = 0x1800;
(X为无关项)
有关接受滤波的话,CAN2USB会设置两处,一处是掩码,表明标识符的某些位是有关项(即必须符合相应数字),有些位这是无关项(可以不符合)。
这样的话LAM寄存器的设置应该就是掩码,那么过滤码在哪里设置?
然后有关手册,本地接受屏蔽CANLAM 20.1(英2.20.1)一节,”进入的消息被存储在具有匹配标识符的编号最高的邮箱中。“这个是什么含义?
ming zhao1:
您好,打扰您一下,我是初学者,我刚刚写了一个发送和接收的ecan程序(分别,见附件), A DSP发送,B DSP 接收。
然后我是把发送的烧写进了A板。问题:在烧写的过程中,出现了一个警告:对于.const那一行,no matching,
B板用仿真器进行观察寄存器里的值(没有烧,但Flash里已经有了以前固化的程序,具体是什么我清楚),然后load program到板子里,开始run,在接收邮箱前设置的有断点,然后我就分别把高、低16位装入观察窗口,发现里面已经有值了,这也太奇怪了吧,can的双绞线还没有连接怎么会有值呢,而且一断开,再一连接,值还是那个值。
太奇怪了,由于是初学者,不知道哪里出了问题,所以想请教您一下,耽误您的宝贵时间了。我怀疑是我的程序有问题,但就是不知道问题出在哪里?
请教您一下,帮忙看看,谢谢,不胜感激!
祝您,工作顺利!
首先F2812的eCAN模块是配置在eCAN增强模式,11位标识符。
我想使能多个邮箱接收,每个邮箱接收不同的的标识符
比如邮箱31我接收标识符为1XX XXXX XXXX
邮箱30我接收标识符为10XX XXXX XXXX
邮箱29我接收标识符为11XX XXXX XXXX
//LAMI ECanaLAMRegs.LAM31.bit.LAMI = 1; ECanaLAMRegs.LAM30.bit.LAMI = 1; ECanaLAMRegs.LAM29.bit.LAMI = 1; ECanaLAMRegs.LAM31.bit.LAM_H = 0x1000; ECanaLAMRegs.LAM30.bit.LAM_H = 0x1800; ECanaLAMRegs.LAM31.bit.LAM_H = 0x1800;
(X为无关项)
有关接受滤波的话,CAN2USB会设置两处,一处是掩码,表明标识符的某些位是有关项(即必须符合相应数字),有些位这是无关项(可以不符合)。
这样的话LAM寄存器的设置应该就是掩码,那么过滤码在哪里设置?
然后有关手册,本地接受屏蔽CANLAM 20.1(英2.20.1)一节,”进入的消息被存储在具有匹配标识符的编号最高的邮箱中。“这个是什么含义?
ming zhao1:
我的邮箱是:1083176055@qq.com,期待您的回信。非常感谢!