12讲 通信的基本概念、USART
内容纲要

12讲 通信的基本概念、USART

通信的基本概念

file

file

file

同步通讯和异步通讯

根据通讯的数据同步方式,分为同步/异步两种,可以根据通讯过程是否有使用到时钟信号进行简单区分。

  • 同步通讯:收发设备双方会使用一根信号线表示时钟信号,在时钟信号的驱动下双方进行协调,同步数据,根据通信协议的不同,会定义在 上升沿、下降沿 对数据进行采样。

    file

  • 异步通讯:不使用时钟信号进行数据同步,它们直接在数据信号中穿插一些同步用的信号位,或者把主题数据进行打包,以数据帧的格式传输数据,某些通讯中还需要双方约定数据的传输速率,以便更好同步。

    file

  • 通常情况下 比特率和波特率相等的。

file

一个二进制位表示一个码元

  1. 0V ----- 0
  2. 3.3V ------1

两个二进制位表示一个码元

  1. 0V ----- 00
  2. 2V ----- 01
  3. 4V ----- 10
  4. 6V ----- 11

USART串口通信

串口通讯:

  • 物理层:RS232 RS485等标准,规定了信号的用途,通讯接口以及信号的电平标准。
    file

1.RS232标准

file

file

file

2.USB转 串口

file

3.原生的串口到串口

file

数据校验

1.奇校验(odd): 要求有效数据和校验位中含有 "1" 的个数为奇数个,比如一个8位长的有效数据 “01010011”,

​ 有效数据有4个 “1” ,所以在校验位需要提供一个 “1” 来保证个数位奇数。

2.偶校验(even) --- 和奇校验相反。

3.”1校验“ ---- 不管数据内容是什么,校验位总是1。

4.“0校验” ---- 不管数据内容,校验位总是0。

5."无校验" ----- 数据包中不包含校验位。

TIP: 奇偶校验,当数据位中有一个位发生了错误,接收方收到的数据发现和校验位匹配不上,就会知道这个数据是错的。 但是 如果数据位中有 2个错误( 可能性较低 ),那么就会放行。( 适用于安全性要求一般的运用场景 )


STM32 的 USART 简介

  • STM32芯片具有多个USART 外设 用于串口通讯,他是 Universal Synchronous Asynchronous Receiver and Transmitter ( 通用同步异步收发器 ) 的缩写,它可以灵活地和外部设备进行全双工数据交换。UART 是在 USART 下裁剪掉了同步通信的功能。 平时使用的串口通信基本都是UART。

  • USART 支持使用 DMA ,后面会学到。

  • USART 在 STM32应用最多的地方莫过于 "打印" 程序信息,调试程序可以把错误信息输出到电脑的串口调试助手。

  • STM32 的 USART 输出的是TTL 电平信号,需要RS-232 标准信号则需要使用 MAX3232 芯片进行转换

串口功能框图讲解

file

file

  • 功能引脚:
  1. TX:发送数据输出引脚。

  2. RX:接收数据输入引脚。

  3. SW_RX:数据接收引脚,只用于单线和智能卡模式,属于内部引脚,没有具体外部引脚。一般不用。

  4. nRTS:请求以发送(Request To Send),不常用

    file

  5. nCTS:清除以发送(Clear To Send),不常用

  6. SCLK:发送器时钟输出引脚。这个引脚只适用于同步模式。

file

  • 数据寄存器( USART_DR )

    file

    数据寄存器的发送接收流程:

    file

    1. USART_DR = temp; 用于将temp值存入到USART_DR寄存器中,然后通过发送移位寄存器进行发送。( 需要在USART_CR1中 打开相应的发送/接收 的使能 )

      file

    2. 通过状态寄存器( USART_SR )判断数据是否发出 ( USART_SR 只管是否发出,不管收没收到 )。

      i.TXE 是判断数据是否还在 "发送数据寄存器(TDR)" 。 ii. TC 判断是否发出去

      file

      file

      file

    3. 控制寄存器 ( USART_CR ) ,用于 控制发送 和发送完成中断。

      file

      file

    4. temp = USART_DR; 依旧是 数据寄存器,这次用RDR接收寄存器,

    5. 状态寄存器 USART_SR 、 控制寄存器 USART_CR1

      file

    当要使用USART 时,有一个USART_CR1 下的 UE( USART使能 )位需要打开!!!!

    file

file

  • 控制寄存器

    file

    这里使用串行输出,SCLK先不管。

    1. M (字长) 可以用来配置数据帧的大小,可以8位 9位等。

    2. USART_CR2 的 STOP 位,

      file

    3. USART_CR1 的 PCE ( 奇偶校验使能 ) ,PS(奇偶校验选择)、PEIE(奇偶校验错误中断)。

      当数据传输有错误被识别到时, USART_SR 的 PE位 会有相应的反应。

      PEIE 中断使能,可以写 奇偶校验中断服务函数 ,可以对中断进行处理。

  • 波特率 的计算

    warning : 注意波特率的换算,APB2 和 APB1 的时钟不一样,当要将 APB2的UART1 移植到APB1的UART2上时,波特率需要换算对!!!!!

    • 在串口中,波特率的一个 “码元” 代表1个 bit,所以在这里 波特率 = 比特率

    file

    file

    1. 波特率的计算公式 (下方的OVER8 就是 0 或者 1 直接代入 (8*( 2 - OVER8) 就是8倍或者16倍嘛))

      file

    file

    波特率寄存器分为整数部分,和小数部分

    1. 下图算出115200 波特率下 USARTDIV = 45.57 , 45 直接写入寄存器的整数部分,0.57要换算再写入小数。

      TIP: 小数部分最大不超过1,有4个位,所以1 分成 2^4 份,0.57 占这么多份中的数值就是小数需要写入的部分

    file

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇