TI中文支持网
TI专业的中文技术问题搜集分享网站

F28335 串口通讯丢失数据

F28335的配置代码如下

void SCIControlInit()
{SciaRegs.SCICCR.all = 0x0007; //1个停止位、无奇偶校验、无Loop模式、空闲线模式、8位数据ScibRegs.SCICCR.all = 0x0007; //1个停止位、无奇偶校验、无Loop模式、空闲线模式、8位数据ScicRegs.SCICCR.all = 0x0007; //1个停止位、无奇偶校验、无Loop模式、空闲线模式、8位数据SciaRegs.SCICTL1.all = 0x0003; //接收中断错误禁用、发送器唤醒禁用、休眠禁用、发送器使能、接收器使能ScibRegs.SCICTL1.all = 0x0003; //接收中断错误禁用、发送器唤醒禁用、休眠禁用、发送器使能、接收器使能ScicRegs.SCICTL1.all = 0x0003; //接收中断错误禁用、发送器唤醒禁用、休眠禁用、发送器使能、接收器使能SciaRegs.SCIHBAUD = 0x0028; //SCIA:115200波特率,实际11433波特率SciaRegs.SCILBAUD = 0x0000;ScibRegs.SCIHBAUD = 0x0001; //SCIB:9600波特率ScibRegs.SCILBAUD = 0x00E7;ScicRegs.SCIHBAUD = 0x0001; //SCIC:9600波特率ScicRegs.SCILBAUD = 0x00E7;SciaRegs.SCICTL1.bit.SWRESET = 1;//复位ScibRegs.SCICTL1.bit.SWRESET = 1;//复位ScicRegs.SCICTL1.bit.SWRESET = 1;//复位SciaRegs.SCIPRI.bit.SOFT = 1;SciaRegs.SCIPRI.bit.FREE = 1;ScibRegs.SCIPRI.bit.SOFT = 1;ScibRegs.SCIPRI.bit.FREE = 1;ScicRegs.SCIPRI.bit.SOFT = 1;ScicRegs.SCIPRI.bit.FREE = 1;//SciXRegs.SCIRXST.all = 0x0000;//接收状态标志位

}

在使用Scib与PC机进行串口调试时,用的代码如下:

ScibSendEnable();//发送使能for(j=0;j<7;j++){while (ScibRegs.SCICTL2.bit.TXRDY != 1) { }//等待发送缓存清空ScibRegs.SCITXBUF = BBitReadTX[j];//BBitReadTX 为unsigned char 类型字符数组}ScibReceiveEnable();//接收使能

如果单步调试,PC机能收到正确的数据。但连续执行时,PC总是只收到5个Byte的数据(理应是7个)。

这是什么原因呢?是不是相SCITXBUF中写数据时,应该加延时哇?

这个程序无需用到FIFO。

user1569241:

换了2个串口调试助手都是一样的,怀疑是28335这边的问题。

Green Deng:

回复 user1569241:

额,非常感谢你的反馈!

赞(0)
未经允许不得转载:TI中文支持网 » F28335 串口通讯丢失数据
分享到: 更多 (0)