串口USART收发数据处理方式总结

来源:本站
导读:目前正在解读《串口USART收发数据处理方式总结》的相关信息,《串口USART收发数据处理方式总结》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《串口USART收发数据处理方式总结》的详细说明。
简介:本文介绍串口USART收发数据处理方式总结的知识,很不错的知识,一起来看下吧。

无论是串口还是SPI口,作为通信接口有多种处理方式,没有说timeout和定长接收或者中断中处理一定是哪种好,也分场合,小结了一下有这么几种做法:

1.轮询,收到一个字节处理一个字节,每个字节的处理可以用一个状态机。这种处理方法适合于低速、ram较小的通信场合。

2.中断,在中断中直接处理每个字节的内容。这种方法适合于低速、ram较少的通信场合。

3.中断,数据存入软件的fifo队列,应用层通过读取软件的fifo来实现串口操作。这种方法适合于低速,ram足够的场合,且每帧具有固定的帧长度,或帧长度可以从固定长度的帧头获取。

4.DMA,每次接收定长数据。适合于高速通信,ram足够的场合,且每帧具有固定的帧长度,或帧长度可以从固定长度的帧头获取。(需要注意的是当帧由于某种原因一直没有接收满时,程序是否会死等在那里。说白了还是需要一个超时功能来保证程序的可靠性)

5.第一个字用中断,开启DMA接收剩余数据,并开启定时器。(这么做第一个字节之后可能会丢失一部分数据)。这种方法适合用在有前导字节的通信帧中,且需要整帧接收处理的情况下,适合处理传输速度较快的通信,占用cpu较少。

6.DMA+接收结束判断。这接收结束判断可以是字节的timeout,也可以是USART_IT_IDLE线路空闲的标志等。这种方式对于需要整帧接收,且通信速度较快或需要占用cpu较少的情况。

7.硬件fifo+接收结束判断。每次fifo到达阀值在终端中取一次数据,当超时时标示收完一帧。用于需要整帧接收,且通信速度较快或需要占用cpu较少的情况。

这里罗列了一些我能想到的用法。主要分3种用途:1.字节处理;2.规定长度的帧处理;3.不规定长度整帧处理。

如果你的通信协议能得到一帧数据长度的,为什么非得强求fifo或dma的TimeOut的方式呢?如果你本身就只有那么点内存资源的,为什么不用字节处理要用其它方式呢?当然,无论如何,为了程序健壮性,设置一个超时还是必要的。没有其他办法就用定时器做。

提醒:《串口USART收发数据处理方式总结》最后刷新时间 2024-03-14 00:57:31,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《串口USART收发数据处理方式总结》该内容的真实性请自行鉴别。