TI中文支持网
TI专业的中文技术问题搜集分享网站

28377S SCIC模块不正常工作

调试28377的通信模块,使用scib发送数据,scia和scic接收数据。接收数据使用中断模式,scia可以接收到正确数据,scic接收数据会发生帧格式错误(读取scic的SCIRXBUF.all寄存器的数值是-32768)。scia和scic的模块配置完全一样,请问是怎么回事?需要怎么调整?

//
// Defines
//
#define SCIC_CPU_FREQ 200E6
#define SCIC_LSPCLK_FREQ SCIC_CPU_FREQ/4
#define SCIC_SCI_FREQ 192E2
#define SCIC_SCI_PRD (SCIC_LSPCLK_FREQ/(SCIC_SCI_FREQ*8))-1

void scic_init()
{
uint16_t BRR = SCIC_SCI_PRD;
ScicRegs.SCICCR.all = 0x0007; // 1 stop bit, No loopback
// No parity,8 char bits,
// async mode, idle-line protocol
ScicRegs.SCICTL1.all = 0x0003; // enable TX, RX, internal SCICLK,
// Disable RX ERR, SLEEP, TXWAKE
ScicRegs.SCICTL2.bit.TXINTENA = 0;
ScicRegs.SCICTL2.bit.RXBKINTENA = 1;
ScicRegs.SCIHBAUD.all = (uint8_t)(BRR >> 8);
ScicRegs.SCILBAUD.all = (uint8_t)(BRR >> 0);

ScicRegs.SCICCR.bit.LOOPBKENA = 0; // Enable loop back
ScicRegs.SCIFFTX.all = 0xC020;
ScicRegs.SCIFFRX.all = 0x0020;
ScicRegs.SCIFFCT.all = 0x00;

ScicRegs.SCICTL1.all = 0x0023; // Relinquish SCI from Reset
ScicRegs.SCIFFTX.bit.TXFIFORESET = 1;
ScicRegs.SCIFFRX.bit.RXFIFORESET = 1;
}

//
// scicTxFifoIsr – SCIC Transmit FIFO ISR
//
interrupt void scicTxFifoIsr(void)
{
if(comm.txpos < comm.txlen)
{
ScicRegs.SCITXBUF.all = comm.txbuf[comm.txpos++];
}
else
{
while(ScicRegs.SCICTL2.bit.TXEMPTY == 0);
ScicRegs.SCICTL1.bit.TXENA = 0;
ScicRegs.SCICTL1.bit.RXENA = 1;
ScicRegs.SCICTL2.bit.TXINTENA = 0;
ScicRegs.SCICTL2.bit.RXBKINTENA = 1;
comm.txpos = 0;
comm.txlen = 0;
}

ScicRegs.SCIFFTX.bit.TXFFINTCLR = 1; // Clear SCI Interrupt flag
PieCtrlRegs.PIEACK.all |= 0x080; // Issue PIE ACK
}

//
// scicRxFifoIsr – SCIC Receive FIFO ISR
//
interrupt void scicRxFifoIsr(void)
{
sFifoIn(&fifo, (uint8_t)(ScicRegs.SCIRXBUF.all));

ScicRegs.SCIFFRX.bit.RXFFOVRCLR = 1; // Clear Overflow flag
ScicRegs.SCIFFRX.bit.RXFFINTCLR = 1; // Clear Interrupt flag

PieCtrlRegs.PIEACK.all |= 0x080; // Issue PIE ack
}
以上是SCIC的配置初始化函数和中断函数,请教哪里有问题,该怎么解决?

Susan Yang:

单从这段代码没有发现问题。若是可以的话,请您私信一下工程,谢谢

另外您使用的是TI的开发板(若是,请给出型号)?

,

keliang yao:

你好,使用的不是TI官方的开发板

还是公司自己设计的电源控制板,附件是SCI测试程序,麻烦看看是否有啥问题,谢谢!

TMS320F28377S_uCOSII_SCIC.rar

,

Susan Yang:

抱歉,手边没有377S的板子,但是您可以尝试使用自己的板子和程序来debug一下

请检查一下 SCIRXST 该寄存器内的标志值,看是哪一位置位

www.ti.com/…/spruhx5g.pdf

18.14.2.6 SCIRXST Register

您可以尝试使用类似下面的代码监视错误标志并重新初始化SCI寄存器。如:

if(((SciaRegs.SCIRXST.bit.RXERROR == 1)||(SciaRegs.SCIRXST.bit.FE == 1)){

…….}

赞(0)
未经允许不得转载:TI中文支持网 » 28377S SCIC模块不正常工作
分享到: 更多 (0)