串口通信原理

注:(1)ALIENTEK 精英 STM32 开发板所使用的 STM32F103ZET6 最多可提供 5 路串口

      2串口设置的一般步骤可以总结为如下几个步骤:

1) 串口时钟使能, GPIO 时钟使能

2) 串口复位

3) GPIO 端口模式设置

4) 串口参数初始化

5) 开启中断并且初始化 NVIC(如果需要开启中断才需要这个步骤)

6) 使能串口

7) 编写中断处理函数

 

一。波特率

1.波特率和比特率的区别

波特率:

 在信息传输通道中,携带数据信息的信号单元叫码元,每秒钟通过信道传输的码元数称为码元传输速率,简称波特率波特率是指数据信号对载波的调制速率,它用单位时间内载波调制状态改变的次数来表示,即是每秒调制的符号数,其单位是波特,波特率是传输通道频宽的指标。

比特率:

指单位时间内传输的比特数

注:(1)波特率越大,传输速率越快。 USART 的发送器和接收器使用相同的波特率。

       (2)比特率=波特率*单个调制状态对应的二进制位数

 2.计算公式

串口通信原理_第1张图片

二。通信接口背景知识

1.处理器和外部设备通信的方式有两种(或者可以这么说通信双方一般有两种通信方法),分别是

(1)并行(xing)通信:                                                   (2)串行(xing)通信

传输原理:数据各个位同时传输                                         传输原理:数据按位顺序传输

优点速度快                                                                    优点占用引脚资源少

缺点占用的引脚资源多                                                   缺点速度相对比较

理解:
并行通信

串口通信原理_第2张图片

就是,a和b是两个通信设备,a到b 进行并行通信,8个比特率,有八个引脚,一次性的把数据传到了对应的设备。

串行通信

串口通信原理_第3张图片

就是只有一个引脚

2.串行通信:

按照数据传送方向,分为:

  • 单工:

            数据传输只支持数据在一个方向上传输

  • 半双工:

            允许数据在两个方向上传输,但是,在某一时刻,只允许数

            据在一个方向上传输,它实际上是一种切换方向的单工通信;

  • 全双工:

           允许数据同时在两个方向上传输,因此,全双工通信是两个

           单工通信方式的结合,它要求发送设备和接收设备都有独立

           的接收和发送能力。

 

串口通信原理_第4张图片

                        a是单工,b是半双工,c是全双工

 

 

 

 3.串行通信的通信方式

  • 同步通信带时钟同步信号传输。

    -SPI,IIC通信接口

  • 异步通信:不带时钟同步信号

    -UART(通用异步收发器),单总线

注释:

1.

串口通信原理_第5张图片

这个是串行通信,只有一条数据线。

2

串口通信原理_第6张图片

这个是同步通信,除了数据线之外还有一条时钟线。

3

串口通信原理_第7张图片

这个图中,时钟运行了一个周期,这个时钟具有上升沿和下降沿

4.

串口通信原理_第8张图片

这个是异步通信,没有时钟信号按比特来传输,没有时钟信号,对于异步通信,

它是有一个要求,约定AB双方进行一个协议;比如用UART通信,A,B双方必须有一个波特率(传输的速度)

 

5.比如这个图是没有进行约定的

串口通信原理_第9张图片

他就不知道你什么时候代表一个位传输完成了呢?这是没有办法,假设波特率确定了,A就用波特率来解析你的数据,一个数据只能发送1ms来传输,他就用1s来采集你的数据,我就知道你的数据是1还是0.

 

 

 

 

注意:上升沿和下降沿的概念问题

串口通信原理_第10张图片

上升沿就是从0变成1中间的过程

下降沿就是从1变成0中间的过程

 

 

 

 

4。常见的串行通信接口

全双工:UART,SPI

半双工:1-wire,I2C

异步通信:UART,1-wire

同步通信:SPI,I2C

 

  通信标准

引脚说明

通信方式

通信方向     

  UART

(通用异步收发器)

TXD:发送端

RXD:接受端

GND:公共地

异步通信

全双工

  单总线

(1-wire)

DQ:发送/接受端

异步通信

半双工

SPI

SCK:同步时常见的串行通信接口钟

MISO:主机输入,从机输出

MOSI:主机输出,从机输入

同步通信

全双工

I2C

SCL:同步时钟

SDA:数据输入/输出端

同步通信

半双工

注释:1.UART因为是异步通信,就没有同步时钟,又因为是全双工,所以是一条发送,一条接受。

         2.单总线:因为是半双工,所以只需要一条线,一条线既能发送,也能接受的线。

        3SPI同步通信,必须有同步时钟。又因为是全双工,所以有独立的输入和输出引脚。

        4.I2C(这个叫做IC,他是同步通信,所以有同步时钟,又因为是半双工,所以只有一根数据线,既可以输入,又可以输出

 

 

 

5.STM32的串口通信接口

  • UART:通用异步收发器

  • USART:通用同步异步收发器

注释:大容量STM32F10x系列芯片,包含3USART2UART

 

6.UART异步通信方式引脚连接方法:

-RXD:数据输入引脚。数据接受。R是receive

-TXD:数据发送引脚。数据发送。T是transmit

简洁记忆:R来接受,T来发送

一个接收连接另一个发送,电脑上有一个串口DB9,

 

串口通信原理_第11张图片

DB9怎么用芯片来连接,DB9进行电平转换

 

PC机通过电平转换,转换到DB9.

ARM芯片通过串口和电脑通讯的话,也需要RS232转换器,把他转换为232电平,这样它们两个才能连接在一起

ARM芯片的RxD不能直接连接PC机的TxD,因为芯片和电脑的电平是不兼容的。

TTL与232不兼容

串口通信原理_第12张图片

 

 

7.UART异步通信方式引脚:

-RXD:数据输入引脚。数据接受。

-TXD:数据发送引脚。数据发送。

串口号

RXD

TXD

1

PA10

PA9

2

PA3

PA2

3

PB11

PB10

4

PC11

PC10

5

PD2

PC12

 

8.UART异步通信方式特点:

  • 全双工异步通信

  • 分数波特率发生器系统,提供精确的波特率。

     -发送和接受共用的可编程波特率,最高可达4.5Mbits/s

  • 可编程的数据字长度(8位或者9位);

  • 可配置的停止位(支持1或者2位停止位);

  • 可配置的使用DMA多缓冲器通信。

  • 单独的发送器和接收器使能位。

  • 检测标志:① 接受缓冲器  ②发送缓冲器空 ③传输结束标志

  • 多个带标志的中断源。触发中断。

  • 其他:校验控制,四个错误检测标志。
  • 注释:1.通信的双方必须先约定好波特率

9.

串口通信原理_第13张图片

 

10.STM32串口异步通信需要定义的参数:

    1.起始位

    2.数据位(8位或者9位)

    3.奇偶校验位(第9位)奇偶校验是接收验错的方法之一

    4.停止位(1,15,2位)

    5.波特率设置

 

例子:奇偶效验位是为了提高数据传输的准确率

比如说偶效验,1的数量不是偶数个,说明这个变量传输有问题

串口通信原理_第14张图片

 举例子:假设这里面有这几位数

偶数校验位

1,1,1,0,那最后那个奇偶效验位,我们假如是偶校验的话就要在那一个位补一个1;

假如1,1,1,1,0,我们在奇偶校验位补一个0;

奇数校验位

1,1,1,0,那最后那个奇偶效验位,我们假如是偶校验的话就要在那一个位补一个0;

假如1,1,1,1,0,我们在奇偶校验位补一个1;

 

 

串口通信原理_第15张图片

 

USART框图

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.IrDA SIR这个是红外编辑码

2.TX和RX是接收和发送,

接收:直接到接收移位寄存器,又送到了RDR,之后CPU去读寄存器,去读到我们接收的数据

发送:写数据,TDR寄存器,又把数据送到了发送移位寄存器,又通过波特率一位一位的移出

3.它是由接收器的时钟和发送器的时钟来计算波特率的。

4。接收和发送的波特率是有一个单元来控制,共用波特率发生器

 

重点来了,就是这里

串口通信原理_第16张图片

1.串口的时钟:  fPCLKx(x=1,2)

在F103大容量芯片中,

串口1------x=2             串口2~4------x=1

2./usartdiv就是除以一个数(可以是整数或者小数),使用波特率寄存器来配置的。

3.

这里有个小数,还有一个整数

意思就是,这里既能够配置整数的分频,又能配置小数的分频。

4,先除以/usartdiv,配置时钟,再除以16,配置发送器时钟或者接收器时钟。

   注意小数和整数都是需要符合是1/16的整数倍这个条件

1.SR寄存器就是传输过程中的状态标志位

2.CR1寄存器分两个部分

串口通信原理_第17张图片

有箭头的这四个是连接中断控制,这是一些中断使能,在中断服务函数来判断相应位

没有箭头的这四个是使能位

你可能感兴趣的:(STM32,stm32)