找回密码
 立即注册
楼主: HiMrLe

32位8051单片机原理及C语言程序设计视频教程-学习打卡

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 08:20:20
已绑定手机

3

主题

43

回帖

141

积分

注册会员

积分
141
发表于 8 小时前 | 显示全部楼层

打卡第二十二集-CDC串口通信

CDC串口,全称是USB CDC(Communications Device Class,通信设备类)串口。它不是什么新的硬件接口,而是一种通过USB接口虚拟传统物理串口(如COM口)的技术

简单来说,就是让你的电脑把一个通过USB连接的设备(比如单片机开发板)识别成一个普通的串口设备。这样一来,你可以继续使用熟悉的串口调试助手等软件,通过USB线进行高速、便捷的数据通信,而无需任何物理串口线。

💡 它有什么优势?

与传统串口相比,USB CDC串口的主要优势在于:

特性 传统串口 (RS-232) USB CDC 虚拟串口
传输速度 较慢,典型速度 115200 bps 快得多,USB全速模式下可达12 Mbps
接口与连线 专用9针接口,线缆笨重 使用通用的 USB接口和线缆,小巧轻便
供电能力 通常不能供电 可通过USB总线为设备提供电源(通常5V)
即插即用 不支持,需关机连接 支持热插拔,操作系统能自动识别

⚙️ 它是如何工作的?

USB CDC串口在内部实现上主要分为两个部分:

  1. 控制接口:负责"管理"工作。当你在电脑上打开虚拟串口并设置波特率(如115200)时,这个接口就会接收到命令,并通知另一端的设备按此参数进行配置。
  2. 数据接口:负责实际的"数据传输"。它包含两个"端点"(可以理解为数据通道),一个用于设备向电脑发送数据(IN端点),另一个用于电脑向设备发送数据(OUT端点)。

image.png


CDC串口实现不停电下载回顾

在安装好开发环境之后,执行如下操作

1)下载.lib库和头文件

2)新建工程,加载lib库文件

3)调用头文件并初始化USB功能

4)设置工程参数,编译选项等

5)首次下载手动进入HID下载模式下载

6)下载完成等待生成CDC串口号,设置ISP软件参数

执行完如上步骤,再也不需要手动进下载模式了,只要ISP软件点一下下载程序就可以自动烧录。

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 08:20:20
已绑定手机

3

主题

43

回帖

141

积分

注册会员

积分
141
发表于 4 小时前 | 显示全部楼层

打卡第二十三集-看门狗

复位的主要作用是把单片机内部的特殊功能寄存器置于初始状态,使单片机硬件、软件从一个确定的、唯一的起点开始工作。


复位方式

上电复位

低压复位

复位脚复位

看门狗复位

image.png


看门狗

看门狗是一个计数器,它的基本功能是在软件问题和程序跑偏后重启系统。看门狗正常工作时会自动计数,程序进程会定时将其归零。如果系统在某个地方卡住了或者跑了,定时器就会溢出,是系统强制复位。

软件的可靠性一直是一个关键问题。任何使用软件的人都可能遇到电脑死机或程序失控的问题,这种问题在嵌入式系统中也存在。由于单片机抗干扰能力有限,在工业现场仪器仪表中,经常因电压不稳和电弧干扰而死机。在水表、电表无人值守的情况下,系统因干扰无法重启。为了保证系统在受到干扰后能自动恢复正常,看门狗定时器的使用是非常有价值的。


看门狗原理

在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清理看门狗(也叫喂狗),那么看门狗计数器就会溢出从而引起看门狗中断,造成系统复位。所以,在使用有看门狗的芯片时要注意清理看门狗。


image.png

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 08:20:20
已绑定手机

3

主题

43

回帖

141

积分

注册会员

积分
141
发表于 3 小时前 | 显示全部楼层

打卡第二十四集-比较器

image.png

image.png


单片机中的比较器,核心作用就是快速、精准地比较两路模拟电压的大小,并直接输出一个数字信号(0或1)。它就像一个反应极快的“电压裁判”,在很多实时性要求高或需要低功耗监控的场景中,扮演着不可替代的角色。

💡 核心作用

  • 模拟到数字的桥梁:比较器本质上是一个“1位模数转换器(ADC)”。它能将连续的模拟信号(如电压高低)直接转换为单片机可以理解的高低电平。
  • 无需CPU干预的实时监控:与需要软件循环采样和计算的ADC不同,比较器完全由硬件完成比较。一旦电压达到设定阈值,它能立即触发中断或切断PWM信号,响应速度极快。
  • 低功耗守护者:许多单片机的比较器在芯片进入休眠模式时仍能独立工作。这意味着系统可以在几乎不耗电的情况下,时刻监测外部电压变化,一旦异常就唤醒主控芯片,非常适合电池供电的设备。

🚀 典型应用场景

应用场景 实现方式与作用
电池电量监测 将电池电压与参考电压比较,电压过低时输出信号,提示用户充电或触发系统自我保护。
过零检测 在电机控制或调光器中,检测交流电的零点。比较器能快速捕捉这一时刻,帮助单片机精确控制开关或调整功率,提高效率。
构建高精度ADC 配合几个电阻电容,可以利用比较器构建积分型ADC。虽然速度较慢,但分辨率可以做到很高(如12-16位),非常适合测量温度、压力等变化缓慢的信号,成本很低。
故障快速保护 在电机驱动中,若电流过大,比较器能在微秒内输出信号,直接触发硬件关断PWM输出,比软件处理快得多,能有效保护功率电路。
测量电阻/电容 将比较器与电阻、电容构成一个简单的振荡器,其频率会随传感器(如光敏电阻、电容式湿度传感器)的数值变化。单片机只需测量频率,就能换算出物理量,是一种非常巧妙的数字测量方法。

⚙️ 关键优势:为什么不用ADC?

特性 比较器 ADC
响应速度 极快(纳秒至微秒级),纯硬件触发。 较慢(微秒至毫秒级),需软件启动、等待、计算。
系统开销 几乎为零,无需CPU干预即可工作并触发动作。 较高,需CPU启动、读取结果,并执行比较逻辑。
功耗 极低,可在休眠模式下运行,功耗可低至微安级。 相对较高,工作时通常需要唤醒CPU。
典型用途 实时保护、脉冲测量、逻辑判断、事件触发。 精确测量、数据采集、音频处理等。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 08:20:20
已绑定手机

3

主题

43

回帖

141

积分

注册会员

积分
141
发表于 2 小时前 | 显示全部楼层

打卡第二十五集-FLASH模拟EEPROM

关于 IAP 技术,做过 bootloader 的想必很熟悉 (IAP全称 In Application Programming,即应用编程),和 ISP (全称 In System Programming,即系统编程)不同,ISP 一般都是通过专业的调试器或者下载器对单片机内部的 Flash 存储器进程编程(如JTAG等),而 IAP 技术是从结构上将 Flash 储存器映射分为两个或者多个分区,在一个分区中对其他分区进行编程,这个分区通常称为 bootloader


image.png
image.png

一、FLASH 和 EEPROM

1. 狭义 EEPROM

  • 特点按字节擦写。可以单独修改某一个字节,无需擦除整个区域。
  • 寿命:约 100 万次擦写,数据保留 100 年。
  • 容量:通常很小(几十 KB 到几百 KB),很少超过 512 KB。
  • 成本:较高,电路复杂。
  • 典型用途:存储需要频繁修改的用户配置、校准参数、运行日志等。

2. FLASH(属于广义 EEPROM)

  • 特点按块/扇区擦除(不能直接改写单个字节)。写入前必须先擦除(将块内所有位变为 1,即 0xFF),然后再编程。
  • 寿命:擦写次数较少,通常 1 万~10 万次(Nor Flash 约 10 万次,Nand Flash 更少)。
  • 容量:大,从几十 KB 到数 GB。
  • 成本:低,集成度高。
  • 典型用途:存储程序代码(固件)、大容量文件系统。

3. 关键区别表

特性 狭义 EEPROM FLASH(Nor Flash)
擦写单位 字节(Byte) 块/扇区(512 B~ 128 KB)
改写方式 直接写新数据即可 必须先擦除块,再写入
擦写次数 100 万次 1 万~10 万次
速度 写入较慢(ms 级) 擦除慢(ms~s),写入快
成本/容量 贵、小 便宜、大

二、没有独立 EEPROM 时,如何保存掉电数据?

现在的单片机(如 STM32、ESP32、GD32 等)通常只内置 FLASH,不再单独集成 EEPROM。但我们可以用 Flash 模拟 EEPROM 的方法,或者外接存储芯片。

✅ 方法一:使用片内 FLASH 模拟 EEPROM(最常用)

原理:

利用 FLASH 的一个扇区(或几个扇区),通过软件算法实现类似 EEPROM 的“按字节修改”效果。核心思路是:

  • 写入:不直接覆盖原数据,而是将新数据追加写入到扇区中未使用的区域,旧数据标记为无效。
  • 读取:扫描扇区,找到最新版本的有效数据。
  • 垃圾回收:当扇区快写满时,将有效数据拷贝到另一个空闲扇区,然后擦除原扇区。

这就是著名的 “磨损均衡” + “增量存储” 技术,很多厂商提供了现成的库:

  • STM32:EEPROM Emulation 库(基于 FLASH)。
  • 其他 MCU:可以自行实现简易版本,或使用开源库(如 EasyFlash、FlashDB)。

优缺点:

  • ✅ 不增加硬件成本。
  • ✅ 可达到 10 万次以上的有效擦写寿命(通过磨损均衡)。
  • ❌ 需要额外的代码和 RAM 开销。
  • ❌ 写入速度比真正 EEPROM 慢(因为涉及扫描、拷贝)。

示例(伪代码思路):

c

// 写入一个字节(或参数)
void eeprom_write(uint16_t addr, uint8_t data) {
    // 在 FLASH 中找一个空闲位置,写入 {addr, data, 校验}
    // 如果扇区满了,就触发垃圾回收
}

// 读取一个字节
uint8_t eeprom_read(uint16_t addr) {
    // 扫描整个模拟区,找到 addr 对应的最新数据
}

✅ 方法二:使用外部 EEPROM 芯片

如果对擦写寿命要求极高(如每天修改数千次),或者不想写复杂代码,可以外挂一颗 I²C/SPI 接口的 EEPROM(如 AT24Cxx 系列,容量 2Kb~512Kb)。

  • 优点:简单可靠,按字节读写,寿命 100 万次。
  • 缺点:增加 PCB 面积和成本。

✅ 方法三:使用 FRAM(铁电存储器)

FRAM 像 EEPROM 一样非易失,但速度更快(类似 SRAM),擦写次数近乎无限(10¹² 次以上)。常见型号:FM24C04、MB85RCxx。

  • 优点:完美替代 EEPROM,无需模拟。
  • 缺点:价格较贵,货源不如 EEPROM 普遍。

✅ 方法四:优化应用层设计,减少擦写次数

即使没有 EEPROM,你也可以通过软件技巧延长 FLASH 寿命:

  • 数据聚合:将多次修改暂存在 RAM 中,只在掉电前或累计一定次数后写入 FLASH。
  • 利用备份寄存器:部分 MCU(如 STM32)有几十字节的 后备寄存器(由 VBAT 供电),掉电后数据不丢失,可当超小 EEPROM 用。
  • 使用外部 FRAM/EEPROM 如前所述。

三、总结建议

场景 推荐方案
修改次数少(每天 < 10 次),成本敏感 FLASH 模拟 EEPROM(厂商库)
修改频繁(每小时 > 100 次),寿命要求高 外接 EEPROM 或 FRAM
需要极低功耗、简单接口 外接 I²C EEPROM
只有几个字节的参数,且 MCU 有后备寄存器 使用后备寄存器(如 STM32 的 RTC BKP)

最后提醒:如果用 FLASH 模拟 EEPROM,一定要注意掉电保护——在擦除/写入 FLASH 时若突然断电,可能导致数据损坏。常用对策:使用双扇区备份 + 写入完成标志。

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 08:20:20
已绑定手机

3

主题

43

回帖

141

积分

注册会员

积分
141
发表于 1 小时前 | 显示全部楼层

打卡第二十六集-DS18B20温度传感器(单总线)理论分析

DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。DS18B20数字温度传感器接线方便,封装成后可应用于多种场合,如管道式,螺纹式,磁铁吸附式,不锈钢封装式,型号多种多样。主要根据应用场合的不同而改变其外观。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。


①、 独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

② 、测温范围 -55℃~+125℃,固有测温误差(注意,不是分辨率,这里之前是错误的)1℃。

③、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。

④、工作电源: 3.0~5.5V/DC (可以数据线寄生电源)

⑤ 、在使用中不需要任何外围元件

⑥、 测量结果以9~12位数字量方式串行传送


主要功能

温度测量

温度报警

ROM编码

存储器

CRC 校验

精度修改


软件层配置

单总线控制总线描述

事件序列

总线信号

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 08:20:20
已绑定手机

3

主题

43

回帖

141

积分

注册会员

积分
141
发表于 1 小时前 | 显示全部楼层

打卡第二十七集-软件模拟SPI

SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

产生时钟的一侧称为主机,另一侧称为从机。同一时间只有一个主机,但是可以有多个从机。

SPI总线包括4条逻辑线,定义如下:

●MISO:Master input slave output 主机输入,从机输出(数据来自从机);

●MOSI:Master output slave input 主机输出,从机输入(数据来自主机);

●SCLK :Serial Clock 串行时钟信号,由主机产生发送给从机;

●SS:Slave Select 片选信号,由主机发送,以控制与哪个从机通信,通常是低电平有效信号。

image.png


SPI 的通信方式通常有 3 种

单主单从(一个主机设备连接一个从机设备)

互为主从(两个设备连接,设备和互为主机和从机)

单主多从(一个主机设备连接多个从机设备)


SPI数据模式

时钟极性 (CKP/CPOL) 根据硬件制造商的命名规则不同,时钟极性通常写为CKP或CPOL CKOL可以配置为1或0。这意味着可以根据需要将时钟的默认状态(IDLE)设置为高或低。当然具体的配置必须参考设备的数据手册正确设置

▶CKP = 0:时钟空闲IDLE为低电平 0;

▶CKP = 1:时钟空闲IDLE为高电平 1; 时钟相位 (CKE/CPHA) 顾名思义,时钟相位/边沿,也就是采集数据时是在时钟信号的具体相位或者边沿;

▶CPHA = 0:在时钟信号SCK的第一个跳变沿采样;

▶CPHA = 1:在时钟信号SCK的第二个跳变沿采样; ★时钟极性和相位共同决定读取数据的方式,比如信号上升沿读取数据还是信号下降沿读取数据;

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:18
  • 最近打卡:2026-03-31 08:20:20
已绑定手机

3

主题

43

回帖

141

积分

注册会员

积分
141
发表于 1 小时前 | 显示全部楼层

打卡第二十八集-硬件SPI读写FLASH芯片

硬件 SPI 寄存器是单片机中用于配置、控制和监测 SPI 外设的一组内存映射寄存器。通过读写这些寄存器,你可以设置 SPI 的工作模式、波特率、数据位宽、主从模式,并触发数据传输。SPI 外设‌(Serial Peripheral Interface,串行外设接口)是一种由摩托罗拉公司(Motorola)推出的‌高速、全双工、同步串行通信总线协议‌,广泛用于微控制器(MCU)与各种外围设备之间的短距离通信。

image.png


SPI 的核心特点

  • 同步通信‌:由主设备生成时钟信号(SCLK),所有设备按此时钟同步收发数据。
  • 全双工‌:可同时发送和接收数据(通过 MOSI 和 MISO 两条独立数据线)。
  • 主从架构‌:一个主设备控制一个或多个从设备;从设备通过片选信号(CS/SS)被单独选中。
  • 高速传输‌:典型速率从 1 MHz 到超过 100 MHz,远高于 I²C 和 UART。
  • 硬件简单‌:通常只需 4 根信号线,无复杂寻址或应答机制。

SPI 的基本信号线

  • SCLK‌(Serial Clock):主设备产生的时钟信号,同步数据传输。
  • MOSI‌(Master Out, Slave In):主设备输出数据,从设备输入。
  • MISO‌(Master In, Slave Out):从设备输出数据,主设备输入。
  • CS/SS‌(Chip Select / Slave Select):主设备控制,低电平有效,用于选中特定从设备。

注:部分设备可省略 MISO 或 MOSI,实现三线半双工模式,但标准为四线全双工。


SPI 的主要用途

SPI 广泛应用于嵌入式系统中连接以下外设:

  • 存储类‌:EEPROM、Flash(如 SPI Flash)、SD 卡
  • 传感器‌:温度、压力、加速度计、陀螺仪等
  • 转换器‌:ADC(模数转换器)、DAC(数模转换器)
  • 显示驱动‌:LCD、OLED 屏幕
  • 通信模块‌:Wi-Fi、蓝牙模块(如 ESP8266)
  • 其他‌:实时时钟(RTC)、数字信号处理器(DSP)、无线收发芯片等

‌**工作模式(CPOL & CPHA)**‌

SPI 定义了 ‌4 种工作模式‌,由时钟极性(CPOL)和时钟相位(CPHA)组合决定:

模式 CPOL(空闲电平) CPHA(采样边沿) 采样时机 移出时机
0 0(低) 0 第一跳变(上升沿) 第二跳变(下降沿)
1 0(低) 1 第二跳变(下降沿) 第一跳变(上升沿)
2 1(高) 0 第一跳变(下降沿) 第二跳变(上升沿)
3 1(高) 1 第二跳变(上升沿) 第一跳变(下降沿)

主从设备必须配置为‌相同模式‌才能正常通信,具体需参考器件数据手册。


多从机连接方式

  • ‌**独立片选(常规模式)**‌:每个从设备有独立 CS 线,主设备拉低对应 CS 即可通信。最常用,但占用较多 GPIO。
  • ‌**菊花链(Daisy Chain)**‌:所有从设备 CS 接在一起,数据依次传递。节省 CS 线,但延迟增加,且要求从设备支持级联。

优缺点总结

  • 优点‌:
    • 传输速率高
    • 协议简单,开销小
    • 全双工,灵活性强
    • 无地址冲突(从设备无需唯一地址)
  • 缺点‌:
    • 无内置错误校验或应答机制
    • 通信距离短(通常 < 10 cm)
    • 不支持热插拔
    • 多从机时需较多片选线(除非用菊花链或译码器)

典型应用场景

  • STM32、ESP32、树莓派 Pico 等 MCU 与传感器/存储器通信
  • 嵌入式系统中高速数据采集(如 ADC 读取)
  • 固件升级(通过 SPI Flash)
  • 工业控制、汽车电子、物联网设备中的外设互联
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-31 18:29 , Processed in 0.112015 second(s), 74 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表