28335串口接收FIFO设为8, 现在发10个数据过来,只能收到8个,还有两个收不到,请问怎么处理
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.
楼主你好,
如果一定要用FIFO的话,F28335可以支持16级FIFO,那么简单的做法是,可以将FIFO设置为10。
如果不用FIFO的话,可以每次只接收一个字节,因此可以实现总共接收10个字节。
28035已经搞定了!
FIFO还是使用了,深度1;开辟一个数组,长度自定义;定义好结束字符;
具体代码如下:
unsigned int temp = 0;
AddrCount++;
if(AddrCount > SciBufSize)
{
AddrCount = 0; //超出数组长度,计数清零
SciBufAddr = &SciRxBuf[0]; //重新复制指针地址
}
temp = SciaRegs.SCIRXBUF.all;
(*SciBufAddr++) = temp & 0xFF; // Read data
SciRxEnd <<= 8;
SciRxEnd += (temp & 0xFF); //接收指令结尾判定用
if(SciRxEnd == SciRxEndStr) ComEnd = TRUE; //结束字符
else ComEnd = FALSE; //非结束字符
SciaRegs.SCIFFRX.bit.RXFFOVRCLR = 1; // Clear Overflow flag
SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1; // Clear Interrupt flag
PieCtrlRegs.PIEACK.all |= M_INT9; // Issue PIE ack
整个中断执行时间大概1.1us/60MHz,测试了38400波特率传输数据无丢包。
该程序适用不定长串口数据传输,不过得定义好结束字符。
以上仅供参考,不保证100%无BUG,欢迎交流(吐槽一下,TI的资料弄得没什么条理……能换换风格吗?)