arm底层通讯接口之uart

1.目的

写这篇博文的主要目的就是让其他初学者能够更快的理解、掌握uart串口通讯,在学习底层接口通讯的时候,我们要带着这么几个问题:

       1)什么是uart

       2)uart有什么用

       3)怎么去实现

下面就这几个问题,给出解答。

2.什么是uart

uart中文意思是通用异步收发,简单来是就是作为一种全双工异步串口通讯协议。这里简单介绍下什么是串口、异步、全双工的概念:

       串口:就是数据是1bit接着1bit的串行传送,相对应的并口就是像物理电路的并联一样多bit 传输

       异步:就是收发双方不同步,发送方只管按照自己的时序发送,接收方只管按照自己的时序接收

       全双工:同一时间既能够发送,同时还能够接收(两个方向能够同时进行)

在物理结构上,uart一共有两根线:发送Rx和接收Tx

3.uart有什么用

在嵌入式,或者说在底层研发中,CPU是核心,外设是基础,CPU调度外设发挥正常功能,但是CPU和外设之间也是要有实际的物理连接来在二者之间进行数据传送的媒介,就好比是开车从北京市的朝阳区到海淀区,肯定是要顺着公路开过去,那么公路就是二者之间的物理媒介,但是有了媒介(公路),未必会能够正确到达海淀区,我们还规定遇到红绿灯,我们要准守一定的规则,这样才能到达海淀区。那么同样在uart通讯过程中,我们通过CPU和外设之间的引脚连接就好比是公路,有了公路我们还要有交通规则,那uart就是串口通讯中的交通规则。他规定了我们什么时候开始传送数据、一次传送多少bit的数据、什么时候结束数据传送等等,只有规定好了这些,uart接收一端才能够正常的收到有意义的数据。

4.uart使用

使用uart串口通讯就必须要知道uart的时序,比如说你现在有一个byte的数据要通过uart来传送出去,这个byte就是0x12,转换成二进制表示就是0001 0010,在空闲的时候发送线和接收线上都是高电平(空闲),发送0001 0010第1bit很简单,将电平拉低就好了,但是如果发送第1bit是1呢,这就需要我们引入起始位了,用它来告诉接收方,什么时候开始接收。接下来就该传送数据了,但是一次传送多少个字节呢,我们需要决定下:5、6、7、8bit,那传送结束后,还需要有结束位来标注传输结束。但是在实际传输过程中,大数据量传送的时候,我们还要确保接收到的数据没有在中途出现错误,所以还要有校验位来验证。综上所述,一个uart帧要包含:起始位、数据位、校验位(可选),而传输这些bit的速率就是波特率了,有了这些就能够正常使用uart协议了。

这里还要注意,一般arm芯片内部关于uart的使用都有固定的波特率产生器,我们只要控制这些寄存器就能够产生我们要的波特率来发送数据了




猜你喜欢

转载自blog.csdn.net/CSDNmianfeixiazai001/article/details/75208377