USART传送数据时候,其他中断会影响数据吗
当USART\SPI正在传送数据时候,如果发生了其他中断事件,将被打断,这时候,会不会造成数据传输出错? 数据本身不会因为中断出错但你缓冲处理不好,可能会丢失或其它毛病... 楼主的担心其实多余了,当你将数据写到UDR寄存器的时候,发送过程完全由硬件控制了,这个时候不管UDR里面的内容是否向外面发送完,都不会影响到发送的连续性,也就不会造成出错了。 因为发送可以等,接收不能等
如果SPI只发送,USART本身有3级缓冲接收。SPI速度比USART快多了。所以数据处理好,就不好溢出。其他是硬件完成的。,
如果SPI要接收的话,最好SPI也做个缓冲,因为SPI速度快,上个没有取出,下个又来的话,因为USART占用中断处理时间太长,就会造成SPI数据覆盖。 这个问题非常好,其实还是不容易回答全面的。
简单的说,只有你的SPI是主机,且USART在数据放送情况时,其它中断事件基本不会影响,只是数据传输慢些。
但如果你的SPI是从机,或USART接收数据,并且数据是批量传送的,那么就会有问题的。
在现在的系统中,串行通信使用的非常多,数据也多,速度也快,给整个系统软件设计提出了挑战。在32位系统中,硬件上已经使用了DMA技术和通道,就是为了能比较好的处理这样的问题。
页:
[1]