主题中讨论的其他器件:HALCOGEN
您好!
我们使用的是 TMS570LS470微控制器。因为 我们正在尝试与其他开发板进行 CAN 通信。
我们面临的问题是
当 我们尝试 从 调试器更改值时、在默认情况下成功传输已初始化的第一个字节 CAN 数据后、无法传输数据、而是无法传输 CAN.c 文件中的 CANTransmit 函数 、始终以黄色突出显示的函数为单位
如何复位 TXRQx 寄存器值以实现数据的连续传输。
uint32 canTransmit (canBASE-t *节点、uint32 MessageBox、const uint8 *数据)
{
uint32 i;
uint32成功 = 0U;
uint32 regIndex =(MessageBox - 1U)>> 5U;
uint32 bitIndex = 1U <<(MessageBox - 1U)和0x1FU);
/*用户代码开始(7)*/
/*用户代码结束*/
/**-检查待处理消息:
* -待处理消息、返回0
* -无待处理消息、开始新传输
*
if ((node->TXRQx[regIndex]& bitIndex)!= 0U)
{
成功= 0U;
}
其他
{
/**-等待 IF1准备就绪可供使用*/
/*SAFETYMCUSW 28 D MR:NA "找到可能无限的循环-执行序列的硬件状态检查"*/
while ((node->IF1STAT & 0x80U)=0x80U)
{
}/*等待*/
/**-为配置 IF1
* -消息方向-写入
* -数据更新
* -开始传输
*
NOD->IF1CMD = 0x87U;
/**-将 TX 数据复制到 IF1中*/
对于(I = 0U;I < 8U;I++)
{
#if ((__little_endian__= 1)||(__little_ENDIAN__= 1)
/*SAFETYMCUSW 45 D MR:21.1 "仅此驱动程序允许有效的非 NULL 输入参数"*/
NODE->IF1DATx[i]=*数据;
/*SAFETYMCUSW 45 D MR:21.1 "仅此驱动程序允许有效的非 NULL 输入参数"*/
/*SAFETYMCUSW 567 S MR:17.1,17.4 "需要指针增量"*/
Data++;
其他
/*SAFETYMCUSW 45 D MR:21.1 "仅此驱动程序允许有效的非 NULL 输入参数"*/
NODE->IF1DATx[s_canByteOrder[i]=*数据;
/*SAFETYMCUSW 45 D MR:21.1 "仅此驱动程序允许有效的非 NULL 输入参数"*/
/*SAFETYMCUSW 567 S MR:17.1,17.4 "需要指针增量"*/
Data++;
#endif
}
/**-将 TX 数据复制到消息框中*/
/*SAFETYMCUSW 93 S MR:6.1、6.2、10.1、10.2、10.3、10.4 "LDRA 工具问题"*/
NOode->IF1NO =(uint8) MessageBox;
成功= 1U;
}
/** @请注意,必须先调用函数 canInit,然后才能使用此函数。\n
* 用户负责初始化消息框。
*
/*用户代码开始(8)*/
/*用户代码结束*/
返回成功;
}
/********* 主函数******** /
易失 性 uint8 CAN_DATA[1]={0x02};
void main()
{
caninit();
for (;;)
canTransmit (canREG1、canMESSAGE_BOX1、&CAN_DATA[0]);
}
/******** 主代码结束 /
下面是 caninit 函数设置的快照
提前感谢..

