两个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个字节时

我在串口中断收到的数为:



