大家好、
客户有一些问题需要您的帮助:
使用 SCI 执行简单的发送和接收控制、作为从站、通过一个数组将数据返回到上部位置的机器(ComMonitor)。 将发送任务函数置于定时器0中、将定时器周期设置为10ms、正常发送和接收消息、始终接受和发送数据。 但是、定时器设置为1ms、返回和发送信息完全不同。 SCI 的时钟频率是默认 LSPCLK 设置。 这个问题是否与定时器周期相关?
此外、可以使用5ms 和50ms、但错误会大量弹出、请参阅指示缺少停止位的错误标志。 它也发生在1ms、更奇怪的是 、1ms 接收和发送的数据不一致(基本上是错误的)、并且在5ms 时偶尔也不正确。
此外、通过 SWRESET 复位错误标志位是否会对后续通信产生影响。
发送的函数代码:
void scitx_a(void)
{
int i = 0;
for(i=0;i<RXD_iSciA;i++)
{
SciaRegs.SCITXBUF = tdata[i];
while(0==SciaRegs.SCICTL2.bit.TXEMPTY); //TEXMPTY :0 SCITXBUF or TXSHF contain data
}
RXD_iSciA = 0;
SCIA_TX_L; //发送禁止
SCIA_RX_H;
}
void SCI_work(void)
{
int i = 0;
for(i=0;i<RXD_iSciA;i++)
{
tdata[i]=rdata[i];
}
SCIA_RX_L;
SCIA_TX_H; //发送使能
}
在 Timer0中:
interrupt void TIM0_IRQn(void)
{
LED_work(&LED_count);
SCI_work();
scitx_a();
// SCIA_RX_H;
PieCtrlRegs.PIEACK.bit.ACK1 = 1;
}
您可以帮助检查此案例吗?
谢谢、此致、
本