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

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

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:22
  • 最近打卡:2026-04-06 10:24:36
已绑定手机

3

主题

54

回帖

171

积分

注册会员

积分
171
发表于 5 天前 | 显示全部楼层

打卡第三十二集-串口EEPROM芯片数据读写

读写器

默认波特率: 115200,8,N,1.(CDC串口可以实现任意波特率)

代码包里有个《31-硬件SPI访问FLASH-PM25LV040-串口2监控》参考

串口命令设置: (字母不区分大小写)

W 0x001234 1234567890 --> 写入操作  十六进制地址  写入内容.

R  0x001234 10        --> 读出操作  十六进制地址  读出字节数.

24C02芯片

24C02 是一款经典的 EEPROM (电可擦可编程只读存储器) 芯片

它本质上是一个2Kbit (256字节) 的小容量、掉电不丢失的存储器,广泛用于单片机系统中保存少量关键数据。

  • 核心特点
    • 接口简单:采用 I²C 总线通信,仅需 2根线(时钟SCL、数据SDA)就能与单片机连接。
    • 存储特性:可单字节或按页(8字节/页)写入,理论擦写寿命高达 100万次,数据可保存 100年
    • 低功耗:工作电压宽(1.8V - 5.5V),待机电流极低(微安级),适合电池供电设备

应用场景

它主要用于需要掉电保存小量配置数据的场合:

  • 参数存储:保存设备的校准系数(如电子秤的零点)、用户设置(音量、亮度)、密码序列号
  • 状态记录:在工业控制中记录设备断电前的工作状态,以便重启后恢复。
  • 数据缓冲:在传感器模块中暂存采集的数据,等待主控读取。
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:22
  • 最近打卡:2026-04-06 10:24:36
已绑定手机

3

主题

54

回帖

171

积分

注册会员

积分
171
发表于 5 天前 | 显示全部楼层

打卡第三十三集-PWM基础

波形表示信号的形状、形式,这个信号可以是波在物理介质上的移动,也可以是其他物理量的抽象表达形式。我们电子行业的波形代指电压在时间基准上的表达形式。

image.png

image.png

image.png

image.png


波形和相关术语

1. 幅值

  • 定义:高电平电压与低电平电压的代数差。
  • 单片机特性
    • 在数字逻辑中,通常等于单片机的IO口供电电压(如 VDDVDD 为 3.3V 或 5V)。
    • 低电平通常接近 0V(GND)。
    • 注意:如果涉及死区或相位差,通常要求两路信号的幅值一致,否则后级驱动电路(如光耦、MOSFET驱动芯片)可能无法正确识别逻辑状态。

2. 正脉宽 / 3. 负脉宽

  • 定义
    • 正脉宽 (t1t1****):高电平持续的时间。
    • 负脉宽 (t2t2****):低电平持续的时间。
  • 单片机实现
    • 在单片机的定时器中,通常通过比较匹配值(Capture/Compare)来控制电平翻转的时刻。
    • PWM模式下,一般只设定周期和占空比,硬件自动生成正负脉宽。

4. 周期 / 5. 频率

  • 定义
    • 周期 (TT**):T=t1+t2T**=t1+t2。
    • 频率:f=1/Tf=**1/**T。
  • 单片机实现
    • 频率由定时器的自动重装载值(ARR, Auto-Reload Register) 和预分频器决定。
    • 公式示例(以STM32为例):fPWM=f定时器时钟(PSC+1)×(ARR+1)fPWM=**(**PSC**+**1**)**×**(**A**RR**+**1**)**f**定时器时钟****。

6. 占空比

  • 定义:Duty=t1T×100%Duty**=**T**t**1******×**100%(通常指高电平时间占周期的百分比)。
  • 单片机实现
    • 比较值(CCR, Capture/Compare Register) 决定。
    • 当定时器计数值 <CCR**<**CCR 时,输出高电平(取决于输出极性配置)。
  • 应用场景
    • 模拟电压:通过RC滤波产生DAC(数模转换)效果。
    • 电机调速:控制MOSFET(金属氧化物半导体场效应晶体管)开关时间,改变电机平均电压。
    • 舵机控制:通过特定周期(如20ms)下改变占空比(通常0.5ms-2.5ms)来定位角度。

7. 死区

  • 定义:在两路互补方波(如上下桥臂驱动信号)中,两路高电平之间的时间差。具体指:一路关断(变为低电平)到另一路开启(变为高电平)之间的时间间隔。
  • 重要性
    • 防止直通:在电机控制或逆变器中,如果上下桥臂同时导通,电源会直接短路。死区时间就是为了给功率管(IGBT/MOSFET)留出“关断”的缓冲时间。
  • 单片机实现
    • 高端单片机(如STM32/GD32的高级定时器)内置死区发生器
    • 你只需配置主输出通道(OCx)和互补通道(OCxN),并设置死区时间寄存器(如DTG),硬件会自动在电平翻转时插入死区。

8. 相位差

  • 定义:两路(或多路)同频率方波,在时间轴上的偏移量。通常用角度(°)或时间(μs)表示。
  • 单片机实现
    • 中心对齐模式:常用于FOC(磁场定向控制)电机控制,通过调整两路PWM的比较值,使其在三角波计数周期的不同点产生跳变,从而实现相位差。
    • 移相控制:在数字电源(LLC谐振变换器)中,通过调整两路PWM的相位来调节能量传输。

总结:单片机中的关联

这些参数在单片机外设(如高级定时器)中是相互耦合的:

  1. 基础配置

    • 设定 频率(周期) 设定 ARR 寄存器。
    • 设定 占空比 设定 CCR 寄存器。
    • 自动生成 正脉宽负脉宽
  2. 高级配置(电机/电源)

    • 配置 死区 用于互补通道。
    • 配置 相位差 用于多路输出或移相全桥。
  3. 幅值

    • 通常由单片机供电决定。如果需要驱动大功率设备(如电机、电磁阀),单片机输出的3.3V/5V幅值信号通常需要通过驱动芯片(如IR2104, DRV系列)进行电平转换和功率放大,才能驱动MOSFET或IGBT(绝缘栅双极型晶体管)。

    PWM(Pulse Width Modulation)控制技术就是对脉冲的宽度进行调制的技术,即通过对一系列脉冲的宽度进行调制,来等效的获得所需要的波形(含形状和幅值)

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:22
  • 最近打卡:2026-04-06 10:24:36
已绑定手机

3

主题

54

回帖

171

积分

注册会员

积分
171
发表于 5 天前 | 显示全部楼层

打卡第三十四集-单通道PWM输出

image.png

image.png

image.png

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:22
  • 最近打卡:2026-04-06 10:24:36
已绑定手机

3

主题

54

回帖

171

积分

注册会员

积分
171
发表于 5 天前 | 显示全部楼层

打卡第三十五集-任意频率和占空比的PWM输出

任意频率和占空比的PWM输出

  • 主时钟频率 fSYSclk=22.1184 MHz=22,118,400 Hz**f**SYSclk****=**22.1184**MHz**=**22**,**118**,**400**Hz**
  • 预分频器寄存器 PSCR 与自动重装载寄存器 ARR 均为 16 位,取值范围:0∼65535065535
  • PWM 频率公式:

fPWM=fSYSclk(PSCR+1)×(ARR+1)fPWM=**(**PSCR**+**1**)**×**(**ARR**+**1**)**f**SYSclk******---

计算步骤

  1. 计算总计数值

Ntotal=(PSCR+1)×(ARR+1)=fSYSclkfPWMNtotal=**(**PSCR**+**1**)**×**(**ARR**+**1**)**=**f**PWM****f**SYSclk******结果可能不是整数,需在后续步骤中调整取整。

  1. 选择 PSCR 与 ARR
    • 尽量使 ARR+1ARR+116 位范围内(≤ 65536)。
    • 常用策略:优先取 PSCRPSCR 较小,让 ARR+1ARR+1 尽量大,以提高占空比分辨率;若 ARR+1ARR+1 超出范围,则增大 PSCRPSCR 进行分频。
    • 最终 ARR+1ARR+1 应为整数,实际输出频率会有微小误差。
  2. 占空比计算

占空比=CCRxARR+1×100%占空比=**ARR**+**1**CCRx****×**100%**其中 CCRx**CCRx** 为比较输出寄存器的值,取值范围 0∼ARR**0**∼**ARR**。


如何使能互补/同相输出?

1.使能ENO寄存器,打开互补输出的通道

2.CCERx寄存器打开比较输出使能

如何设置输出的另一半波形是互补还是同相?

1.CCERx寄存器设置比较输出极性


如何使能互补/同相输出?

1.使能ENO寄存器,打开互补输出的通道

2.CCERx寄存器打开比较输出使能

如何设置输出的另一半波形是互补还是同相?

1.CCERx寄存器设置比较输出极性


单通道的PWM电机正反转调速

1.停止

PWMxP = 低电平

PWMxN = 低电平

2.正转

PWMxP = PWM((不考虑电机死区电压)高电平时间越长,转的越快)

PWMxN = 低电平

3.反转

PWMxP = 低电平

PWMxN = PWM((不考虑电机死区电压)高电平时间越长,转的越快)

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-4-6 22:30 , Processed in 0.112499 second(s), 59 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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