CPU为PowerPC 860,其提供SPI(860为从)等一些接口
发现利用16C554发送数据时,会出现未将数据发完的情况
而将SPI屏蔽则,引导发送后可以将缓冲区数据发送完
我的分析是,由于860的SPI为从模式,故SPI口一直有数据接收,当进入SPI收中断的过程中,如果16C554的发送中断到了而引起该中断未即使处理,从而导致16C554的后续发送中断不再产生。
不知各位高手怎么看,以及怎么解决?
16C554的中断模式设置的是沿触发还是电平触发?沿触发的话,如果CPU来不及处理就会这样。改成电平触发模式应该就可以了。
请教一下,16C554的中断模式如何设置?
我查看了寄存器,好像都没说可以设置中断模式啊?
发现不来中断的原因是LSR5:transmitter holding register empty (THRE) bit和LSR6:transmitter register empty (TEMT) bit为0,即意味着发送FIFO中的数据未发送出去
至于为什么没发送出去,我不明白了
不用管什么中断模式。你不处理,中断标志不会丢失。是不是不小心把UART给关了?否则怎么会出现这种情况?
或者,上电初始化时THRE和TEMT都是0,程序判断后以为FIFO中有数据就一直在等?好像也不是。
自己判断吧,有时候会有些事情会莫名其妙的出现,然后莫名其妙地消失。这种事情被称之为“灵异事件”。让你不敢信任自己程序的可靠性。