《ESP32+直流电机》第 0 章 底层概念地基:电、数字、芯片、程序

发布时间:2026/10/18 15:28:22

《ESP32+直流电机》第 0 章 底层概念地基:电、数字、芯片、程序 本章不写代码。它回答四个为什么①芯片为什么会听 0 和 1 的话②0 和 1 在电路里长什么样③程序是怎么被芯片记住并执行的④烧录/编译/运行到底分别做了什么每一节都从最底层讲起把概念彻底拆开。看懂这一章后面所有章节里的名词都不会再悬空。本章只是打地基、不动手等到第 2 章真正接线动手前请先翻一遍 0.10 的安全红线。0.1 电的基础电压、电流、GND电压 水位差把电想象成水管里的水。要让水流动两个位置要有高度差——这就像电压。电压的单位是伏特V。它衡量的是两个点之间的电势差。3.3VA 点比 B 点高 3.3 伏。0V两个点一样高没有推水的力。电流 水流量水从高处流向低处就是电流单位安培 A。电流是电子的流动。电流永远从高电压流向低电压就像水往低处流。GND 共同的0 米海平面电路需要一个统一的0 米基准叫GNDGround地。所有电压都是“相对于 GND 说的”。一块板子只有一个 GND。共地 两块板子的 GND 用一根线连在一起让它们有同一个海平面。共地了A 板的 3.3V 和 B 板的 GND才有确定的 3.3V 差信号才准确。不共地A 板说高B 板不知道相对谁高——信号就乱了。这是新手第一大坑第 8 章会再次出现。0.2 为什么芯片只懂 0 和 1从晶体管讲起晶体管一个电子开关芯片里最基本的零件叫晶体管transistor。你可以把它理解成一个用小电信号控制通断的开关给控制脚一个小信号它就决定另一条路上的大电流是通还是断L298N 内部就是这种东西第 8 章细讲控制脚 ──► ══开关══控制脚电压高 → 开关闭合导通控制脚电压低 → 开关断开截止。一个开关只有两种状态通/断。用1 表示通、0 表示断。这就是0 和 1的物理来源——它不是一个抽象概念而是电路里真实存在的“通和断”。逻辑门把开关组合成会算数的电路几个晶体管组合起来就能实现如果 A 和 B 都通输出才通这类规则这叫逻辑门logic gate与门 ANDA 和 B 都是 1输出才 1或门 ORA 或 B 有一个是 1输出就是 1非门 NOT输入 1输出 0反过来。亿万个逻辑门组合在一起就成了 CPU能算数、内存能记住、和各种外设能控制引脚。结论芯片听不懂中文但它内部全是由通/断开关组成的电路。所以我们用 0 和 1 跟它说话它就能直接听懂。0.3 数字信号在电路里长什么样——电平芯片的引脚输出1和0实际是输出电压数字电压名字1约 3.3V高电平 HIGH0约 0V低电平 LOW电平不是绝对电压是范围接收方判断高低不是量到正好 3.3V而是看电压落在哪个范围3.3V ┤■■■■■■■■ 高电平区认为读到 1 │ ↑ 阈值约 1.5~2V 左右这是简化模型精确的双阈值模型见 4.1 0V ─┴■■■■■■■■ 低电平区认为读到 0高于阈值 → 读到 1低于阈值 → 读到 0。这里的阈值就像考试的及格线分数电压到了线就算过读成 1没到就算不过读成 0接收方只认这条线不去量精确电压。而电压越过这条线的瞬间就是下一节要讲的沿。只要不落在中间模糊区信号就是可靠的。这就是数字信号抗干扰的原因一点点噪声不会让它从高变成低。ESP32 引脚电平这里说的引脚全书也常写成GPIOGeneral Purpose Input/Output通用输入输出脚——就是芯片外壳上那一根根你能自由读写的金属脚编号 GPIO0、GPIO1……本书很多实验就是在这些脚上收发电平。输出高电平 3.3V低电平 0V不能输出 5V输入能承受的电压上限约 3.3V部分引脚 5V 容忍。5V 直接接普通 GPIO会烧芯片——因为输入电路是按 3.3V 设计的。所谓5V 容忍5V-tolerant是指少数加固过的引脚即使输入 5V 也不会烧但普通引脚不在此列——拿不准就一律当成不能碰 5V最安全。0.4 电平的变化上升沿与下降沿重要概念信号不只是停在高/低还会变化。这个变化过程有两个关键时刻电压 3.3V ┤ ┌────────┐ │ │ │ ← 这段平台期间电平一直为高叫高电平期间 │ │ │ 0V ─┴────────┘ └──────── ↑ ↑ 上升沿 下降沿 低→高的瞬间高→低的瞬间上升沿Rising Edge信号从低变高的那个瞬间——电压从低电平区跨越阈值、进入高电平区。下降沿Falling Edge信号从高变低的那个瞬间——电压从高电平区跌回低电平区。为什么沿这么重要关键逻辑沿是一个瞬间事件电平是一个持续状态。区别在于电平触发只要电压是高就一直在触发像一直按着门铃边沿触发只在变高的那一瞬间触发一次像按一下门铃响一声。硬件里有很多只认沿的机制例如中断按钮按下产生下降沿芯片只在沿上进入中断一次中断的注册、ISR 规则、与任务通信的完整讲解见第 15 章。打个比方中断就像你正在写作业时突然来电铃响——你会放下笔先去接电话接完再回来继续写。芯片也一样手头活先暂停跳去处理这件急事这段临时去干的代码就叫 ISRInterrupt Service Routine中断服务程序。计数器每次上升沿数一次数数脉冲同步电路芯片内部所有逻辑都在时钟的上升沿统一拍板见 0.5。记法电平 状态沿 变化的一瞬间。看时序图时“上跳沿”上升沿“下跳沿”下降沿。第 4 章我们会实际遇到抖动——那是沿在短时间内反复出现多次。0.5 时钟芯片内部的节拍器芯片里的动作不是随便乱来的而是按照一个时钟clock信号一拍拍地做。时钟就是一个非常稳定的方波一种在高、低两级之间规则切换、画出来像一排正方形的波形见下每秒跳很多次高 ┤┌┐ ┌┐ ┌┐ ┌┐ │││ ││ ││ ││ 低 ─┘└─┘└─┘└─┘└─► 时间 ↑↑ ↑↑ 每两次上升沿之间 1 个时钟周期时钟每秒跳的次数叫频率单位Hz赫兹。1Hz 每秒 1 拍。我们芯片的 CPU 时钟是160MHz 每秒跳 1.6 亿拍。反过来算一拍只占1 ÷ 160,000,000 秒 6.25 纳秒ns——1 纳秒是十亿分之一秒。芯片内部逻辑加法、比较、搬运在每个时钟上升沿统一执行一步。理解时钟的意义它让亿万个开关步调一致就像一支乐队跟着指挥的拍子演奏。没有时钟信号会乱。操作系统也靠时钟FreeRTOS跑在芯片上的一个小型实时操作系统负责把多件同时要做的事排好队、分时间片轮着干用时钟节拍tick决定下一个该谁跑让多个程序轮流使用同一个 CPU——第 13 章展开。0.6 寄存器芯片里能记住数的小格子【十六进制小前置】本节开始要频繁看到0x开头的地址如0x60004004。0x是十六进制的记号逢 16 进一用 0~9 和 A~F 共 16 个符号写一个数位每 1 个十六进制位刚好对应 4 个二进制位。它只是把一长串 0/1 缩写得更短和十进制是同一个数的不同写法就像0x41 65 二进0100 0001。现在只要认出0x开头十六进制、代表一个数或一个地址就够用详细换算第 1 章 1.1 手把手教。第 1 章会反复用到一个词寄存器register。现在讲清它的本质。每个寄存器 一组能记住 0/1 的电路单元叫触发器flip-flop。8 个触发器排在一起就能记住一个 8 位数字0~255这里的一个位就是bitbinary digit 的缩写一个 0 或一个 1是最小的一格信息。每个寄存器在芯片内部有一个地址CPU 可以往它写或读。外设寄存器GPIO、PWMPulse Width Modulation脉冲宽度调制——用高电平占多少时间的比例来表示强弱比如让灯半亮、让电机半速第 7 章细讲这些硬件模块它们的控制旋钮就是寄存器。比如让 GPIO2 输出高本质是往地址 0x60004004 的某一位写 1。不同芯片的外设基址不同0x3F40… 是初代 ESP32的地址段本书用的 ESP32-S3 外设寄存器在0x6000…段——别拿旧芯片的地址对号入座。ESP-IDF 的驱动函数如gpio_set_level就是封装好的往寄存器写位的动作。你可以不用手写寄存器但要理解函数背后就是寄存器读写。我们写的代码 │ gpio_set_level(GPIO_NUM_2, 1) ▼ 驱动函数算出引脚对应的寄存器地址和位号 ▼ 往地址 0x60004004 的 bit2 写 1 ▼ 硬件电路看到该位为 1 → 输出高电平 3.3V0.7 程序是怎么被记住和被执行的存储Flash 里躺着一串指令我们写代码 → 编译成芯片指令每条指令是一个数字比如0x1100 0x2F00→ 存进Flash掉电也不丢的存储。固件就是这一整串指令。执行CPU 的取指-译码-执行循环开机后 CPU 从 Flash 一条条读指令① 取指Fetch从 Flash 取出下一条指令 ② 译码Decode翻译成要做什么加法搬数据 ③ 执行Execute真的去做 ④ 回到 ①PC 指针指向下一条CPU 里有个叫PC程序计数器的小寄存器记着下一条指令在哪。遇到跳转指令if/循环/函数调用PC 会被改到别的位置。所以程序在跑 CPU 在不停地取指-译码-执行。日志里的Calling app_main()意思是CPU 已经把 PC 指到了我们app_main函数的第一条指令。内存映射Flash、SRAM、外设都住在一张地址表里芯片把所有东西Flash、SRAM、寄存器编上统一的门牌号地址CPU 按地址访问。这就像小区里每栋楼都有门牌号所谓映射就是“给远处仓库里的东西预先编好本地门牌号”——哪怕实物在别处CPU 只要喊门牌号地址就能找到它不必关心它真正住在哪。地址范围住着什么0x3FC8…内置 SRAM草稿纸0x4200…Flash课本代码在这里0x6000…外设寄存器旋钮们0x3C00…外部存储映射窗口Flash 数据 / PSRAM 都从这里映射进来PSRAM 就是大仓库0.8 编译、烧录、运行三件事分别做了什么步骤在做什么底层产物编辑你写人话C源文件 .cpp编译翻译官把 C 变成芯片指令目标文件 .o → 链接 → .elf打包按烧录格式整理成 .bin.bin 文件烧录通过 USB/串口把 .bin 里的字节写进 Flash 的对应地址Flash 里的数据运行芯片复位 → 引导程序启动 → CPU 取指执行芯片在干活烧录的底层过程知道大概即可电脑用 esptool 通过串口和芯片里出厂自带的ROM 引导程序说话让芯片进入下载模式所以有些板子要按 BOOT 键把 .bin 按地址一块块写入 Flash写完校验Hash of data verified复位芯片开始运行。这是有线烧录。产品上线后固件更新通常走网络下载叫OTA空中升级原理与安全要求见第 18 章。开机启动链日志里看到的每一步① ROM 引导芯片出厂自带的程序无法改写 ESP-ROM:esp32s3-20210327 ② 二级引导加载真正的固件IDF 自带 boot: ESP-IDF v6.0.1 2nd stage bootloader ③ 初始化认出 Flash/PSRAM/CPU分配内存 octal_psram: Found 8MB PSRAM device cpu_start: cpu freq: 160000000 Hz ④ 进入我们的程序 main_task: Calling app_main()看到Calling app_main()说明烧录成功、程序真的在跑了。之后日志里再有报错是程序逻辑问题不是烧录问题——这两件事必须分清这也是本书最初闹的误会。0.9 串口芯片和电脑怎么打电话底层原理一高一低一秒传多少位串口UART通信就是一根线轮流变高变低把 0 和 1 一个一个传过去。电脑 ──TX──► RX 芯片 TX发送脚RX接收脚 电脑 ◄──RX── TX 芯片双方约定波特率baud rate每秒传多少位。我们全用115200。可以验算一帧 1 起始位 8 数据位 1 停止位 10 位115200 ÷ 10 每秒约 11520 个字符——发一行 60 字的日志只要几毫秒。传一个字符如字母 A 0x41 0100 0001要按帧来这里0x41十六进制与0100 0001二进制是同一个数的两种写法只是缩写长度不同第 1 章 1.1 会把这两种写法互相换算讲透。空闲(高) 起位 数据位(LSB在前) 停止位 ──────┐┌──────┬──┬──┬──┬──┬──┬──┬──┬──┬──── ││ 0 │ 1 │ 0 │ 0 │ 0 │ 0 │ 1 │ 0 │ 0 │ 1 │ ← 0x41 加上起止位 └┘ ↑ 开始 ↑ 8 个数据位(bit0 先发) ↑ 停止注意数据位的顺序0x41 0b01000001最低位bit0 1先发所以线上依次是1 0 0 0 0 1 0 0——你收到的第一个数据位其实是 bit0而不是肉眼最容易认的最左边那位。收发双方都默认这个顺序才能对上。起始位线从高变低一个下降沿告诉对方要开始了数据位8 个 0/1停止位回到高一个字符结束。这就是串口名字的来历**一个比特接一个比特串行**地传。对比并行8 根线同时传 8 位串口省线但慢。日志就是通过串口喊出来的ESP_LOGI(TAG, L298N 直流电机演示启动)把文字转成字符再按上面的帧格式从 USB 串口发到电脑监视器monitor收到后显示在屏幕上。看日志 读芯片通过串口发来的话。日志只是串口的单向喊话。串口还能与模块GPS、串口屏、AT 指令设备双向收发数据——编程用法见第 14 章。0.10 安全须知动手前的红线先断电再接线改线时电路处于未知状态带电操作可能短路烧件。共地开发板 GND 与驱动板 GND 必须相连0.1 的原理。电源别接反正负极接反电流方向反了芯片/驱动板可能烧毁。别用 GPIO 直接带电机GPIO 只能输出几毫安电机要几百毫安甚至几安培——不是力气小的问题而是电流不够会烧坏引脚输出电路。电机必须经过驱动板第 8 章。5V 别接普通 GPIO输入电路按 3.3V 设计0.3。0.11 遇到问题怎么办底层思路分层定位问题在电源层/接线层/烧录层/程序层哪一层没电、没共地 → 电源/接线层烧不进 → 烧录层烧进了但行为不对 → 程序层。看日志芯片自己会报。绝大多数问题日志直接给出线索。看完整报错报错文本里的函数名、地址都是线索第 11 章教翻译。搜索把报错里最独特的词 esp32搜全世界都有人踩过。0.12 想一想 小测验想一想为什么芯片只用 0 和 1请用晶体管只有通/断两种状态来回答。上升沿和高电平有什么区别看到日志Calling app_main()能说明什么不能说明什么小测验电压的比喻是水位差那么电流的比喻是____。信号从高变低的那一瞬间叫什么A. 上升沿 B. 下降沿 C. 高电平串口里起始位的作用是什么程序被 CPU 执行的三个步骤按顺序是、、____。0.13 本章总结0 和 1 晶体管的通/断芯片全由这种开关组成电平 电压范围3.3V 高、0V 低沿 变化的瞬间时钟 节拍器让所有逻辑统一行动寄存器 能记住数的电路控制硬件就是写寄存器固件 Flash 里的指令CPU 取指-译码-执行串口 一比特一比特传 0/1日志就是通过它喊出来的。下一章我们学写代码的语言 C——它最终会变成这一串串 0 和 1。
延伸阅读

更多相关文章

2026/10/18 15:28:22

无线Mesh组网全攻略:从原理、部署到调优与排障

做网络工程这行十几年,被身边朋友问得最多的一句话是:家里或者公司一个路由器搞不定,怎么办?以前的标准答案是加AP、拉网线,但从这几年开始,越来越多的人会问另一个问题——Mesh怎么组。无线Mesh网络&#…

2026/10/18 15:28:22

Logstash Grok 4.3.0 离线安装与配置避坑指南

简介:logstash-filter-grok-4.3.0.tar.gz 是 Logstash 生态中用于日志解析的 Grok 过滤器插件源码包,面向使用 Elastic Stack 做日志采集、结构化处理与分析的运维及开发人员。Grok 内置大量预定义正则模式,可将 Web 服务器、数据库等非结构化…

2026/10/18 15:28:22

LLM数学复现率仅13.98%:四大断层与工程化破局路径

1. 这不是“AI赢了数学家”,而是“数学验证体系在给大模型出考卷”最近刷到一条标题很抓眼球:“ChatGPT踢到铁板了!能破解千禧数学难题,但论文复现率低至13.98%?”——我第一反应不是点开,而是把手机翻过来…

2026/10/18 16:48:28

STM32F030K6电压电流表:采样校准与避坑

简介:基于STM32F030K6的USB电压电流表完整工程,面向电子爱好者、硬件开发者及USB设备测试人员,解决USB端口电压与电流实时测量问题。项目利用STM32F030K6内置ADC与USB外设实现数据采集与上位机通信,涵盖驱动、采样、显示及交互等完…

2026/10/18 16:48:28

微信小程序闲置交易源码:云开发实现发布浏览下单聊天全闭环

简介:这是一套面向微信小程序开发者与计算机专业学生的闲置物品交易平台源码,基于微信云开发实现,无需自建服务器即可完成部署。项目覆盖完整交易闭环:用户注册登录后,卖家可在发布页上传图片并填写标题、价格、描述上…

2026/10/18 16:48:28

biliTickerBuy 推送通知配置指南:5 步把抢票结果推送到手机

biliTickerBuy 推送通知配置指南:5 步把抢票结果推送到手机 【免费下载链接】biliTickerBuy b站会员购购票辅助工具 项目地址: https://gitcode.com/GitHub_Trending/bi/biliTickerBuy 开票成功的那一刻,程序会立刻开始收尾,你未必还盯…

2026/10/18 16:48:28

gdsdecomp:Godot 逆向工程与 GDScript 反编译工具实操手册

gdsdecomp:Godot 逆向工程与 GDScript 反编译工具实操手册 【免费下载链接】gdsdecomp Godot reverse engineering tools 项目地址: https://gitcode.com/GitHub_Trending/gd/gdsdecomp 手上只有一个发布版游戏的 .pck 或 .apk,却想看它里面的 GD…

2026/10/18 16:48:28

Nacos 2.4.3 服务端部署实战:从单机到集群的落地指南

简介:nacos-server-2.4.3.zip 是面向微服务开发者与运维人员的 Nacos 服务端发行包,对应 2.4.3 版本,可用于搭建服务注册与发现、动态配置管理及服务元数据管理平台,兼容 Spring Cloud、Dubbo、Kubernetes 等主流微服务生态&#…

2026/10/18 16:43:28

电赛历年真题高效刷题指南:从赛题拆解到方案库构建

简介:这份合集面向备战全国大学生电子设计竞赛的高校学生与指导教师,系统整理了1994至2017年间的官方赛题与典型获奖作品,可用于赛前刷题、方案复盘与硬件设计参考。包内共97个文件,以52个doc与37个pdf文档为主,辅以少…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

2026/10/18 0:01:50

金融AI落地指南:从调研报告到技术选型与工程实践

简介:这份PDF报告聚焦2025年金融服务业中国AI现状与趋势,面向金融科技从业者、AI战略规划人员及关注行业数字化转型的研究者,帮助读者把握生成式AI在银行、支付、交易等场景中的落地路径与投资方向。资源包内含1个PDF文件,大小约1…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑