2812串口SCI

2019-08-02 21:10发布

2812,使用SCI FIFO中断模式接收数据,波特率153.6K,数据包每包含16个8位数,每接收到一个数据即产生一个中断,也就是每一个数据包会产生16个中断。上位机最快每隔20ms左右发一包数据。
平时大多数时间下使用都是正常的。
但是诡异的是,不时会出现表现为串口无响应的故障。接上仿真器检查,发现确实有在数据线上有数据的情况下,DSP完全不响应中断。检查SCI寄存器,发现SCIRXST寄存器被置0xB2,也就是RX ERROR位,BRKDT位,FE位被置1,通过向SCICTL1寄存器的SW reset复位位写0,可以使串口重新响应中断,但是很快又会出现不响应中断的情况。同事SCIRXST被写0XB2
想让大家帮忙分析的是,这种情况有可能是因为什么导致的?SCIRXST被置为0xB2后,串口会被挂起?
查datasheet ,上面说BRKDT是SCI break标志位,被置为的原因是串口在丢失一个停止位后,连续检测到了十位的低电平
并且貌似在连接仿真器用断点进行调试时,这种现象发生的尤其频繁。我不能肯定的是上位机或者我自己的2812在使用断点调试时,打乱了串口的传输,造成SCIRXST寄存器报错呢,还是其他的原因?
不知道有人遇到类似问题没?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
qiuconnie
2019-08-03 15:59
你好,我也同样遇到了DSP SCI时不时进不了中断的问题,使用的是FIFO普通发送和中断接收,一次发送1包16个数,因为设置了SCI接收中断标志,能报出故障来发现的,若不复位程序,有可能会恢复中断,但时间不确定,请问你是怎么解决的?发送完复位一下TXFIFO reset,接收完也RXFITO reset一下不知道是否可以?

一周热门 更多>