两个28377D通过串口通讯。
通讯参数配置 波特率 115200 FIFO设置为8位,采用中断方式进行通讯。当串口接收数据时发现接收首地址产生偏差。
配置代码如下:
void InitSciBFIFO() { // ScibRegs.SCICCR.all = 0x0007; // 1 stop bit, No loopback // // No parity,8 char bits, // // async mode, idle-line protocol ScibRegs.SCICCR.all = 0x0087; // 1 stop bit, No loopback // No parity,8 char bits, // async mode, idle-line protocol ScibRegs.SCICTL1.all = 0x0003; // enable TX, RX, internal SCICLK, // Disable RX ERR, SLEEP, TXWAKE ScibRegs.SCICTL2.all = 0x0003; //ScibRegs.SCICTL2.bit.TXINTENA = 0; ScibRegs.SCICTL2.bit.RXBKINTENA = 1; //Enable SCIB _RX // // SCIA at 9600 baud // @LSPCLK = 50 MHz (200 MHz SYSCLK) HBAUD = 0x02 and LBAUD = 0x8B. // @LSPCLK = 30 MHz (120 MHz SYSCLK) HBAUD = 0x01 and LBAUD = 0x86. // @LSPCLK = 25 MHz (100 MHz SYSCLK) HBAUD = 0x01 and LBAUD = 0x45. ScibRegs.SCIHBAUD.all = 0x0000; // @LSPCLK = 50 MHz 115200 ScibRegs.SCILBAUD.all = 0x0036; // ScibRegs.SCIHBAUD.all = 0x0000; // @LSPCLK = 50 MHz 1M // ScibRegs.SCILBAUD.all = 0x0006; ScibRegs.SCIFFTX.bit.TXFIFORESET = 0; ScibRegs.SCIFFRX.bit.RXFIFORESET = 0; ScibRegs.SCICTL1.all = 0x0023; // Relinquish SCI from Reset // Enable SCIFIFO ScibRegs.SCIFFTX.all = 0xF040; //Disable FIFO Using 4 Enable FIFO Using 6 ScibRegs.SCIFFRX.all = 0x2068; //FIFO interupter level 8 interrupter level == 5 ScibRegs.SCIFFCT.all = 0x0; ScibRegs.SCIFFTX.bit.TXFFINTCLR = 1; //Avoid PowerUp DataTX ScibRegs.SCIFFTX.bit.TXFFIENA = 0; //Avoid PowerUp DataTX }
接收中断函数:
__interrupt void ScibRxfifo_isr(void) { volatile static Uint32 ScibInteruptimes = 0; ScibInteruptimes++; if (SCIB_Recdata.uStatus != FINISH) { while(ScibRegs.SCIFFRX.bit.RXFFST) { SCIB_Recdata.uData[SCIB_Recdata.uIndex++] = ScibRegs.SCIRXBUF.all&0xff; } //update sci recevie status and set interrupt interval. SCIB_Recdata.uStatus = WORKING; SCIB_Recdata.ticker = SCIB_Recdata.spacetime; } ScibRegs.SCIFFRX.bit.RXFFOVRCLR = 1; // Clear Overflow flag ScibRegs.SCIFFRX.bit.RXFFINTCLR = 1; // Clear Interrupt flag ScibRegs.SCIFFRX.bit.RXFIFORESET = 1; // Issue PIE ack PieCtrlRegs.PIEACK.all = PIEACK_GROUP9; // Issue PIE ACK PIEACK_GROUP9 }
当我发送的8个字节时
我在串口中断收到的数为: