200字
STM32基础知识
2024-03-12
2026-03-25

计算机中存储的负数是其补码形式

负数的补码=反码+1

例如 -2 原码 1000 0010 反码 1111101 补码 1111 1110

GPIO

GPIO的八种模式

  • 输入浮空:空闲时,IO状态不确定,由外部环境决定
  • 输入上拉:空闲时,IO呈现高电平
  • 输入下拉:空闲时,IO呈现低电平
  • 模拟功能:专门用于模拟信号输入或输出,如:ADC和DAC
  • 开漏输出:不能输出高电平,必须有外部(或内部)上拉才能输出高电平,软件IIC的SDA、SCL等
  • 推挽输出:可输出高低电平,驱动能力强,驱动能力强,25mA(max)
  • 开漏式复用功能:由其他外设控制输出,不能输出高电平,必须有外部(或内部)上拉才能输出高电平,片上外设功能(硬件IIC 的SDA、SCL引脚等)
  • 推挽式复用功能:由其他外设控制输出,可输出高低电平,驱动能力强,片上外设功能(SPI 的SCK、MISO、MOSI引脚等)

通信协议

特点 传输速率 抗干扰能力 通信距离 IO资源占用 成本
串行通信 较低 较强 较长 较少 较低
并行通信 较高 较弱 较短 较多 较高

同步通信:共用同一时钟信号

异步通信:没有时钟信号,通过在数据信号中加入起始位和停止位等一些同步信号

通信接口 接口引脚 数据同步方式 数据传输方向
UART (通用异步收发器) TXD:发送端 RXD:接收端 GND:公共地 异步通信 全双工
1-wire DQ:发送/接收端 异步通信 半双工
IIC SCL:同步时钟 SDA:数据输入/输出端 同步通信 半双工
SPI SCK:同步时钟 MISO:主机输入,从机输出 MOSI:主机输出,从机输入 CS:片选信号 同步通信 全双工
功能说明 SPI总线 IIC总线
通信方式 同步 串行 全双工 同步 串行 半双工
总线接口 MOSI、MISO、SCL、CS SDA、SCL
拓扑结构 一主多从/一主一从 多主从
从机选择 片选引脚选择 SDA上设备地址片选
通信速率 一般50MHz以下 100kHz、400kHz、3.4MHz
数据格式 8位/16位 8位
传输顺序 MSB/LSB MSB
电平 逻辑1 逻辑0
RS-232电平 -15V ~ -3V +3V ~ +15V
COMS电平(3.3V) 3.3V 0V
TTL电平(5V) 5V 0V
RS485 +(2-6)V -(2-6)V
通信接口 通信方式 信号线 电平标准 拓扑结构 通信距离 通讯速率 抗干扰能力
TTL 全双工 TX/RX/GND 逻辑1 : 2.4-5 V 逻辑0 : 0-0.4V 点对点 1米 100kbps
RS232 全双工 TX/RX/GND 逻辑1 : -(15-3) V 逻辑0 : +(3-15) V 点对点 100米 20kbps 较弱
RS485 半双工 差分线AB 逻辑1 : +(2-6)V 逻辑0 : -(2-6)V 多点双向 1200米 100kbps

待补充 uart usart

IIC、SPI、RS232、RS485

I2C:IIC:Inter Integrated Circuit,集成电路总线,是一种同步 串行 半双工通信总线。

SDA(串行数据线)和SCL(串行时钟线)

image

SPI:SPI:串行外设设备接口(Serial Peripheral Interface),是一种高速的,全双工同步的通信总线。

SCLK MISO MOSI NSS/CS

(1)MISO– Master Input Slave Output,主设备数据输入,从设备数据输出;

(2)MOSI– Master Output Slave Input,主设备数据输出,从设备数据输入;

(3)SCLK – Serial Clock,时钟信号,由主设备产生;

(4)CS – Chip Select,从设备使能信号,由主设备控制。 选择信号,由主机发出,SPI主机选择与哪一个SPI从机通信,一般是低电位有效。

RS485 半双工 也可是全双工(MAX1482)

image

RS485是串行通信标准,使用差分信号传输,抗干扰能力强,常用于工控领域。

RS485具有强大的组网功能,在串口基础协议之上还制定MODBUS协议。

串口基础协议:仅指封装了基本数据包格式的协议(基于数据位)

MODBUS协议:使用基本数据包组合成通讯帧格式的高层应用协议(基于数据包或字节)

发送端 AB间的电压差

逻辑1电平信号+2 ~ +6v

逻辑0电平信号-2 ~ -6v

接收端 AB间的电压差

逻辑1电平信号 大于 +200mv

逻辑0电平信号 小于 -200mv

定义逻辑1为B>A的状态

定义逻辑0为A>B的状态

Modbus

循环冗余校验

Modbus允许多个 (大约240个) 设备连接在同一个网络上进行通信,

大多数Modbus设备通信通过串口EIA-485物理层进行

Modbus通信时如果主设备发送功能码0x03,如果从设备执行正确则返回原功能码,如果错误,则功能码最高位1

广播模式请求报文的设备地址为0(0x00)。

DMA介绍

DMA,全称Direct Memory Access,即直接存储器访问。

DMA传输 将数据从一个地址空间复制到另一个地址空间。

DMA传输无需CPU直接控制传输,也没有中断处理方式那样保留现场和恢复现场过程,通过硬件为RAM和IO设备开辟一条直接传输数据的通道,使得CPU的效率大大提高

作用:为CPU减负

硬件和软件IIC对比

IIC 用法 速度 稳定性 管脚
硬件IIC 比较复杂 较稳定 需使用特定管脚
软件IIC 操作过程比较清晰 较慢 稳定 任意管脚,比较灵活

为什么IIC总线SDA建议用开漏模式?

IIC的SDA脚即要作为输出,又要作为输入,用开漏输出模式,很好实现输出输入共用,避免IO模式频繁切换带来的麻烦。

输出时:主机(MCU)输出0,可以拉低信号,来实现低电平发送,主机输出1(实际不起作用),由外部上拉电阻上拉,实现高电平发送。

输入时:主机(MCU)设置输出1状态,此时因为MCU无法输出1,相当于释放了SDA脚,此时外部器件可以主动拉低SDA脚/释放SDA脚(同样由上拉电阻提供“输出1的功能”),实现SDA脚的高低电平变化。

由于开漏输出模式下,MCU还是可以读取IDR状态寄存器,来获取引脚高低电平,因此MCU读取IDR,即可获得SDA脚的高低电平状态,从而实现输入检测。

梳理:串口、 UART、TTL、RS232、RS422、RS485关系

串口是一个泛称,UART、RS232、RS422和RS485都遵循类似的通信时序协议,被通称为串口。

image

UART是STM32的UART外设,由此产生串口时序,产生的电平为CMOS电平。

TTL、RS232、RS422、RS485是串行通信接口标准。简单来说,就是逻辑1和0的表示不同。image

通信接口 通信方式 信号线 电平标准 拓扑结构 通信距离 通讯速率 抗干扰能力
TTL 全双工 TX/RX/GND 逻辑1 : 2.45 V 逻辑0 : 00.4V 点对点 1米 100kbps
RS232 全双工 TX/RX/GND 逻辑1 : -(153) V 逻辑0 : +(315) V 点对点 100米 20kbps 较弱
RS485 半双工 差分线AB 逻辑1 : +(26)V 逻辑0 : -(26)V 多点双向 1200米 100kbps

评论