- 博客(140)
- 收藏
- 关注
原创 开关电源:BUCK和BOOST
文章摘要 本文介绍了三种开关电源的工作原理: BUCK降压电路:通过电感限制电流变化速率实现降压,续流二极管防止开关击穿,电容滤波稳定输出。 BOOST升压电路:利用电感电流不可突变特性,结合电容和二极管在开关切换时叠加电压实现升压,需注意电感饱和电流的选择。 电荷泵电路:利用电容电压不突变特性实现正升压(如5V→10V)或负压生成,通过交替开关电容充放电来维持稳定输出。 关键设计要点包括电感/电容参数计算、开关时序控制及元件选型(如Isat、DCR等)。
2025-06-22 23:16:28
1736
原创 恒流源和直流稳压电源 电路
讲解恒流源电路和直流稳压电源电路。恒流源电路讲解内容:低端反馈及其注意事项(负载电阻和三极管和运放的限制)、高端反馈(自激振荡的注意事项和方案二:采用PNP三极管);直流稳压电源:带反馈和不带反馈的两种设计
2025-06-21 15:21:33
3074
原创 运算放大器
讲解运算放大器的相关内容,包括虚短和虚断的重要特性、内部结构;分析同等放大电路、反向放大电路、单电源反相放大电路(两种办法分许)、差分放大电路;讲解电流检测电路:包括单端(低端)检测和(包括注意事项“输入范围”和"vos"的影响)和高端检测(仪表放大结构体)为什么运放输入端都要加电阻
2025-06-20 22:44:12
1209
原创 MOS管和比较器
通过示例讲解比较器的工作特性(发光二极管、红外出水水龙头、温控风扇工作原理);讲解MOS管的知识,包括增强型mos管和耗尽型mos管的基本结构、导通条件;讲解MOS管的开关电路的设计方法以及做电源开关的注意事项、寄生电容和寄生二极管的注意事项和耐压;讲解比较器的输入信号范围和颤振问题。
2025-06-19 23:10:34
1941
原创 二极管、三极管
讲解二极管和三极管的知识,二极管:PN结、基本结构、特性、漏电特性、半波整流特性、全波整流特性、钳位功能、稳压作用;三极管:基本知识内容、开关电路NPN型和PNP型设计注意事项、输出反向功能、基极下拉电阻的重要性、最大耐压
2025-06-18 16:33:09
1128
原创 电阻、电容、电感
讲解电阻电容电感相关知识,电容:特性、相对电压不能突变特性、储能特性、滤波作用、容抗、低通滤波RC和高通滤波CR;电感:特性、注意事项、感抗、低通滤波LR、高通滤波RL;LC低通滤波介绍
2025-06-17 22:54:35
1175
1
原创 FreeRTOS中断管理
一文带你学会freertos中断管理,包括中断的概念,以及为什么使用两套中断api和两套api的罗列,讲解pxHigherPriorityTaskWoken参数和portYIELD_FROM_ISR宏、中断处理拆分以及屏蔽中断的概概念和如何屏蔽,讲解暂定调度器,与其它资源管理机制进行对比
2025-06-16 21:38:08
1313
原创 FreeRTOS定时器
讲解freertos的定时器,包括特性、运行环境(守护任务、回调函数、内部源码实现)、和linux的定时器进行比较,讲解内部是如何去标记定时器的,还有数据传输、相关的操作函数。讲解相关示例:一般使用和定时器防抖
2025-06-14 23:08:55
1616
原创 FreeRTOS任务通知
一文带你学会freertos任务通知,包括特性讲解(特性以及限制、TCB结构体中的存储),相关的函数(分两类:精简版和专业版),以及如何实现轻量级的信号量、轻量级的事件组,还有等待通知和发送通知的源码分析
2025-06-13 23:20:46
1202
1
原创 FreeRTOS事件组
一文带你学会freertos事件组,包括事件组的操作、相关函数(创建、删除、等待、同步点),讲解等待事件和同步点的示例,再讲解内部的实现源码(包括结构体、等待事件、设置事件)
2025-06-12 22:53:12
1201
原创 FreeRTOS互斥量
一文带你学会freertos互斥量,内容包括使用场景、相关的函数(动态/静态创建、删除、释放、获取)、常规使用流程以及和二进制信号量的对比。讲解递归锁的内容和相关的解决方案,包括互斥量的内部实现机制的讲解
2025-06-11 22:01:54
1034
原创 FreeRTOS信号量
一文带你学会freeRTOS信号量,包括信号量的类似(计数型和二进制),信号量的give和take操作,和队列的比较以及相关的创建删除等函数,包括示例讲解。同时深入内部源码实现机制
2025-06-10 22:36:23
1294
原创 FreeRTOS同步和互斥
嵌入式开发中的 FreeRTOS,说明了同步(任务先后顺序依赖)与互斥(任务资源独占)的概念、实现方式及潜在问题。通过模拟报表书写、上厕所、共享串口打印等场景,深入剖析了忙等待、锁机制、任务优先级抢占等现象,并对比展示了队列、事件组、信号量、互斥量与任务通知等同步/互斥机制的特点和适用场景
2025-06-08 20:28:22
996
原创 FreeRTOS任务之深入篇
万字带你深入理解FreeRTOS任务机制,包括tick中断、任务状态(运行、就绪、阻塞、暂停、删除)以及任务状态转换,空闲任务及其钩子函数,任务调度算法(可强占调度和合作调度、时间片轮转、空闲任务得让步策略),以及任务切换时得保存现场操作、任务的切换等内容
2025-06-07 23:06:25
1149
2
原创 FreeRTOS任务之使用篇
带你认识任务的相关操作函数以及基础知识,学会简单使用FreeRTOS中的任务。以FreeRTOS为基础,深入讲解任务的创建与删除方式,涵盖动态创建(xTaskCreate)与静态创建(xTaskCreateStatic)的使用差异、参数说明及其与任务控制块(TCB)的关系。同时,通过实际示例分析任务函数的编写规范、任务优先级的设置、栈空间的管理等关键点,帮助开发者在项目中正确高效地使用FreeRTOS任务机制
2025-05-30 01:50:54
1026
原创 FreeRTOS引入篇
本文主要介绍了单片机程序与RTOS的区别、CPU架构的概念及其重要性,以及堆和栈在程序中的使用。单片机程序类似于单任务服务员,一次只能处理一个任务,而RTOS则像多任务服务员,能够同时处理多个任务,提高系统效率。理解CPU架构对于RTOS的移植、性能优化和驱动开发至关重要。堆是动态分配内存的数据结构,由程序员手动管理,而栈是后进先出的数据结构,由操作系统自动管理,用于存储任务的局部变量和函数参数。堆和栈在内存分配和管理上有不同的特点和用途。
2025-05-19 01:00:00
972
原创 stm32之FLASH
本文系统梳理了STM32F1系列微控制器中的FLASH存储器结构及其工作机制,重点介绍了程序存储器、系统存储器和选项字节的布局与作用。结合官方手册,详细解析了FPEC(FLASH程序/擦除控制器)的寄存器配置,阐述了写保护机制、页擦除流程和编程操作的具体步骤。通过图示与流程讲解,帮助读者深入理解FLASH的擦写原理及其在嵌入式开发中的实际应用
2025-05-14 21:19:56
1574
原创 stm32之PWR、WDG
这篇文档系统介绍了 STM32 的 PWR(电源控制)模块,内容涵盖电源框图、PVD(可编程电压检测器)配置、中断处理流程,以及睡眠、停止、待机三种低功耗模式的原理与实现方法。通过图文并茂的方式,详细讲解了各模式下的寄存器配置要点,并配有完整的示例代码,便于读者快速上手与应用。适用于需要优化系统功耗管理的 STM32 嵌入式开发者,具有较强的实用价值与参考意义。
2025-05-13 21:13:40
1346
1
原创 stm32之BKP备份寄存器和RTC时钟
讲解Unix时间戳、UTC/GMT的概念,以及时间戳转换的相关函数;讲解BKP使用的注意事项和功能;讲解RTC时钟的主要特性、访问流程、典型应用、详细结构、基本结构以及硬件电路涉及还有使用注意事项。通过实验代码来理解BKP和RTC。
2025-05-12 20:39:21
1304
原创 stm32之SPI
详细讲解SPI通信协议:硬件电路、移位、时序基本单位;同时讲解W25Q64的硬件电路、结构,包括写操作和读操作的注意时间。讲解stm32f103的SPI外设:基本结构、传输时序图(主模式全双工连续传输和非连续传输),与软件模拟SPI的波形对比,还有介绍SPI的相关结构体和API函数,带你学会SPI。
2025-05-11 20:41:00
1409
17
原创 stm32之IIC
万字讲解关于stm32f103的IIC,包括I2C的硬件电路、时序基本单位、时序实例。讲解IIC通信外设的框图、基本结构、主机发送和接收。同时讲解IIC相关的结构体和API函数,并采用硬件方式去使用MPU6050
2025-05-10 22:46:37
1464
2
原创 stm32之USART
万文讲解stm32f103串口,讲解USART的基本结构体、数据帧、波特率发上去、数据包(包括数据模式、HEX数据包、文本数据包、以及数据包的接收),同时讲解USART的相关结构体和API函数,实现串口发送+接收吗,HEX数据包收发以及文本数据包收发。此外还涉及FLYMcu串口下载和SRLINK Utility。
2025-05-09 22:24:28
1388
13
原创 stm32之DMA
详细讲解关于stm32f103的DMA直接存储器存取,包括存储器映射、DMA框图、基本结构体介绍、DMA请求内容、数据宽度与对齐、DMA如何进行工作(数据转运和ADC扫描模式)。以及介绍DMA相关的结构体和api函数,包括DMA转运和AD多通道讲解。
2025-05-08 21:36:11
1935
10
原创 stm32之ADC
对ADC模拟-数字转换器进行详细讲解,包括逐次逼近型ADC、ADC基本结构、输入通道、转化模式、触发控制、数据对齐、转换时间、校准、ADC外围电路。同时对ADC的相关结构体和API函数进行介绍,以及ADC单通道和多通道实验
2025-05-07 20:44:30
2358
16
原创 stm32之输出比较OC和输入捕获IC
2万字带你学习stm32输出比较OC、输入捕获IC以及其相关的结构体和API介绍。详细讲解PWM的基本结构体以及易混淆点,同时包括呼吸灯、舵机、直流电机、TIM编码器接口的实验,文章附带相关的实验代码下载。
2025-05-06 21:38:26
1371
18
原创 stm32之TIM定时中断详解
万文带你认识stm32f103的TIM定时器,涵盖通用、普通、高级定时器各部分介绍(触发控制单位、输入捕获单元、输出比较单元、CNT计数器、ARR、PSC灯),并讲解基本使用:包括结构体介绍和基本常用函数介绍。
2025-05-05 15:58:40
3678
24
原创 no source: Error: command-line: #564: cannot open embedded assembler output file
Keil出现“no source“: Error: command-line: #564: cannot open
2025-04-28 23:49:15
728
4
原创 stm32之EXIT外部中断详解
一文带你详细认识中断的处理流程和如何编写中断代码。从stm32f103入手详细讲解中断路径上的3个部件以及中断的流程(AFIO、EXIT、NVIC、CPU)。通过旋转编码器的代码来进一步认识exit外部中断,同时对exit的相关结构体和函数进行讲解。
2025-04-26 23:07:08
2017
16
原创 stm32之GPIO函数详解和上机实验
stm32标准库中,关于GPIO全部函数的介绍以及GPIO结构的讲解。全文提供源代码下载:LED和蜂鸣器介绍和上机实验;光敏传感器的使用介绍:如何通过光敏传感器去控制蜂鸣器;OLED的使用。
2025-04-24 00:14:08
1524
14
原创 stm32之GPIO输入输出讲解
GPIO引脚可配置为数字输入或输出,也支持模拟信号输入。其工作模式包括浮空输入、上拉输入、下拉输入、模拟输入以及不同的输出模式,如开漏输出、推挽输出等。GPIO通过内置的寄存器控制引脚状态,提供了高效的电平控制功能。对于输入模式,GPIO能读取外部信号的电平,用于按钮、传感器等的状态监测;而在输出模式下,GPIO可以驱动LED、蜂鸣器等外部设备。
2025-04-23 03:15:00
1238
10
原创 SPI_Master驱动框架深入分析和实现
本文详细探讨了SPI(Serial Peripheral Interface)传输过程中的数据流动,从基本的SPI传输结构体到实际的传输过程。首先,回顾了SPI传输流程,并以写操作为例,详细介绍了在Linux内核中如何通过SPI控制器进行数据传输。接着,文章分析了SPI控制器驱动中的两种传输方法:旧的transfer方法和新的transfer_one方法,重点剖析了内核中如何利用spi_message和spi_transfer完成数据传输。通过对spidev_write、spidev_sync_write等
2025-04-21 07:00:00
978
原创 SPI接口DAC设备驱动与应用程序开发
本文介绍了基于SPI接口与DAC设备进行通信的驱动与应用程序开发。首先,详细阐述了SPI通信协议在DAC(数字-模拟转换器)中的应用,涉及了SPI设备的基本配置与测试方法。通过内核提供的spidev驱动程序,开发者能够与SPI设备交互,实现数据读取与发送功能。文章深入解析了代码实现,包括如何通过ioctl命令读取设备状态、发送消息和读取数据等操作。同时,还介绍了如何为DAC设备编写驱动程序和设备树配置,确保系统能够与硬件正确通信。
2025-04-14 22:36:04
1471
1
原创 spidev.c:SPI设备驱动的核心实现逻辑
本文以Linux内核的spidev驱动为例,解析SPI设备驱动实现逻辑。spidev_probe通过动态分配spidev_data结构体管理设备号、锁及SPI设备实例,利用device_create创建设备节点。数据传输通过spi_sync同步接口实现用户态与内核缓冲区的交互,spidev_ioctl支持模式、速率等参数的动态配置。
2025-04-09 10:06:31
1121
原创 SPI传输与驱动框架的实现
本文详细介绍了SPI(Serial Peripheral Interface)通信的基本概念、接口函数和驱动框架的实现方法。通过分析内核中spi.h头文件中的简易函数与复杂函数,展示了如何实现同步、异步的SPI数据传输,包括常用的spi_write、spi_read、spi_sync等函数的使用。同时,讲解了spi_transfer结构体在传输中的作用,以及如何通过多个传输任务构建一个完整的SPI事务。通过示例代码,展示了如何在Linux驱动中实现SPI设备的数据传输和如何根据设备树配置SPI控制器与设备。
2025-04-08 00:39:39
1319
原创 SPI通信协议与Linux设备驱动框架解析
SPI是一种高速全双工的同步串行通信协议,采用主从架构,通过MOSI、MISO、SCK和CS四线实现设备间数据交互。其核心特性由时钟极性(CPOL)和相位(CPHA)定义四种工作模式,模式0(上升沿采样)和模式3(高电平初始+上升沿采样)最为常用。在Linux驱动框架中,SPI子系统由控制器(spi_master)和设备(spi_device)构成,驱动层通过spi_driver实现设备绑定与数据传输,关键函数包括旧版transfer(消息队列)和新版transfer_one(单次传输优化)
2025-03-24 08:00:00
1263
原创 24年总结 -- 共赴心中所向往的未来
我又回来了,前阵子忙着期末考试的东西,也是快半个月没更新了,刚好前几天报名了博客之星的评选,也很幸运的入围了,也借此机会来回顾一下关于2024年的个人成长、创作经历等。
2025-01-20 10:46:49
2235
43
原创 PCIe设备MSI/MSI-X中断源码分析与驱动编写
本文详细分析了PCIe设备中断分配过程,特别是如何通过内核代码启用MSI-X和MSI中断。介绍了如何在设备驱动程序中使用pci_alloc_irq_vectors分配中断向量,包括MSI-X、MSI和传统的INTx中断机制。探讨了如何通过__pci_enable_msix_range和__pci_enable_msi_range为设备分配中断向量,处理中断亲和性设置,并确保设备没有重复的中断请求。通过描述如何通过msi_domain_alloc_irqs和irq_domain分配硬件IRQ以及如何激活IRQ
2025-01-06 00:09:36
1581
4
原创 GICv2与GICv3中断架构对比与LPI中断机制分析
本文章深入分析了ARM架构中通用中断控制器(GIC)的两种版本:GICv2与GICv3,重点讨论了其在中断管理方面的不同特点和进化。首先介绍了GICv2中断类型,包括软件触发中断(SGI)、私有外设中断(PPI)和共享外设中断(SPI),并讨论了传统的物理信号线路传递方式。接着,详细分析了GICv3的创新,尤其是如何通过MSI(方式触发SPI中断,并引入了LPI机制,显著提高了虚拟化环境中的中断处理能力。文中还阐述了LPI的触发方式及其在GICv3中如何通过寄存器与表格查找机制实现低延迟的中断传递。
2025-01-02 00:17:21
2568
26
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人