|
现在我有ABC三块板,A做主机BC做从机,AB,AC两两单独通信正常,但是一接上另一个就接收不到数据了.问问高手知道原因吗?
A机can初始化程序
CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000;
CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0;
CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;
CAN_FilterInit(&CAN_FilterInitStructure);
A机main函数里CAN的发送程序
TxMessage.StdId = 0x000;
TxMessage.ExtId = Master_ID;
TxMessage.RTR = CAN_RTR_DATA; /*!< Data frame */
TxMessage.IDE = CAN_ID_EXT;//Use Extended Id
TxMessage.DLC = 8;
TxMessage.Data[0]= Master_ID ; // ID高8位
/* Infinite loop */
while(1)
{
CAN_Transmit(CAN1,&TxMessage);
Delay(Slave_Number+6);
}
B.C机can初始化程序
CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
CAN_FilterInitStructure.CAN_FilterIdHigh = (((u32)Master_ID<<3)&0xFFFF0000)>>16;
CAN_FilterInitStructure.CAN_FilterIdLow = (((u32)Master_ID<<3)|CAN_ID_EXT|CAN_RTR_DATA)&0xFFFF;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0xFFFF;
CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0xFFFF;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0;
CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;
CAN_FilterInit(&CAN_FilterInitStructure);
B,C机main函数里CAN的发送程序
TxMessage.StdId = 0x000;
TxMessage.ExtId = Slave_ID;
TxMessage.RTR = CAN_RTR_DATA; /*!< Data frame */
TxMessage.IDE = CAN_ID_EXT;//Use Extended Id
TxMessage.DLC = 8;
/* Infinite loop */
while(1)
{
CAN_Transmit(CAN1,&TxMessage);
Delay(Slave_ID);
}
麻烦各位解答一下谢谢了! |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|