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

28069 SCI问题

在28069上运行官方Demo: scia_loopback_interrupts, 一切正常,其中 TXFFIL = 2, RXFFIL =2, 使用了2级深度。

28069 FIFO深度为4级,修改程序使用3级,4级深度后,接收数据都不正确, 比如,sdataA中值为0,1,2,3, 接收到的rdataA永远为最后一个字节:3,3,3,3

#define _FifoL 4
Uint16 sdataA[_FifoL];
Uint16 rdataA[_FifoL];

for(i = 0; i < _FifoL; i++)
        sdataA[i] = i;

scia_fifo_init中:

SciaRegs.SCIFFTX.all=0xC020|_FifoL;
SciaRegs.SCIFFRX.all=0x0020|_FifoL;

__interrupt void sciaTxFifoIsr(void){
        Uint16 i;
        for(i=0; i< _FifoL; i++)
                SciaRegs.SCITXBUF=sdataA[i];
        SciaRegs.SCIFFTX.bit.TXFFINTCLR=1;
        PieCtrlRegs.PIEACK.all|=0x100; 
}
__interrupt void sciaRxFifoIsr(void){
        Uint16 i;
        for(i = 0; i < _FifoL; i++)
                rdataA[i]=SciaRegs.SCIRXBUF.all;
        SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1;
        SciaRegs.SCIFFRX.bit.RXFFINTCLR=1; 
        PieCtrlRegs.PIEACK.all|=0x100;
}

其它地方都没动过,请问是什么原因? 请赐教。

Seven Han:没看出来代码有问题,您可以关闭自测模式,通过串口工具监测下发出来的数据是否正确。

在28069上运行官方Demo: scia_loopback_interrupts, 一切正常,其中 TXFFIL = 2, RXFFIL =2, 使用了2级深度。

28069 FIFO深度为4级,修改程序使用3级,4级深度后,接收数据都不正确, 比如,sdataA中值为0,1,2,3, 接收到的rdataA永远为最后一个字节:3,3,3,3

#define _FifoL 4
Uint16 sdataA[_FifoL];
Uint16 rdataA[_FifoL];

for(i = 0; i < _FifoL; i++)
        sdataA[i] = i;

scia_fifo_init中:

SciaRegs.SCIFFTX.all=0xC020|_FifoL;
SciaRegs.SCIFFRX.all=0x0020|_FifoL;

__interrupt void sciaTxFifoIsr(void){
        Uint16 i;
        for(i=0; i< _FifoL; i++)
                SciaRegs.SCITXBUF=sdataA[i];
        SciaRegs.SCIFFTX.bit.TXFFINTCLR=1;
        PieCtrlRegs.PIEACK.all|=0x100; 
}
__interrupt void sciaRxFifoIsr(void){
        Uint16 i;
        for(i = 0; i < _FifoL; i++)
                rdataA[i]=SciaRegs.SCIRXBUF.all;
        SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1;
        SciaRegs.SCIFFRX.bit.RXFFINTCLR=1; 
        PieCtrlRegs.PIEACK.all|=0x100;
}

其它地方都没动过,请问是什么原因? 请赐教。

Jingyuan Zhao:我在F28069 LanuchPad上测试也出现了相同的问题。似乎是FIFO中的数据未发送完成就进入了下一次的发送中断,在发送中断中加入延时问题解决。115200波特率下:
__interrupt void sciaTxFifoIsr(void)
{Uint16 i;for(i=0; i< fifoDepth; i++)SciaRegs.SCITXBUF=sdataA[i];// Send data
DELAY_US(300);
SciaRegs.SCIFFTX.bit.TXFFINTCLR=1;// Clear SCI Interrupt flagPieCtrlRegs.PIEACK.all|=0x100;// Issue PIE ACK
}
收发数据正常

赞(0)
未经允许不得转载:TI中文支持网 » 28069 SCI问题
分享到: 更多 (0)