TI中文支持网
TI专业的中文技术问题咨询交流网站

请教下F28377S SCI接收数据时发生的问题

我在使用SCI接收数据时发现一个很奇怪的问题,当我通过串口助手发送数据给DSP时,按照数据手册上介绍,例如我发送123,SCIFFRX寄存器中的RXFFST就会是3,但现实是无论我发送多长的数据,这个位都显示是1,也就是只接收一个数据。百思不得其解之时,我在接收数据时加一个延时函数(想接收到5个数据就延时5ms),就能接收到完整数据。请问下这是啥情况,谢谢!!!

代码如下:

void main(void)

{

   InitSysCtrl();

   InitGpio();

   GPIO_SetupPinMux(62,GPIO_MUX_CPU1,1);

   GPIO_SetupPinOptions(62, GPIO_INPUT, GPIO_ASYNC);

   GPIO_SetupPinMux(63, GPIO_MUX_CPU1, 1);

   GPIO_SetupPinOptions(63, GPIO_OUTPUT, GPIO_ASYNC);

   DINT;

   InitPieCtrl();

   IER = 0x0000;

   IFR = 0x0000;

   InitPieVectTable();

   InitalSCI();

   for(;;)

    {

       while(ScicRegs.SCIFFRX.bit.RXFFST == 0) {}

        SCIRxData();

   }

}

void InitalSCI()

{

    ScicRegs.SCICCR.all = 0x0007;

    ScicRegs.SCICTL1.all =0x0003;

    //ScicRegs.SCICTL2.bit.TXINTENA =1;

    //ScicRegs.SCICTL2.bit.RXBKINTENA =1;

    //9600 baud

    ScicRegs.SCIHBAUD.all =0x0002;

    ScicRegs.SCILBAUD.all =0x008B;

    ScicRegs.SCIFFTX.all=0xC020;

    ScicRegs.SCIFFRX.all=0x0022;

    ScicRegs.SCIFFCT.all=0x0;

    ScicRegs.SCICTL1.all =0x0023;

    ScicRegs.SCIFFTX.bit.TXFIFORESET=1;

    ScicRegs.SCIFFRX.bit.RXFIFORESET=1;

                                }

void SCIRxData()

{

   int i = 0;

   DELAY_US(10000);

   char RChar[10] = {0};

   do

     {

       RChar[i] = ScicRegs.SCIRXBUF.all;

       i++;

         } while(ScicRegs.SCIFFRX.bit.RXFFST != 0);

}

mangui zhang:

RXFFST应该 是标志缓存里面的字节数吧    你如果判断这个==3时再去读取

触发了就说明里面有大于等于3个字节了

我在使用SCI接收数据时发现一个很奇怪的问题,当我通过串口助手发送数据给DSP时,按照数据手册上介绍,例如我发送123,SCIFFRX寄存器中的RXFFST就会是3,但现实是无论我发送多长的数据,这个位都显示是1,也就是只接收一个数据。百思不得其解之时,我在接收数据时加一个延时函数(想接收到5个数据就延时5ms),就能接收到完整数据。请问下这是啥情况,谢谢!!!

代码如下:

void main(void)

{

   InitSysCtrl();

   InitGpio();

   GPIO_SetupPinMux(62,GPIO_MUX_CPU1,1);

   GPIO_SetupPinOptions(62, GPIO_INPUT, GPIO_ASYNC);

   GPIO_SetupPinMux(63, GPIO_MUX_CPU1, 1);

   GPIO_SetupPinOptions(63, GPIO_OUTPUT, GPIO_ASYNC);

   DINT;

   InitPieCtrl();

   IER = 0x0000;

   IFR = 0x0000;

   InitPieVectTable();

   InitalSCI();

   for(;;)

    {

       while(ScicRegs.SCIFFRX.bit.RXFFST == 0) {}

        SCIRxData();

   }

}

void InitalSCI()

{

    ScicRegs.SCICCR.all = 0x0007;

    ScicRegs.SCICTL1.all =0x0003;

    //ScicRegs.SCICTL2.bit.TXINTENA =1;

    //ScicRegs.SCICTL2.bit.RXBKINTENA =1;

    //9600 baud

    ScicRegs.SCIHBAUD.all =0x0002;

    ScicRegs.SCILBAUD.all =0x008B;

    ScicRegs.SCIFFTX.all=0xC020;

    ScicRegs.SCIFFRX.all=0x0022;

    ScicRegs.SCIFFCT.all=0x0;

    ScicRegs.SCICTL1.all =0x0023;

    ScicRegs.SCIFFTX.bit.TXFIFORESET=1;

    ScicRegs.SCIFFRX.bit.RXFIFORESET=1;

                                }

void SCIRxData()

{

   int i = 0;

   DELAY_US(10000);

   char RChar[10] = {0};

   do

     {

       RChar[i] = ScicRegs.SCIRXBUF.all;

       i++;

         } while(ScicRegs.SCIFFRX.bit.RXFFST != 0);

}

gezheng bao:

回复 Eric Ma:

Thank you very much !

赞(0)
未经允许不得转载:TI中文支持网 » 请教下F28377S SCI接收数据时发生的问题
分享到: 更多 (0)