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.
在已有rs485通讯(SCIC,GPIO62/63)时,增加rs232通讯(SCIA,GPIO35/36),运行时SciaRegs.SCIRXBUF出现校验错误和帧错误。
通讯的设置完全照搬rs485通讯,增加SCIA的TX和RX中断:
PieCtrlRegs.PIEIER9.bit.INTx1 = 1;
PieCtrlRegs.PIEIER9.bit.INTx2 = 1;
其中RS232接收中断函数是:
interrupt void rs232_RxIsr(void) {
volatile Uint16 temp_2;
// receive data
do {
temp_2 = SciaRegs.SCIRXBUF.all;
comm_2.comm_ctrl_2.RxBuffer[comm_2.comm_ctrl_2.cur_rec_index++] =
(unsigned char) (temp_2 & 0x00FF);
} while (SciaRegs.SCIFFRX.bit.RXFFST != 0);
rs232_rec_delay_counter = 0;
// reset rigister
SciaRegs.SCIFFRX.bit.RXFFOVRCLR = 1; // Clear Overflow flag
SciaRegs.SCIFFRX.bit.RXFFINTCLR = 1; // Clear Interrupt flag
PieCtrlRegs.PIEACK.bit.ACK9 = 1;
}
实际运行时,发现SciaRegs.SCIRXBUF中,SCIFFPE=1(parity error),SCIFFFE=1(frame error)
但是检查了设置,并没有发现设置错误。
寄存器设置:
SciaRegs.SCICCR.all = 0x0007; // 1 stop bit, no loopback
// No Parity, 8 char bits
SciaRegs.SCIHBAUD = 0x0001; // 9600 baudrate @LSPCLK=37.5MHz
SciaRegs.SCILBAUD = 0x00E7;
ModbusPoll的设置也是1停止位,无校验,8字节,波特率9600
请问,为什么会产生parity error和frame error呢?
这个和设置并没有直接的关系,
parity error,说明FIFO最顶部的数据出现奇偶校验错误;
frame error,说明FIFO最顶部的数据出现帧错误。