使用FIFO模式,用中断发送数据,和中断接受数据,实现串口助手和28335的数据通信,实现目标串口助手发送固定格式的数据,28335接收到返回给串口助手。
现在出现这样的问题:
串口助手发送$M01TOS02,>TRAEND,#指令
接收缓存里面接收到的是$M01TOS02,>T 这部分,在发送一次接收到时RAEND,#$M01TOS02,>T 这部分,现在整个缓存里面的数据是$M01TOS02,>TRAEND,#$M01TOS02,>T 这样的,
请问这是什么原因造成的
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模式,用中断发送数据,和中断接受数据,实现串口助手和28335的数据通信,实现目标串口助手发送固定格式的数据,28335接收到返回给串口助手。
现在出现这样的问题:
串口助手发送$M01TOS02,>TRAEND,#指令
接收缓存里面接收到的是$M01TOS02,>T 这部分,在发送一次接收到时RAEND,#$M01TOS02,>T 这部分,现在整个缓存里面的数据是$M01TOS02,>TRAEND,#$M01TOS02,>T 这样的,
请问这是什么原因造成的
对的 就是这样的 之后每次接收的都是7个+12个的数据组合
就是修改的例程
下面是中断接收程序
interrupt void Scia_RxFifoIsr(void)
{
SciaRx_Start_Index%=Scibuff_Data_Length;
Rxa_Fifo_Buf[SciaRx_Start_Index++]=SciaRegs.SCIRXBUF.all;
SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1; // Clear Overflow flag
SciaRegs.SCIFFRX.bit.RXFFINTCLR=1; // Clear Interrupt flag
PieCtrlRegs.PIEACK.all|=0x100; // Issue PIE ack
}
初始化
void scia_fifo_init()
{
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,使能接受和发送
SciaRegs.SCICTL2.bit.TXINTENA =1;
SciaRegs.SCICTL2.bit.RXBKINTENA =1;
SciaRegs.SCIHBAUD = 0x01; //波特率高位
SciaRegs.SCILBAUD = 0xE7; //波特率地位
SciaRegs.SCIFFTX.all=0xC028;
SciaRegs.SCIFFRX.all=0x0028;
SciaRegs.SCIFFCT.all=0x00;
SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
SciaRegs.SCIFFTX.bit.TXFIFORESET=1;
SciaRegs.SCIFFRX.bit.RXFIFORESET=1;
}