zj1 发表于 2014-6-26 19:06

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;
}

wangch_sh 发表于 2014-6-26 19:41

降低下波特率行不行?

zhangmangui 发表于 2014-6-27 12:39

波特率确实很高 降一下看看
排除别的问题

xx1555 发表于 2014-7-21 17:15

楼主,你是怎么解决的啊?我也遇到这样的问题了。
我是F2812做485通讯。波特率9600,接收和发送功能都具有。
电脑发送89个字节,DSP要回答8个字节。当每隔100ms发送一次时,出现了楼主你那样的情况,再也不能进接收中断了。当我改为每隔200ms发送一次,就没有问题了,接收和发送就都正常了。
楼主,你是怎么解决的啊?

sunmenglin 发表于 2016-3-4 23:41

楼主,你是怎么解决的啊?

zj1 发表于 2016-3-10 18:06

在我上面贴出来的配置里增加上这么一句,ScibRegs.SCIPRI.bit.FREE = 1;我是在CCS3.3条件下进行程序调试的,为了看到收到的数,你不免要刷新窗口,在刷新的时候会影响到DSP与串口之间的通讯,所以需要增加这一句。另外最重要的是,在仿真时让DSP进入realtime模式,具体是这么操作的,在运行程序之前,单击Debug菜单下面的Real-time Mode项,之后再运行程序。上面就是我解决这个问题的经过,希望能对你有所帮助。

JY-DX-JY 发表于 2016-3-10 18:36

多谢分享。
页: [1]
查看完整版本: 28335做485通讯出现RXERROR,BRKDT,FE,PE错误