描述: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中是可以使用的。不知道是什么原因导致这种情况?
再次感谢!