参考F28035的工程实例,调试CAN发送的程序,但是遇到一些问题,请教一下各位:
//使能MAILBOX0
ECanaShadow.CANME.all = ECanaRegs.CANME.all;
ECanaShadow.CANME.bit.ME0 = 1;
ECanaRegs.CANME.all = ECanaShadow.CANME.all;
// MAILBOX0作为发送邮箱
ECanaShadow.CANMD.all = ECanaRegs.CANMD.all;
ECanaShadow.CANMD.bit.MD20 = 0;
ECanaRegs.CANMD.all = ECanaShadow.CANMD.all;
// 发送邮箱MAILBOX的ID设置
ECanaMboxes.MBOX0.MSGID.all = 0x18FF2010;
// MAILBOX0的数据长度设置
ECanaMboxes.MBOX0.MSGCTRL.bit.DLC = 8;
// MAILBOX0数据域写入
ECanaMboxes.MBOX0.MDL.all = 0x9555AAA0;
ECanaMboxes.MBOX0.MDH.all = 0x89ABCDEF;
// Begin transmitting
for(;;)
{
ECanaShadow.CANTRS.all = 0;
ECanaShadow.CANTRS.bit.TRS0 = 1;
// Set TRS for mailbox under test
ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;
do { ECanaShadow.CANTA.all = ECanaRegs.CANTA.all; }
while(ECanaShadow.CANTA.bit.TA0 == 0 ); // Wait for TA5 bit to be set..
ECanaShadow.CANTA.all = 0;
ECanaShadow.CANTA.bit.TA0 = 1; // Clear TA5
ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;
}
可是利用CAN-USB的转接工具(确定是好的),始终监视不到发送的数据,
论坛查询是需要另外一个CAN节点需要返回传输确认信号(请问是否是这样??)
如果是需要返回确认信号,那么另外一个节点配置成接收邮箱就可以了??
(还是不用配置,直接由CAN收发器(比如SN65HVD230)自动发出确认信号的???)
貌似没找到专门配置确认信号的地方?
BIN YAO1:
ECanaShadow.CANMD.bit.MD20 = 0;你这里配置的是20通道的发送,而不是0通道的。请确认是否已将0通道配置为发送通道。
参考F28035的工程实例,调试CAN发送的程序,但是遇到一些问题,请教一下各位:
//使能MAILBOX0
ECanaShadow.CANME.all = ECanaRegs.CANME.all;
ECanaShadow.CANME.bit.ME0 = 1;
ECanaRegs.CANME.all = ECanaShadow.CANME.all;
// MAILBOX0作为发送邮箱
ECanaShadow.CANMD.all = ECanaRegs.CANMD.all;
ECanaShadow.CANMD.bit.MD20 = 0;
ECanaRegs.CANMD.all = ECanaShadow.CANMD.all;
// 发送邮箱MAILBOX的ID设置
ECanaMboxes.MBOX0.MSGID.all = 0x18FF2010;
// MAILBOX0的数据长度设置
ECanaMboxes.MBOX0.MSGCTRL.bit.DLC = 8;
// MAILBOX0数据域写入
ECanaMboxes.MBOX0.MDL.all = 0x9555AAA0;
ECanaMboxes.MBOX0.MDH.all = 0x89ABCDEF;
// Begin transmitting
for(;;)
{
ECanaShadow.CANTRS.all = 0;
ECanaShadow.CANTRS.bit.TRS0 = 1;
// Set TRS for mailbox under test
ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;
do { ECanaShadow.CANTA.all = ECanaRegs.CANTA.all; }
while(ECanaShadow.CANTA.bit.TA0 == 0 ); // Wait for TA5 bit to be set..
ECanaShadow.CANTA.all = 0;
ECanaShadow.CANTA.bit.TA0 = 1; // Clear TA5
ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;
}
可是利用CAN-USB的转接工具(确定是好的),始终监视不到发送的数据,
论坛查询是需要另外一个CAN节点需要返回传输确认信号(请问是否是这样??)
如果是需要返回确认信号,那么另外一个节点配置成接收邮箱就可以了??
(还是不用配置,直接由CAN收发器(比如SN65HVD230)自动发出确认信号的???)
貌似没找到专门配置确认信号的地方?
MicroE:
回复 BIN YAO1:
即使修改成0通道为发送,CAN-USB监控也没反应!
参考F28035的工程实例,调试CAN发送的程序,但是遇到一些问题,请教一下各位:
//使能MAILBOX0
ECanaShadow.CANME.all = ECanaRegs.CANME.all;
ECanaShadow.CANME.bit.ME0 = 1;
ECanaRegs.CANME.all = ECanaShadow.CANME.all;
// MAILBOX0作为发送邮箱
ECanaShadow.CANMD.all = ECanaRegs.CANMD.all;
ECanaShadow.CANMD.bit.MD20 = 0;
ECanaRegs.CANMD.all = ECanaShadow.CANMD.all;
// 发送邮箱MAILBOX的ID设置
ECanaMboxes.MBOX0.MSGID.all = 0x18FF2010;
// MAILBOX0的数据长度设置
ECanaMboxes.MBOX0.MSGCTRL.bit.DLC = 8;
// MAILBOX0数据域写入
ECanaMboxes.MBOX0.MDL.all = 0x9555AAA0;
ECanaMboxes.MBOX0.MDH.all = 0x89ABCDEF;
// Begin transmitting
for(;;)
{
ECanaShadow.CANTRS.all = 0;
ECanaShadow.CANTRS.bit.TRS0 = 1;
// Set TRS for mailbox under test
ECanaRegs.CANTRS.all = ECanaShadow.CANTRS.all;
do { ECanaShadow.CANTA.all = ECanaRegs.CANTA.all; }
while(ECanaShadow.CANTA.bit.TA0 == 0 ); // Wait for TA5 bit to be set..
ECanaShadow.CANTA.all = 0;
ECanaShadow.CANTA.bit.TA0 = 1; // Clear TA5
ECanaRegs.CANTA.all = ECanaShadow.CANTA.all;
}
可是利用CAN-USB的转接工具(确定是好的),始终监视不到发送的数据,
论坛查询是需要另外一个CAN节点需要返回传输确认信号(请问是否是这样??)
如果是需要返回确认信号,那么另外一个节点配置成接收邮箱就可以了??
(还是不用配置,直接由CAN收发器(比如SN65HVD230)自动发出确认信号的???)
貌似没找到专门配置确认信号的地方?
BIN YAO1:
回复 MicroE:
在配置CAN通道MSGID的时候要保证通道处于关闭状态,即ME为0.而你在配置时是先开了通道,再配置的MSGID。你观察下,运行后通道的MSGID是否为你配置的内容。