TMS320F28377D: 双28377D串口通讯问题

Part Number: TMS320F28377D

两个28377D通过串口通讯。

通讯参数配置 波特率 115200   FIFO设置为8位,采用中断方式进行通讯。当串口接收数据时发现接收首地址产生偏差。

配置代码如下:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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.
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

接收中断函数:

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
__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
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

当我发送的8个字节时

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

x 出现错误。请重试或与管理员联系。