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

关于28335,SCI通信使用地址位唤醒异常

    描述:28335,SCI使用地址位唤醒,使能睡眠位。发送的数据,不管校验类型(mark,space,无),在接收中断中,RXWAKE均会置位为1,进入地址判断。按照正常逻辑只有mark校验才能唤醒RXWAKE,之后读取数据RXWAKE复位,Sleep置0以后,RXWAKE就不会为1了。另外,同样配置在28035中使用正常。如有遇到相同问题,望多多指教,非常感谢!

SCI配置代码:

    ScibRegs.SCICCR.all     = 0x0f;     //SCICHAR_LENGTH_8,  Address-bit mode protocol selected

    ScibRegs.SCICTL1.all    = 0x0007;          // enable TX, RX, SLEEP // Disable RX ERR, TXWAKE

    ScibRegs.SCIHBAUD       = (((Uint32)SciB_PRD >> 8));
    ScibRegs.SCILBAUD       = (((Uint32)SciB_PRD & 0x00FF));// 115200 baud @LSPCLK = 37.5MHz.
    ScibRegs.SCICTL2.bit.TXINTENA =1;//
    ScibRegs.SCICTL2.bit.RXBKINTENA = 1;
    //ScibRegs.SCICCR.bit.LOOPBKENA =1; // Enable loop back
    ScibRegs.SCIFFTX.all = 0xC040;             //SCI Reset,SCIFFENA,TXFFINTFLAG CLEAR//C040
    ScibRegs.SCIFFRX.all = 0x0061;              //RXFIFO Reset,SCIFFENA,TXFFINTFLAG CLEAR//0061
    ScibRegs.SCIFFCT.all = 0x00;
    ScibRegs.SCICTL1.all = 0x0027;              // Relinquish SCI from Reset
    ScibRegs.SCIFFTX.bit.TXFIFOXRESET = 1;
    ScibRegs.SCIFFRX.bit.RXFIFORESET = 1;

mangui zhang:28335接受步骤:1)在接受地址块时,SCI端口唤醒并申请中断(RX/BK INT ENA位申请中断),读取地址快的第一帧,该帧包含目的处理器的地址

  2)通过中断检测接受的地址启动软件历程,然后比较内存中存放的器件地址和接受到数据的地址字节。

3)如果地址吻合,CPU清除SLEEP位,并读取块中剩余数据,否则退出子程序并保持SLEEP位.

    描述:28335,SCI使用地址位唤醒,使能睡眠位。发送的数据,不管校验类型(mark,space,无),在接收中断中,RXWAKE均会置位为1,进入地址判断。按照正常逻辑只有mark校验才能唤醒RXWAKE,之后读取数据RXWAKE复位,Sleep置0以后,RXWAKE就不会为1了。另外,同样配置在28035中使用正常。如有遇到相同问题,望多多指教,非常感谢!

SCI配置代码:

    ScibRegs.SCICCR.all     = 0x0f;     //SCICHAR_LENGTH_8,  Address-bit mode protocol selected

    ScibRegs.SCICTL1.all    = 0x0007;          // enable TX, RX, SLEEP // Disable RX ERR, TXWAKE

    ScibRegs.SCIHBAUD       = (((Uint32)SciB_PRD >> 8));
    ScibRegs.SCILBAUD       = (((Uint32)SciB_PRD & 0x00FF));// 115200 baud @LSPCLK = 37.5MHz.
    ScibRegs.SCICTL2.bit.TXINTENA =1;//
    ScibRegs.SCICTL2.bit.RXBKINTENA = 1;
    //ScibRegs.SCICCR.bit.LOOPBKENA =1; // Enable loop back
    ScibRegs.SCIFFTX.all = 0xC040;             //SCI Reset,SCIFFENA,TXFFINTFLAG CLEAR//C040
    ScibRegs.SCIFFRX.all = 0x0061;              //RXFIFO Reset,SCIFFENA,TXFFINTFLAG CLEAR//0061
    ScibRegs.SCIFFCT.all = 0x00;
    ScibRegs.SCICTL1.all = 0x0027;              // Relinquish SCI from Reset
    ScibRegs.SCIFFTX.bit.TXFIFOXRESET = 1;
    ScibRegs.SCIFFRX.bit.RXFIFORESET = 1;

user6170847:

回复 mangui zhang:

你好,感谢你的回复!目前我的情况是这样,若是使用loop back,TX直接往RX发送数据是可以正常判断地址,数据接收。但是使用其他设备往28335发数据,就会出现异常,SCIRXST寄存器中BRKDT和FE位置1。对比两种情况下数据帧的波形,波形一致。另外就是一样的硬件电路,SCI代码配置和中断接收处理函数,在28035中是可以使用的。不知道是什么原因导致这种情况?

再次感谢!

赞(0)
未经允许不得转载:TI中文支持网 » 关于28335,SCI通信使用地址位唤醒异常
分享到: 更多 (0)