- 博客(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
原创 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
原创 MCU Timer定时计算案例
项目值定时器输入时钟240 MHz计数频率240 MHz计数周期(每个 tick)4.17 ns自动重装载值 ARR48溢出周期(中断周期)≈ 204 ns溢出频率≈ 4.9 MHz。
2025-11-03 10:27:02
402
原创 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
原创 解决逻辑分析仪 分析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
原创 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
原创 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
LED驱动芯片-【电子元A器件】AW2013W三通道LED驱动器:2I2C兼容接口与0智能1呼吸模式设计及应用3
2025-07-28
C/C++ 代码格式化配置文件结合者 vscode clang-format 使用,在项目根目录下 新建个这个文件
2025-07-23
HardFault 定位方法
2025-04-16
Arm Compiler 5.06 update 7 (build 960) Lin32
2025-03-13
eclipseCDT&&python&&maketools&&arm-compile-tools
2025-03-18
Getting started with Raspberry Pi Pico-series
2025-03-14
Raspberry Pi Pico-series C/C++ SDK
2025-03-14
vscode SSH 连接安卓termux 连接失败 是为啥啊?
2024-09-29
linux上使用arm-none-eabi-gcc 编译器编译.s汇编文件就提示错误
2024-07-24
vscode 写camke 一编辑改动cmake文件就自动弹出out窗口,为啥啊?
2024-04-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅