一、原理图
1.1 电源
上电与枚举
电路通过 USB1 连接电脑后,CH340E 芯片获得 5V 供电。
电脑识别到 CH340E 芯片后,会自动加载驱动(或手动安装),在设备管理器中生成一个虚拟串口(如 COM3、COM4)。
数据发送(STM32 → 电脑)
STM32 通过 USART1_TX(PA9)将串口数据(TTL 电平)发送到 CH340E 的 RXD 引脚。
CH340E 将接收到的串口数据打包成 USB 协议数据包,通过 D+/D - 线发送给电脑。
电脑端的串口助手(如串口调试助手)从虚拟串口读取并显示数据。
数据接收(电脑 → STM32)
电脑通过虚拟串口发送数据,CH340E 接收 USB 数据包后,将其转换为串口数据,通过 TXD 引脚发送到 STM32 的 USART1_RX(PA10)。
STM32 通过 USART1 外设接收并处理这些数据。
1.2 EC11旋转编码器
1. 旋转检测
编码器旋转时,A、B 相引脚会输出两路相位差 90° 的方波脉冲。
当顺时针旋转时,A 相先于 B 相触发;逆时针旋转时,B 相先于 A 相触发。
STM32 通过 PA6 和 PA7 实时检测这两路信号的跳变顺序,从而判断旋转方向,并根据脉冲数量计算旋转的步数。
2. 按键检测
编码器按下时,内部开关将 C、E 短接,按键信号引脚被拉低。
STM32 通过检测该引脚的电平变化,识别按键按下和松开的动作。
3. 信号滤波
编码器的机械触点在旋转和按下时会产生抖动和毛刺,R25/C14 和 R26/C13 组成的 RC 滤波电路可以有效平滑这些信号,避免 STM32 产生误判。
1.3 有源和无源蜂鸣器
1、有源工作流程
- 当 STM32 的 PB0 输出高电平时,电流经 R6 流入 Q1 的基极,Q1 导通。
- +5V 电源通过 U5 和 Q1 形成回路,蜂鸣器得电,持续发声。
- 当 PB0 输出低电平时,Q1 截止,蜂鸣器断电,停止发声。
2、有源工作流程
- 当 STM32 的 PB3 输出一定频率的 PWM 波(如 2.7kHz)时,Q2 会随着 PWM 的高低电平快速导通和截止。
- Q2 的通断使蜂鸣器两端产生交变电压,驱动其内部的压电片振动,从而发出声音。
- 当 PB3 输出低电平时,Q2 截止,蜂鸣器两端无电压,停止发声。
- 在 Q2 关断瞬间,蜂鸣器的感性电流通过 D1 形成回路,保护电路。
3、两种蜂鸣器的核心区别
- 有源蜂鸣器:只要通直流电就响,控制简单,适合做 “滴” 一声的提示音。
- 无源蜂鸣器:需要 PWM 驱动,可通过改变频率发出不同音调,适合做音乐或复杂提示音。
1.4 温度传感器和温湿度传感器
工作流程
温度传感器
初始化:STM32 通过 PB1 发送复位脉冲,DS18B20 收到后返回存在脉冲,表示传感器就绪。
指令下发:STM32 发送温度转换指令,DS18B20 开始采集并转换温度数据。
数据读取:转换完成后,STM32 发送读取指令,通过单总线读取 16 位的温度数据。
数据处理:STM32 将读取到的 16 位数据按协议解析,得到实际温度值(如 25.5℃)。
温湿度传感器
起始信号:STM32 通过 PA5 拉低数据线至少 18ms,然后释放总线(上拉电阻拉回高电平),作为起始信号。
响应信号:DHT11 检测到起始信号后,拉低总线 80µs,再拉高 80µs,作为响应信号,表示准备好发送数据。
数据传输:DHT11 开始连续发送 40 位数据,每一位数据都以 54µs 的低电平开始,随后的高电平持续时间决定该位是 0(26-28µs)还是 1(70µs)。
数据校验:STM32 接收完 40 位数据后,对前 32 位数据求和,并与最后 8 位校验和对比,验证数据完整性。
数据解析:将有效数据解析为湿度和温度值
1.5 WS2812控制芯片的RGB
工作流程
数据发送
STM32 通过 PA15 引脚发送一串由 24 位数据组成的帧。每 24 位数据对应控制一个灯珠的颜色,格式为:
G7-G0, R7-R0, B7-B0。数据以特定的高低电平时序(0 码:高电平短、低电平长;1 码:高电平长、低电平短)进行编码,WS2812 芯片通过识别这种时序来解码数据。
级联传输
第一个灯珠(LED6)接收到 24 位数据后,将其锁存并用于控制自身颜色,然后将剩余的数据通过 DO 引脚(数据输出)转发给下一个灯珠(LED7)。
第二个灯珠(LED7)重复此过程,控制自身颜色并将数据转发给第三个灯珠(LED8)。
第三个灯珠(LED8)接收并锁存最后一组 24 位数据,控制自身颜色。
数据锁存与显示
当所有灯珠都接收到对应的数据后,STM32 需要发送一个足够长的低电平(通常大于 50µs)作为复位信号,所有灯珠同时将锁存的数据输出,显示对应的颜色
1.6 LED跑马灯
工作流程
- IO 口配置:STM32 将 PB12~PB15 配置为推挽输出模式,初始状态为高电平(LED 熄灭)。
- 点亮 LED:当需要点亮某个 LED 时,将对应的 IO 口输出低电平,电流从 LEDVCC(+5V)经 LED、限流电阻、IO 口流向地,LED 导通发光。
- 熄灭 LED:当需要熄灭某个 LED 时,将对应的 IO 口输出高电平,电流回路被切断,LED 截止熄灭。
- 跑马灯效果:通过程序依次控制 PB12~PB15 的高低电平,使 LED2~LED5 依次点亮、依次熄灭,形成流水或闪烁的跑马灯效果。
1.7 USART转USB
工作流程
USB 枚举:电路通过 USB1 连接电脑后,CH340E 被识别为虚拟串口(如 COMx)。
STM32 → 电脑:STM32 通过 USART1_TX(PA9)发送数据到 CH340E 的 RXD 引脚,CH340E 转换为 USB 数据发送给电脑。
电脑 → STM32:电脑通过虚拟串口发送数据,CH340E 接收后转换为 UART 信号,通过 TXD 引脚发送到 STM32 的 USART1_RX(PA10)。
1.8 USART转RS485
工作流程
发送模式:STM32 将 PA4(USART2_EN)置为高电平,MAX3485 的 DE 和 RE 引脚为高,进入发送模式。STM32 通过 USART2_TX(PA2)发送数据到 DI 引脚,MAX3485 转换为差分信号从 A、B 输出到总线。
接收模式:STM32 将 PA4 置为低电平,MAX3485 的 DE 和 RE 引脚为低,进入接收模式。总线上的差分信号通过 A、B 进入 MAX3485,转换为单端信号从 RO 引脚输出,通过 USART2_RX(PA3)被 STM32 接收。
总线保护:R21 终端匹配电阻和 R19/R20 偏置电阻共同作用,保证总线在长距离和多节点通信时的信号完整性。