Other Parts Discussed in Thread: HALCOGEN
主题中讨论的其他器件:HALCOGEN
您好!
我正在尝试创建 CAN 环回测试。 我更喜欢 CAN 内部回路。 本手册说明传输的消息被视为
接收报文 、如果通过接受过滤、则可以将其存储到报文对象中。
我的目标是通过 环回测试来测试我的代码中设置的验收滤波。 这是否可以通过内部回送测试来实现?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Other Parts Discussed in Thread: HALCOGEN
您好!
我正在尝试创建 CAN 环回测试。 我更喜欢 CAN 内部回路。 本手册说明传输的消息被视为
接收报文 、如果通过接受过滤、则可以将其存储到报文对象中。
我的目标是通过 环回测试来测试我的代码中设置的验收滤波。 这是否可以通过内部回送测试来实现?
您好、感谢您的回复。 我昨天曾尝试过这种方法、因此我写了邮件。 它似乎不起作用。 不确定我会出现什么问题。
我已使用将控制器设置为回环模式:
canEnabableeloopback (canReg1、Internal_LBK);
在 Halcogen 中、已在 Transmsit 节点中设置消息14。
我已经将掩码设置为0x00000000、ID 设置为0x119、生成了代码。
我已发送邮件至:
CAN ID - 0x120
CAN 消息框编号- 14 (与传输相同、因为它是环回模式。
和数据位。
但它似乎接受消息、我可以通过回送看到接收消息。 我希望它拒绝回送消息。
这是预期的工作方式还是我在这里做任何错误的事?
请为接收使用不同的消息框。
如果 MSK[28:0]= 0x0000000、 则报文对象的标识符不用于验收滤波、该报文框可以接收 ID 不同的报文。
例如、Msg box1发送 ID = 119的数据
MSG box3发送 ID = 121的数据
MSG box5发送 ID = 123的数据

报文框2配置为接收数据、该对象的 MSK 为0x0000。 此消息框将从消息框1、3和5接收数据。
#define D_SIZE 8
uint8 TX_Data1[D_size]={1、2、3、4、5、6、7、8};//系统 RAM 中的发送缓冲器*
uint8 TX_DATA2[D_SIZE]={11、12、13、14、15、16、17、18};//系统 RAM 中的发送缓冲区*
uint8 TX_DATA3[D_SIZE]={21、22、23、24、25、26、27、28};//系统 RAM 中的发送缓冲区*
uint8 RX_Data1[D_SIZE]={0};//系统 RAM 中的接收缓冲区
uint8 RX_DATA2[D_SIZE]={0};//系统 RAM 中的接收缓冲区
uint8 RX_DATA3[D_SIZE]={0};//系统 RAM 中的接收缓冲区
uint32 CAN_Comp_Flag = 0xAA5555;
/*用户代码结束*/
int main (空)
{
/*用户代码开始(3)*/
/*初始化 CAN 1 */
_enable_IRQ_interrupt_();
canInit();
canEnabableeloopback (canREG1、Internal_LBK);
CAN1上的/*发送*/
canTransmit (canREG1、canMESSAGE_BOX1、TX_Data1);
/*等待 DMA 中断 ISR 设置标志*/
while (CAN_Comp_Flag!= 0x5555AAAA);
/*重置标志*/
CAN_Comp_Flag = 0xAA5555;
CAN1上的/*发送*/
canTransmit (canREG1、canMESSAGE_box3、TX_DATA2);
/*等待 DMA 中断 ISR 设置标志*/
while (CAN_Comp_Flag!= 0x5555AAAA);
/*重置标志*/
CAN_Comp_Flag = 0xAA5555;
CAN1上的/*发送*/
canTransmit (canREG1、canMESSAGE_BOX5、TX_DATA3);
/*永久运行*/
while (1);
/*用户代码结束*/
返回0;
}
/*用户代码开始(4)*/
void canMessageNotification (canbase_t *节点、uint32 MessageBox)
{
CAN_Comp_Flag = 0x5555AAAA;
if (node=canREG1)
{
canGetData (canREG1、canMESSAGE_BOX2、(uint8 *)&RX_Data1[0]);/*复制到 RAM */
}
}