28335做485通讯出现RXERROR,BRKDT,FE,PE错误
各位大侠,我在用28335做485通讯时出现接收错误,包括BRKDT,FE,PE等,从其状态寄存器里看到的。具体是这样的,28335只用来做接收,用串口助手每10毫秒给28335发送28个字节的数据,波特率为38400,使用了FIFO中断功能,每收到14个字节的数据进一次中断,开始能进收到数,但是串口发送了一会儿后,接收中断就不能进入,查看28335的接收状态寄存器发现了上面提到的错误。如果把发送频率由10毫秒降低到1秒,就不会出现这样的问题,可是这样对我来讲,没有任何意义。请有这方面经历的大侠给帮帮忙,谢谢!我的初始化配置是这样的:void InitScib()
{
ScibRegs.SCICCR.all = 0x0007;
ScibRegs.SCICTL1.all = 0x0001;
ScibRegs.SCICTL2.bit.RXBKINTENA =1;
// ScibRegs.SCICTL2.all =0x0002;//enable rx interrupt
ScibRegs.SCIHBAUD =0x0000;// 38400 baud @LSPCLK = 50MHz.
ScibRegs.SCILBAUD =0x00A1;
// Initalize the SCI FIFO
ScibRegs.SCIFFTX.all=0xC040;
ScibRegs.SCIFFRX.all=0x002E;
ScibRegs.SCIFFCT.all=0x4000;
ScibRegs.SCICTL1.all =0x0021;// Relinquish SCI from Reset
ScibRegs.SCIFFRX.bit.RXFIFORESET=1;
}
降低下波特率行不行? 波特率确实很高 降一下看看
排除别的问题 楼主,你是怎么解决的啊?我也遇到这样的问题了。
我是F2812做485通讯。波特率9600,接收和发送功能都具有。
电脑发送89个字节,DSP要回答8个字节。当每隔100ms发送一次时,出现了楼主你那样的情况,再也不能进接收中断了。当我改为每隔200ms发送一次,就没有问题了,接收和发送就都正常了。
楼主,你是怎么解决的啊? 楼主,你是怎么解决的啊? 在我上面贴出来的配置里增加上这么一句,ScibRegs.SCIPRI.bit.FREE = 1;我是在CCS3.3条件下进行程序调试的,为了看到收到的数,你不免要刷新窗口,在刷新的时候会影响到DSP与串口之间的通讯,所以需要增加这一句。另外最重要的是,在仿真时让DSP进入realtime模式,具体是这么操作的,在运行程序之前,单击Debug菜单下面的Real-time Mode项,之后再运行程序。上面就是我解决这个问题的经过,希望能对你有所帮助。 多谢分享。
页:
[1]