问题在“F28027串口FIFO收发中断问题”有描述。
报错:寄存器SCIRXST-RX ERROR 1,寄存器SCIRXBUF-SCIFFFE/SCIFFPE 1
按一下复位按钮,接收就正常了。这是啥情况哦??有兄弟碰到过没有?
串口初始化代码:
void InitSci(void)
{
// Initialize SCI-A:
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,
// Disable RX ERR, SLEEP, TXWAKE
// Disable RXRDY/BRKDT/TXRDY interrupt
SciaRegs.SCICTL2.bit.TXINTENA = 0;
SciaRegs.SCICTL2.bit.RXBKINTENA = 0;
SciaRegs.SCIHBAUD = 0x0000;
SciaRegs.SCILBAUD = SCI_PRD; // 38400
// FIFO enable configure
SciaRegs.SCIFFTX.all = 0xC020;
SciaRegs.SCIFFRX.all = 0x0021;
// Disable FIFO interrupt
SciaRegs.SCIFFTX.bit.TXFFIENA = 0;
SciaRegs.SCIFFRX.bit.RXFFIENA = 0;
SciaRegs.SCIFFCT.all = 0x00;
SciaRegs.SCICTL1.bit.SWRESET = 1; // Relinquish SCI from Reset
SciaRegs.SCIFFTX.bit.TXFIFOXRESET = 1;
SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;
}
dirtwillfly:
有没有可能是上电复位电路有问题?
问题在“F28027串口FIFO收发中断问题”有描述。
报错:寄存器SCIRXST-RX ERROR 1,寄存器SCIRXBUF-SCIFFFE/SCIFFPE 1
按一下复位按钮,接收就正常了。这是啥情况哦??有兄弟碰到过没有?
串口初始化代码:
void InitSci(void)
{
// Initialize SCI-A:
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,
// Disable RX ERR, SLEEP, TXWAKE
// Disable RXRDY/BRKDT/TXRDY interrupt
SciaRegs.SCICTL2.bit.TXINTENA = 0;
SciaRegs.SCICTL2.bit.RXBKINTENA = 0;
SciaRegs.SCIHBAUD = 0x0000;
SciaRegs.SCILBAUD = SCI_PRD; // 38400
// FIFO enable configure
SciaRegs.SCIFFTX.all = 0xC020;
SciaRegs.SCIFFRX.all = 0x0021;
// Disable FIFO interrupt
SciaRegs.SCIFFTX.bit.TXFFIENA = 0;
SciaRegs.SCIFFRX.bit.RXFFIENA = 0;
SciaRegs.SCIFFCT.all = 0x00;
SciaRegs.SCICTL1.bit.SWRESET = 1; // Relinquish SCI from Reset
SciaRegs.SCIFFTX.bit.TXFIFOXRESET = 1;
SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;
}
user3832255:
回复 dirtwillfly:
不能完全排除,但是可能性还是比较小。
原因有2:
1、上电复位后,除了串口接收寄存器错误外,发送正常,其他程序暂时没有发现问题。
2、用的是C2000 Launchpad开发板,从TI官方买的。
所以,暂时没有去怀疑复位电路,谢谢!
问题在“F28027串口FIFO收发中断问题”有描述。
报错:寄存器SCIRXST-RX ERROR 1,寄存器SCIRXBUF-SCIFFFE/SCIFFPE 1
按一下复位按钮,接收就正常了。这是啥情况哦??有兄弟碰到过没有?
串口初始化代码:
void InitSci(void)
{
// Initialize SCI-A:
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,
// Disable RX ERR, SLEEP, TXWAKE
// Disable RXRDY/BRKDT/TXRDY interrupt
SciaRegs.SCICTL2.bit.TXINTENA = 0;
SciaRegs.SCICTL2.bit.RXBKINTENA = 0;
SciaRegs.SCIHBAUD = 0x0000;
SciaRegs.SCILBAUD = SCI_PRD; // 38400
// FIFO enable configure
SciaRegs.SCIFFTX.all = 0xC020;
SciaRegs.SCIFFRX.all = 0x0021;
// Disable FIFO interrupt
SciaRegs.SCIFFTX.bit.TXFFIENA = 0;
SciaRegs.SCIFFRX.bit.RXFFIENA = 0;
SciaRegs.SCIFFCT.all = 0x00;
SciaRegs.SCICTL1.bit.SWRESET = 1; // Relinquish SCI from Reset
SciaRegs.SCIFFTX.bit.TXFIFOXRESET = 1;
SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;
}
Eric Ma:
回复 user3832255:
elkite,
建议你直接检测一下芯片的接收引脚,应该会有一个电平的波动,有可能是xds100芯片导致的。
可以在上电后清除一下串口接收缓存。
Eric
问题在“F28027串口FIFO收发中断问题”有描述。
报错:寄存器SCIRXST-RX ERROR 1,寄存器SCIRXBUF-SCIFFFE/SCIFFPE 1
按一下复位按钮,接收就正常了。这是啥情况哦??有兄弟碰到过没有?
串口初始化代码:
void InitSci(void)
{
// Initialize SCI-A:
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,
// Disable RX ERR, SLEEP, TXWAKE
// Disable RXRDY/BRKDT/TXRDY interrupt
SciaRegs.SCICTL2.bit.TXINTENA = 0;
SciaRegs.SCICTL2.bit.RXBKINTENA = 0;
SciaRegs.SCIHBAUD = 0x0000;
SciaRegs.SCILBAUD = SCI_PRD; // 38400
// FIFO enable configure
SciaRegs.SCIFFTX.all = 0xC020;
SciaRegs.SCIFFRX.all = 0x0021;
// Disable FIFO interrupt
SciaRegs.SCIFFTX.bit.TXFFIENA = 0;
SciaRegs.SCIFFRX.bit.RXFFIENA = 0;
SciaRegs.SCIFFCT.all = 0x00;
SciaRegs.SCICTL1.bit.SWRESET = 1; // Relinquish SCI from Reset
SciaRegs.SCIFFTX.bit.TXFIFOXRESET = 1;
SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;
}
user3832255:
回复 Eric Ma:
清除一下串口接收缓存,清哪个寄存器,请Eric Ma 明示。。
28027看了一下,好像没有专门清接收缓存的寄存器。
问题在“F28027串口FIFO收发中断问题”有描述。
报错:寄存器SCIRXST-RX ERROR 1,寄存器SCIRXBUF-SCIFFFE/SCIFFPE 1
按一下复位按钮,接收就正常了。这是啥情况哦??有兄弟碰到过没有?
串口初始化代码:
void InitSci(void)
{
// Initialize SCI-A:
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,
// Disable RX ERR, SLEEP, TXWAKE
// Disable RXRDY/BRKDT/TXRDY interrupt
SciaRegs.SCICTL2.bit.TXINTENA = 0;
SciaRegs.SCICTL2.bit.RXBKINTENA = 0;
SciaRegs.SCIHBAUD = 0x0000;
SciaRegs.SCILBAUD = SCI_PRD; // 38400
// FIFO enable configure
SciaRegs.SCIFFTX.all = 0xC020;
SciaRegs.SCIFFRX.all = 0x0021;
// Disable FIFO interrupt
SciaRegs.SCIFFTX.bit.TXFFIENA = 0;
SciaRegs.SCIFFRX.bit.RXFFIENA = 0;
SciaRegs.SCIFFCT.all = 0x00;
SciaRegs.SCICTL1.bit.SWRESET = 1; // Relinquish SCI from Reset
SciaRegs.SCIFFTX.bit.TXFIFOXRESET = 1;
SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;
}
Eric Ma:
回复 user3832255:
elkite,
有没有测一下上电的时候 rx引脚有没有干扰呢?
可以在初始完后先读取接收寄存器,就是清缓冲区了。
Eric
问题在“F28027串口FIFO收发中断问题”有描述。
报错:寄存器SCIRXST-RX ERROR 1,寄存器SCIRXBUF-SCIFFFE/SCIFFPE 1
按一下复位按钮,接收就正常了。这是啥情况哦??有兄弟碰到过没有?
串口初始化代码:
void InitSci(void)
{
// Initialize SCI-A:
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,
// Disable RX ERR, SLEEP, TXWAKE
// Disable RXRDY/BRKDT/TXRDY interrupt
SciaRegs.SCICTL2.bit.TXINTENA = 0;
SciaRegs.SCICTL2.bit.RXBKINTENA = 0;
SciaRegs.SCIHBAUD = 0x0000;
SciaRegs.SCILBAUD = SCI_PRD; // 38400
// FIFO enable configure
SciaRegs.SCIFFTX.all = 0xC020;
SciaRegs.SCIFFRX.all = 0x0021;
// Disable FIFO interrupt
SciaRegs.SCIFFTX.bit.TXFFIENA = 0;
SciaRegs.SCIFFRX.bit.RXFFIENA = 0;
SciaRegs.SCIFFCT.all = 0x00;
SciaRegs.SCICTL1.bit.SWRESET = 1; // Relinquish SCI from Reset
SciaRegs.SCIFFTX.bit.TXFIFOXRESET = 1;
SciaRegs.SCIFFRX.bit.RXFIFORESET = 1;
}
user3832255:
回复 Eric Ma:
手头暂时没有示波器,没有测。
初始化完后,读一下接收寄存器,接收还是报错。
tmp = (UINT8)SciaRegs.SCIRXBUF.bit.RXDT;
改成:
for(i=0;i<4;i++)
{
tmp = (UINT8)SciaRegs.SCIRXBUF.bit.RXDT;
}
还是不行。
把3个寄存器发上来后发现:
SciA.p_sen[0] = (UINT8)SciaRegs.SCIRXBUF.bit.RXDT; SciA.p_sen[1] = (UINT8)SciaRegs.SCIRXBUF.bit.SCIFFPE; SciA.p_sen[2] = (UINT8)SciaRegs.SCIRXBUF.bit.SCIFFPE; SciA.p_sen[3] = (UINT8)SciaRegs.SCIRXST.bit.RXERROR;
0x6F,0x01,0x01,0x01