DSP将8335的串口受到干扰后无法再次产生串口中断
DSP将8335的串口受到干扰后无法再次产生串口中断,我用SCI进行串口接收数据,如果串口数据不受到干扰,一切正常,也能产生串口中断,但是如果一但串口的数据被干扰之后,就再也进不去串口中断了,就算后面的串口数据恢复正常了,也无法再次进入串口中断函数里面,哪位大侠遇到过,给支支招? 江湖救急啊 好好看看sci部分的寄存器,有些error是需要软件清除的。 steaven2000 发表于 2014-11-2 10:51好好看看sci部分的寄存器,有些error是需要软件清除的。
SCI如果产生接收错误中断,并且这个中断不清除的话,是否会导致无法正常串口接收中断 是不是用了fifo中断,必须要接受一定的字节才产生中断??? tkggsai2008 发表于 2014-11-6 17:58
是不是用了fifo中断,必须要接受一定的字节才产生中断???
是用的FIFO中断,我是设定为1个字节就产生中断 二楼正解,一定要检测寄存器里的错误位,发生错误后记得清除。我前不久正好碰到这个问题,施加干扰后只发不收了,清除错误标志后问题解决。 laoerge 发表于 2014-11-10 23:26
二楼正解,一定要检测寄存器里的错误位,发生错误后记得清除。我前不久正好碰到这个问题,施加干扰后只发不 ...
楼上的错误标志位的清除,是利用产生了错误中断来清除的嘛?
给个参考代码学习下吧 tianyaxtutianya 发表于 2014-11-15 17:13
楼上的错误标志位的清除,是利用产生了错误中断来清除的嘛?
给个参考代码学习下吧 ...
/*=======================================================================
* 函数:scia_rx_isr
* 功能:scia接收中断处理(HMI485接口,接显示屏)
* 参数:无
* 返回:无
*======================================================================*/
interrupt void scia_rx_isr(void)
{
if(SciaRegs.SCIRXST.bit.RXERROR) // 发生接收错误后,软件复位串口,并重新时能串口
{
SciaRegs.SCICTL1.bit.SWRESET = 0;
SciaRegs.SCICTL1.bit.SWRESET = 1;
}
}
原来没加这个错误处理就会发生干扰后只发不收现象,加了好像是解决了。 楼主如果这样解决了麻烦告知一声,我也是才用DSP不久 laoerge 发表于 2014-11-15 18:48
/*=======================================================================
* 函数:scia_rx_isr
* 功 ...
如何配置这个错误中断初始化部分 tianyaxtutianya 发表于 2014-11-24 18:04
如何配置这个错误中断初始化部分
这个不是错误中断,就是接收中断。在接收中断里做错误处理即可 我这个中断里边接收处理被我删掉了,你加上你自己的功能就行 laoerge 发表于 2014-11-24 18:48
我这个中断里边接收处理被我删掉了,你加上你自己的功能就行
产生接收错误后,不需要配置什么也可以正常产生接收错误中断嘛? 配置成能产生接收中断就可以了,然后在接收中断里处理错误,我这样处理后就没发生问题了。一开始我也再找错误中断,但好像没有。
页:
[1]