自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(197)
  • 问答 (1)
  • 收藏
  • 关注

原创 I3C协议介绍

I³C ≠ 简单外设接口I³C ≈ 一条“轻量级系统总线”USB 枚举PCIe 设备发现(简化版)🧩结合 STM32 / GD32 的 I3C 外设寄存器讲驱动📐画 DAA / IBI 时序图🧠I3C 协议栈拆分成状态机🔧分析 Linux I3C 子系统(i3c core)你想从“硬件 / 裸机 / RTOS / Linux”哪个角度继续深入?太好了,这一问正中 I³C 的工程核心🔥下面我就完全站在「MCU 裸机驱动 I3C」的角度,一步一步把驱动工作流程、状态机、关键细节、坑点讲清楚。

2026-01-16 13:58:27 610

原创 I2C和I3C的区别

下面我从几个维度,系统、工程化地对做一次深入对比,偏向角度。

2026-01-16 13:53:51 484

原创 neovim 配置C/C++的环境

gd。

2026-01-16 11:52:19 454

原创 SSH 免密连接服务器

是的,从你提供的记录来看,每次通过 SSH 连接这台服务器时都需要输入密码。这是 SSH 默认的身份验证方式。不过,你可以通过设置来免去每次输入密码的麻烦。

2026-01-13 14:37:37 325

原创 stm32FXX系列MCU汇编启动文件分析

2KB✔ 定义栈 / 堆✔ 建立中断向量表✔ 提供默认中断实现(弱符号)✔ 调用✔ 跳转到startup 文件 = MCU 从“硅片”进入“C 世界”的桥梁✅ 画一张“复位到 main 的时序图”✅ 结合讲 PendSV / SVC✅ 拆解Bootloader → APP 跳转时这个文件如何配合你想往哪个方向继续?

2025-12-17 20:04:20 933

原创 RTOS邮箱介绍

特性邮箱 MailBox单条消息大小4 字节(一般传指针)是否会满不会(覆盖旧消息)是否会丢数据只丢旧数据,不丢新数据适合的场景状态更新 / 高速生产低速消费在你项目中的最佳性⭐⭐⭐⭐⭐(非常贴合你的颜色采集需求)

2025-12-06 15:23:13 819

原创 MCU 内存栈介绍和内存段

名称全称作用注意.data存全局变量(有初值)程序启动时从 Flash 拷贝到 SRAM.bss存全局变量(无初值)启动时自动清零.heapmalloc/new动态内存向上增长.stack函数局部变量、返回地址向下增长Stack_Size最大可用栈空间全系统共用一块函数嵌套越深占用越多你定义的Stack_Size(比如 96KB)是整个系统共享的“总栈空间上限”;每个函数执行时只在这块栈中“借”一点临时空间用;当函数退出,这部分空间会自动释放回去。

2025-11-10 20:20:22 795

原创 MCU 的SPI 关键部分配置注意事项(SPI多机通信时)

片选模式SPI从机是否只在CS低时才接收会不会误收其他设备数据DMA是否会乱搬硬件 CS是不会不会软件 CS否会会你现在碰到的就是软件 CS 模式下的误收问题。想的话,我可以直接给你写一套GD32 SPI 从机 + DMA + GPIO模拟CS + 帧接收状态机的标准框架代码,你照抄就能用。要不我给你整理?🙂。

2025-11-08 18:04:11 725

原创 keil项目生成反汇编程序地址的文件

在Object.axf 文件夹内,执行此命令,或者写个bat脚本。

2025-11-07 11:20:17 155

原创 MCU Timer定时计算案例

项目值定时器输入时钟240 MHz计数频率240 MHz计数周期(每个 tick)4.17 ns自动重装载值 ARR48溢出周期(中断周期)≈ 204 ns溢出频率≈ 4.9 MHz。

2025-11-03 10:27:02 402

原创 电池耗电时间计算

2025-10-22 12:49:19 106

原创 IIC问题总结

2025-10-21 19:35:58 134

原创 keil No Cortex-M Device found in JTAG chain. Please check the JTAG cable and the connected devices

意思是 J-Link 没能在 JTAG/SWD 链路中找到 Cortex-M 设备。既然你说“其他工程都没问题”,那硬件、线缆、J-Link 本身基本可以排除。👉 那就说明问题很可能出在。下面是最常见的几个原因和排查思路(按优先级从高到低)👇。

2025-10-20 13:14:02 1027

原创 GD32待机和深度睡眠模式的区别

对比项深度睡眠 (Deep Sleep)待机 (Standby)1.2V域供电保留关闭SRAM/寄存器保留丢失(除备份SRAM)RTC运行可选(需配置LXTAL)一般保留(备份域供电)外设状态可通过寄存器保留状态唤醒后恢复全部重启,需软件重新初始化唤醒后执行点从睡眠返回点继续执行系统复位,从main()重新启动功耗级别中最低唤醒速度快(µs级)慢(ms级)典型场景飞控系统待机、周期唤醒传感器无人机“关机”状态、RTC定时启动功耗排序唤醒速度排序想“低功耗运行”→Deep Sleep。

2025-10-19 18:20:55 1077

原创 GD32 ACM核 MCU进入低功耗模式,唤醒后需要注意的事,程序如何正常运行??

项目说明对应代码动作⚙️ 程序位置从WFI下一行继续执行无需特殊处理⚡ LDO唤醒时间如果进入低功耗LDO,要加延时延时几百微秒再重启外设🕓 时钟源变化唤醒后默认 IRC16M重新配置 system_clock_config()📡 串口失效因波特率基于系统时钟重新初始化UART你要不要我帮你在你现有的里,插入一段“带时钟恢复 + LDO稳定等待 + 串口恢复”的完整版本?我可以直接给你一份能在 GD32F4 上跑通、唤醒后立即恢复打印的参考代码。

2025-10-18 21:39:15 505

原创 dshot协议数据帧格式

由让电机控制更精准、低延迟;避免模拟 PWM 信号存在的误差、漂移;提供CRC 校验来防止信号误触发。DShot 是一种**单线、单向(也可双向)**的数字协议,通过 MCU 的 GPIO 直接输出定时波形(通常使用 DMA + 定时器输出)。字段位宽说明11 bits油门值或命令码Telemetry1 bit遥测请求标志CRC4 bits校验合计16 bits一帧固定长度是否希望我帮你画一张DShot16 位帧结构图 + 波形时序图(带高低电平比例标注)?这样更直观。

2025-10-15 15:28:48 1263

原创 无人机飞控系统的dshot介绍

协议类型信号精度抗干扰是否数字是否支持双向PWM模拟低弱否否模拟中弱否否DShot数字高强✅[1] MCU控制算法输出油门值↓[2] MCU组装DShot帧(Throttle+CRC)↓[3] MCU用TIM+DMA生成时序波形↓[4] ESC解析DShot帧,得到油门↓[5] ESC内部PWM控制MOS驱动三相↓[6] 电机转速变化↓[7] 若Telemetry=1 → ESC返回转速、电流、电压等问题答案一个电机用几个 IO?

2025-10-13 10:05:45 1132

原创 MCU ADC外设工作原理介绍

GD32 F4XX 系列的 ADC(模数转换器)工作流程可以分为几个关键部分,主要包括采样、转换、存储以及数据读取。

2025-10-12 20:19:56 557 1

原创 SPI Flash 介绍

层级关系芯片 (Chip) -> 块 (Block) -> 扇区 (Sector) -> 页 (Page) -> 字节 (Byte)。最小擦除单位扇区 (Sector, 4KB)。这是最重要的概念。擦除会影响整个扇区,因此在修改数据时必须考虑该扇区内其他数据的保存问题(通常需要“读-改-写”操作)。基本写入单位页 (Page, 256B)。你可以写入1个或多个字节,但不能超过当前页的边界。写入操作只能在已被擦除的单元进行。块 (Block)

2025-10-09 10:01:01 538

原创 无人机系统耗电,低功耗管理问题解决方法(腾讯元宝)

【必做】测量电流:用万用表测出当前关机状态的实际电流,做到心中有数。【优先】修改软件:将关机流程改为:关闭所有外设 -> 配置GPIO状态(输出固定电平或模拟输入)-> 进入STANDBY模式。【核心】检查硬件查看原理图,找到所有在“关机”时仍然带电的芯片(传感器、GPS等)。如果硬件上没有设计电源开关,可以考虑飞线,用一个MOSFET控制给这些芯片供电的3.3V总线,由MCU的GPIO控制。这是改进现有硬件最有效的方法。【长远】优化硬件选型。

2025-10-07 16:12:00 1031 3

原创 无人机系统耗电,低功耗管理问题解决方法(chatgpt)

✅短期改进(软件层)MCU进入 Standby 模式;GPIO 全部配置为模拟输入;关闭所有时钟和外设;RTC 唤醒。✅长期改进(系统层)使用 Load Switch 或 MOS 断电;电源域划分;断掉外设供电;电池电压进入储存电压存放。✏️ 画一份适合无人机飞控系统的“低功耗关机电源控制电路”(MOS管+自保持+按键+MCU控制)💻 提供对应的 STM32F4关机 / 唤醒代码模板要我帮你画那个硬件电源关机电路图吗?(可直接用于你无人机板上)

2025-10-07 16:10:58 1130

原创 FreeRTOS启动以及多任务调度运行原理

SysTick定时器溢出│▼│▼判断是否有任务需要切换?││ │否:返回 是:触发PendSV│▼(保存旧任务、切换TCB、恢复新任务)│▼新任务运行异常名调用时机主要作用SVC调度器启动恢复第一个任务SysTick周期中断更新系统时基、触发调度PendSVSysTick触发真正执行任务切换要不要我接下来再帮你画一个 “FreeRTOS 在 GD32F4XX 上的完整中断优先级图”(包含三个优先级关系 + NVIC 配置方式 + 常见错误原因)?

2025-10-07 16:01:23 972

原创 RT-Thread 移植教程 基于GD32F4XX

这是 RT-Thread 实时操作系统(RTOS)针对 ARM Cortex-M 系列处理器(特别是 M3/M4/M7)编写的上下文切换核心汇编代码。是 RT-Thread 在 ARM Cortex-M 平台上实现多任务的核心。这是 RT-Thread 实时操作系统(RTOS)针对 ARM Cortex-M 系列处理器的 CPU 移植层核心代码。这份代码是 RTOS 内核中与硬件架构紧密耦合的关键部分,其设计和实现直接影响系统的实时性、可靠性和效率。这个文件与之前分析的汇编文件。好的,我们来详细解读。

2025-10-05 21:17:53 765

原创 C语言指针应用的经典案例

2025-10-04 23:58:31 174

原创 解决逻辑分析仪 分析SPI协议错误的原因??

分析SPI协议时候,需要注意MCU/SOC 配置的SPI的采样模式,极性配置,上升沿采样还是下降沿采样等等。

2025-10-04 14:18:28 267

原创 新手freertos 移植教程及注意事项(腾讯元宝)

完成以上步骤后,GD32F450应该能够成功运行FreeRTOS。建议从简单的闪烁LED任务开始测试,逐步添加复杂功能。按照以上步骤逐一检查,就能确保GD32F450的FreeRTOS移植成功!

2025-10-03 00:12:37 941

原创 新手freertos 移植及其注意事项(chatgpt)

在移植 FreeRTOS 到 GD32F450XX 时,特别要注意时钟配置中断优先级任务堆栈大小和FreeRTOSConfig.h 配置。常见的错误大多与硬件配置(如时钟和中断)相关,新手很容易忽视这些细节,因此需要小心调试和验证。移植成功与否的检查是嵌入式开发中至关重要的一步,确保你的移植工作顺利完成,并且系统稳定运行。LED 闪烁测试:最简单的测试方式,验证 FreeRTOS 是否能调度任务。串口输出调试:帮助你查看任务执行的情况,确认系统是否进入空闲模式。检查任务和中断。

2025-10-03 00:10:38 1129

原创 SPI Flash基础知识点 (腾讯元宝版本)

SPI Flash 是一种通过SPI接口进行通信的非易失性存储器。它结合了 SPI 接口的简单性和 Flash 存储器的断电数据保持特性,常用于存储固件、配置文件、日志数据等。SPI: 串行外设接口,一种全双工、同步的串行通信协议。主从模式,通常需要 4 条线:SCLK: 时钟信号,由主机产生。MOSI: 主设备数据输出,从设备数据输入。MISO: 主设备数据输入,从设备数据输出。CS/SS: 片选信号,由主机控制,用于选择从设备。(可选)WP#: 写保护。(可选)HOLD#

2025-10-02 23:47:55 1187

原创 SPI Flash基础知识点 (chatgpt版本)

在嵌入式开发中,使用 SPI Flash 存储数据时,掌握其操作命令、时序要求、存储模式、耐用性限制等知识非常重要。在设计和开发时,要考虑时序控制、电源管理、擦写策略等因素,以确保系统稳定和长期运行。要将GD32 MCU作为主控制器来访问 SPI Flash 并将其作为拓展内存使用,你需要完成几个关键步骤,包括硬件连接、SPI 初始化、Flash 存储的读写操作以及内存管理。通过 SPI 外设访问 Flash 存储器,可以将其用作扩展内存。

2025-10-02 23:46:23 791

原创 GD32 I2C外设详介绍

FLAG(状态位)→ 只表示硬件状态,可以polling查询。INT_FLAG(中断标志位)→ 在中断里用来判断是哪个事件触发的。INT(中断使能)→ 决定是否把事件推送到 NVIC 触发 ISR。发送数据:等TBE(发送缓冲空),写入数据寄存器。接收数据:等RBNE(接收缓冲非空),读数据寄存器。发生错误:判断BERRAERRLOSTARB。要不要我帮你整理一个最小 I2C 主机发送/接收流程(基于这些标志位的 polling 版),你直接能拿来参考?

2025-10-01 20:26:01 1007

原创 嵌入式串口没数据输出 怎么办?

有信号的话,那就是RX TX线接错了,没信号的话那不是串口配置出问题了,就是串口模块坏了。最科学的方法就是先把RX TX接逻辑分析仪看看有信号吗?

2025-09-28 22:46:57 130

原创 I2C设备通信失败,逻辑分析仪采集不到信号,或者从机无应答

驱动了I2C 示波器和逻辑分析仪都采集不到信号。

2025-09-27 15:04:41 386

原创 USB PD协议(chatgpt版本)

USB PD 协议的本质是:👉。

2025-09-15 10:59:11 2411

原创 USB PD协议介绍 (腾讯元宝回答版本)

特性描述核心一套智能的、双向通信的充电协议。基础通过USB-C接口的CC引脚进行协商。最大优势高功率(最高240W)和通用性(打破私有协议壁垒)。关键特性PPS(可编程电源),实现电压微调,效率更高。应用从手机、平板到笔记本电脑的全面快充解决方案,目标是“一线通”。希望这份详细的介绍能帮助您全面了解USB PD协议。它是现代电子设备迈向统一化、高效化供电的关键一步。好的,我们来深入剖析协议的技术内核。这将比一般的介绍更加深入和硬核。USB PD 协议是一个复杂的通信系统,其核心规范由USB-IF。

2025-09-15 10:17:54 2156

原创 电池充电管理芯片 SC8815

SC8815 就是一个双向充电控制器可以给电池充电(从适配器进 → 电池)。也可以给外部设备供电(从电池出 → USB)。你要做的事硬件电路照着典型应用搭建(电池、电源、电感、电阻)。MCU 用 I²C 配置充电/放电参数。MCU 通过 I²C 读取 ADC 数据(电池电压、电流),实现电池管理。利用芯片内置保护功能,保证安全。要不要我帮你整理一个最小使用步骤清单(硬件连接图 + 必须配置的寄存器流程),让你能快速做一个 Demo?你问的这个“检测的啥玩意儿”,其实就是。

2025-09-15 10:15:48 2167

原创 嵌入式电池充电领域 基础知识

您可以把它想象成一个智能的水库系统VBUS:就像是一条外部河流(输入水源)。VBAT:就像是水库本身(存储能量)。SC8815芯片:就像是水库的管理系统(水坝、水泵、阀门)。当河水(VBUS)来时,管理系统会先把河水引去给城市(系统)用水,多余的水则抽到水库(VBAT)里存起来。当河水枯竭时,管理系统就打开闸门,从水库(VBAT)放水来保障城市用水。所以,VBUS和VBAT都是正极,但它们属于两个不同的电源网络(外部输入和电池),而芯片的作用就是在它们之间进行高效、安全、智能的能量转换和管理。

2025-09-15 10:11:26 1122

原创 Hynetek HUSB238

操作流程对你(开发者)来说就是:我的设备最大需要多少电压和电流?(比如12V/1.5A)根据产品尺寸、是否需要大电流(>3A)等,从列表中选择合适的型号(如HUSB238_003DD)。查手册Table 5和Table 6,找到对应12V和1.5A的电阻值(VSET: 10kΩ, ISET: 4.53kΩ)。按照手册的“典型应用电路”图,将HUSB238、PMOS管、电阻、电容搭建起来。将选好的电阻焊到VSET和ISET引脚上。芯片之后就会自动完成所有谈判、供电和保护工作。

2025-09-12 15:44:47 1106

原创 USB3.0 Type C IO介绍

好的,这是一个非常常见但容易混淆的问题。我们来详细拆解一下。

2025-09-12 10:39:36 1341

原创 SC3336 rgb sensor linux

我已经把 带详细中文注释 的 放到画布(Canvas)里,文件名为 Sc3336 注释版(你可以在左侧画布区看到它)。我没有在聊天窗口重复整个代码(代码已在画布中),下面给你一份清晰、分段的代码流程解读与调试要点 — 便于快速理解与定位问题。核心流程概览模块注册 / 初始化(probe)上电/下电控件(V4L2 controls)管理格式与模式启动/停止视频流I2C 读写封装增益映射(关键实现点)传感器 ID 不匹配(read_reg 返回的 id != CHIP_ID):xvclk 频率不一致:

2025-09-08 00:05:13 1356

原创 repo 学习教程

git 管理一个仓库repo 管理很多仓库repo init→ 初始化repo sync→ 拉源码→ 看修改→ 批量执行命令repo 本质还是 git,所以你 git 学得越熟,repo 就越容易。要不要我帮你写一个“小白练手用的 manifest.xml + 步骤脚本”,你直接复制粘贴就能玩?

2025-09-06 21:30:16 1464

嵌入式软件开发-设备分层驱动方法.pdf

嵌入式软件开发-设备分层驱动方法.pdf

2025-09-16

ICM45686-IIC linux 应用层驱动demo

需要加载到内核层驱动才可以

2025-08-13

AW2013-Linux-Driver-example

AW2013-Linux-Driver-example

2025-07-28

LED驱动芯片-【电子元A器件】AW2013W三通道LED驱动器:2I2C兼容接口与0智能1呼吸模式设计及应用3

内容概要:AW2013是一款支持I2C接口的3通道智能LED驱动器,能够为每个LED提供恒流输出,最大电流可达15mA,并支持4级电流调节。它支持直接PWM控制模式和一键编程模式,具有256级PWM调光功能。AW2013还支持淡入淡出效果,适用于手机、手持设备及家电中的LED驱动。其I2C接口兼容1.8V/2.8V/3V电压,最高工作频率为400kHz,默认I2C地址为45h,可通过配置寄存器修改。此外,AW2013内置LDO和振荡器,工作温度范围为-40℃至85℃,采用2mm×2mm的DFN-10L封装。 适合人群:电子工程师、嵌入式开发人员以及对LED驱动器设计有兴趣的技术人员。 使用场景及目标:①用于手机、手持设备及家电中的LED亮度控制;②通过I2C接口实现多通道LED的精确控制;③实现LED的淡入淡出效果及呼吸灯效果;④通过编程实现不同亮度和颜色的变化。 其他说明:AW2013支持两种工作模式:PWM控制模式和一键编程模式。PWM模式下,可以通过设置PWM寄存器来调节亮度;一键编程模式下,可以配置呼吸周期的时间和重复次数。此外,AW2013还提供中断引脚INTN,用于通知主控设备操作完成。寄存器配置灵活,支持多种功能设置,如电流等级、亮度控制、呼吸效果等。文档还提供了详细的封装信息、推荐焊盘布局及回流焊曲线,便于实际应用中的硬件设计。

2025-07-28

C/C++ 代码格式化配置文件结合者 vscode clang-format 使用,在项目根目录下 新建个这个文件

C/C++ 代码格式化配置文件结合者 vscode clang-format 使用,在项目根目录下 新建个这个文件

2025-07-23

MIPI-CS2的资料

MIPI-CS2的资料

2025-05-07

USB-mouse-hid-complete-enum.pcapng

USB HID 类 鼠标 完整的通信数据枚举过程

2025-04-16

USB-mouse-HID-enumeration.pcapng

USB HID 类 鼠标的枚举信息

2025-04-16

HardFault 定位方法

内容概要:本文档详细介绍了ARM Cortex-M系列处理器中HardFault异常的定义、常见原因及其定位方法。HardFault是ARM Cortex-M核的一种硬件异常反馈机制,通常由非法内存访问、堆栈溢出、未定义指令、总线错误、异常处理失败及浮点运算错误等原因引发。文档通过具体案例分析,展示了如何通过半自动和手动方法定位HardFault问题的位置。特别是通过调试工具设置断点、单步执行、检查寄存器值及栈回溯等技术手段,帮助开发者快速找出问题根源。; 适合人群:嵌入式系统开发人员,尤其是从事ARM Cortex-M系列微控制器开发的技术人员。; 使用场景及目标:①帮助开发人员理解HardFault异常的原因及其影响;②提供具体的定位方法,如半自动定位方法和手动定位方法,帮助开发人员快速解决HardFault问题;③通过实际案例演示,提升开发人员的故障排查能力。; 阅读建议:此文档不仅提供了理论知识,还结合了实际案例,建议读者在阅读时结合自己的开发环境进行实践操作,同时参考附录中的手动定位方法,以便更好地掌握HardFault问题的定位技巧。

2025-04-16

hardfault 分析方法

hardfault 分析方法

2025-04-16

树莓派PICO keil example project

树莓派PICO keil example project

2025-04-14

树莓派PICO keil包

树莓派PICO keil包

2025-04-14

树莓派PICO debugprobe 烧录成CMSIS DAP link的固件

树莓派PICO debugprobe 烧录成CMSIS DAP link的固件

2025-04-06

Arm Compiler 5.06 update 7 (build 960) Lin32

Arm Compiler 5.06 update 7 (build 960) Lin32

2025-03-13

keil arm5编译器工程向arm6转变

keil arm5编译器工程向arm6转变

2025-03-13

arm嵌入式编译器,keil使用的,linux版本

arm嵌入式编译器,keil使用的,linux版本

2025-03-12

arm嵌入式编译器windows版本

arm嵌入式编译器windows版本,就是keil所使用的编译器

2025-03-12

eclipseCDT&&python&&maketools&&arm-compile-tools

eclipseCDT&&python&&maketools&&arm-compile-tools

2025-03-18

PICO 开发入门教程 && C/C++ SDK文档

PICO 开发入门教程 && C/C++ SDK文档

2025-03-14

Getting started with Raspberry Pi Pico-series

C/C++ development with Raspberry Pi Pico-series and other Raspberry Pi microcontroller-based boards. 2024-10-15: b6018e-clea

2025-03-14

Raspberry Pi Pico-series C/C++ SDK

Libraries and tools for C/C++ development on Raspberry Pi microcontrollers

2025-03-14

阅读LINUX内核源码的工具

阅读LINUX内核源码的工具

2025-02-07

RGB IR图像同步核心

RGB IR图像同步核心

2025-01-24

uIP协议栈在DSP声信号采集阵列上的应用.pdf

uIP协议栈在DSP声信号采集阵列上的应用

2024-09-30

gcc+makefile你必须懂得前提知识

gcc大概的编译流程

2024-05-02

git 入门学习笔记专对新手

git 入门学习笔记专对新手

2024-04-27

ARM-Keil Studio for VScode externsion

ARM-Keil Studio for VScode externsion

2023-08-17

ARM-常见汇编指令大全

下载这个文件 在VSCODE中直接使用搜索指令就可以查找某条指令的意思了

2023-03-12

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除