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.
你好,我使用的是TMS320F28027,波特率是9600,单独收发送数据均正常。现在将接收到的数据发送出来,发现发出来的数据和接收到的数据不相同,请问这种现象有哪些原因?谢谢!
楼主可以全速跑,将发送和接收到得数据放入RAM中,如连续放8个字节,然后停下来看一下,接收和发送的数据是否一样,如果不一样看接收是否正确。软件上查一些软件上是否因为其它的中断导致接收数据部正确。
想知道上电13ms时发的一帧数据,是软件上控制要发数只是发出来的数据不对,还是说这时软件上没有要发数据,是不应该出现的帧?还有就是第一组数的校验和不对,是因为多发了一帧数据,导致实际数据少发了一帧吗?能否详细介绍一些,你的软件流程?方便的话,楼主可以将最小项目附上来,我们实际分析一下。
Framing Error产生在SCI发送端发送的数据不符合接收端的要求的数据格式,然后被接收端判定为Framing Error,噪声也是导致Framing Error的一种可能。
楼主上电后,TI的28027的SCI初始化有按照TI例程的初始化步骤么?楼主是怎么确认Framing Error的?28027和其他设备,比如电脑通信电脑也无法正常接收第一帧数据吗?
上电13ms时发的一帧数据不是软件控制要发的数据,是不应该出现的数据帧!这样需要发的第一组数据的校验和有误,但软件控制发送的数据是正确的,第二组以后的数据和校验和都是正确的。
SCITX:GPIO12
SCIRX:GPIO28
程序如下
1)、SCI初始化
SciaRegs.SCICCR.all =0x0007; // 1 stop bit, No loopback
// No parity,8 char bits,
// async mode, idle-line protocol
SciaRegs.SCICTL1.all =0x0003; // enable TX, RX, internal SCICLK, Disable RX ERR, SLEEP, TXWAKE
SciaRegs.SCICTL2.bit.TXINTENA =0;
SciaRegs.SCICTL2.bit.RXBKINTENA =1;
SciaRegs.SCIHBAUD = 0x00;
SciaRegs.SCILBAUD = 0xC2;
SciaRegs.SCIFFTX.all=0xC022;
SciaRegs.SCIFFRX.all=0x0022;
SciaRegs.SCIFFCT.all=0x00;
SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
SciaRegs.SCIFFTX.bit.TXFIFOXRESET=1;
SciaRegs.SCIFFRX.bit.RXFIFORESET=1;
2)、发送模块
main()
{
..................
for(;;)
{
asm("nop");
SCI_Delay(); // 1000ms
for(i=0;i<32;i++)
{
sdataA[i] = i + 1;
}
for(SCI_NUM=0;SCI_NUM<34;SCI_NUM++) // Send Data
{
SciaRegs.SCITXBUF = sdataA[SendCount];
while(SciaRegs.SCICTL2.bit.TXRDY == 0){};
while(SciaRegs.SCICTL2.bit.TXEMPTY == 0){};
DELAY_US(500);
if(SCI_NUM < 32)
{
CheckSum = CheckSum + sdataA[SendCount];
}
else
{
sdataA[32] = CheckSum & 0x00FF;
sdataA[33] = ((CheckSum & 0xFF00) >> 8) & 0x00FF;
}
SendCount++;
if(SendCount == 34)
{
SendCount = 0;
CheckSum = 0;
}
}
SCI_SendDelay(); // 100ms
}
}
截取的上电时波形图如附件001.png,请帮忙!谢谢!
可以在初始化SCI IO和SCI 断点之后设置断点,看TXD是否有被拉低,怀疑配置完SCI以后即出现第一帧无效数据。
如果没有拉低,可以在SciaRegs.SCITXBUF = sdataA[SendCount];设断点,看程序复位到运行到这个断点之前是否有出现拉低,这样可以确定这一帧数据时在哪里产生的。
除了楼上说的。
我建议楼主再确认一下VDD上电时候的上电波形,以及楼主是怎么初始化GPIO口的,是怎么把GPIO引脚改成SCI功能的
楼主的波形图,第一个不稳定可能是芯片上电时候的不稳定,第二个标准的拉低再拉高估计是楼主初始化GPIO时候不正确导致。(我这样猜猜,具体要楼主自己确认)
楼主你好 我也在用F28027的SCI 也是中断接收和查询发送,我问题也调了好几天了,很郁闷
不知道问题出现什么地方
我要连续发送多次才能接收到,就是串口助手发送多次数据 CPU的接收缓冲区才收到正确的数据,不知道什么地方的问题
可否参照下你的