外设驱动与应用
文章平均质量分 93
全面发掘APM32丰富外设的潜力。本专栏聚焦于APM32微控制器的各种外设驱动开发和实际应用案例,包括U盘日志记录、软开关设计、SPI转CAN、I2C EEPROM读写、USB打印机和复合设备实现、DMA与ADC的高效数据采集、以及U8g2图形库驱动显示屏等,提供具体的技术方案和代码参考。
Geehy极海半导体
珠海极海半导体有限公司(简称:极海半导体),是一家致力于开发工业级/车规级微控制器、高性能模拟与混合信号IC及系统级芯片的集成电路设计型企业。极海半导体团队拥有20年集成电路设计经验和嵌入式系统开发能力,可为客户提供核心可靠的芯片产品及方案,实现准确感应、安全传输和实时控制,助力客户在智慧家居、高端消费电子、工业控制、汽车电子、智慧能源以及通信设施等领域的拓展创新。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
APM32芯得 EP.36 | 解锁嵌入式开发的秘密武器:表驱动法让代码更聪明!
本文介绍了嵌入式C语言开发中的表驱动法和状态机技术。表驱动法通过将程序逻辑存储在表格(如数组或结构体数组)中,运行时查表执行,替代传统的if-else判断,使代码更简洁高效。文章阐述了表驱动法的优势:减少代码量、易于维护、执行效率高、扩展性强,并解释了其在嵌入式系统中的重要性。此外,还介绍了状态机的基本概念及其与表驱动法的结合方式。最后,通过APM32F407控制LED状态转换的实例,展示了如何用表驱动法实现状态机,并演示了扩展功能的便捷性(如添加呼吸灯状态)。该技术特别适合资源有限的嵌入式系统开发。原创 2025-09-15 18:11:04 · 748 阅读 · 0 评论 -
APM32芯得 EP.34 | 告别I2C“假死”——APM32F103硬件IIC防锁死设计
本文针对APM32F103硬件IIC常见问题(总线锁死、仲裁丢失等),提出系统性的错误恢复方案:首先通过状态寄存器诊断错误类型,尝试软复位IIC控制器;若无效则采用GPIO模拟时钟脉冲强制释放总线。文章还提供了详细的代码实现,并给出预防性设计建议,包括硬件优化(上拉电阻、ESD保护)和软件防护(超时机制、错误重试)。该方案可有效解决硬件IIC通信中的稳定性问题,适合需要高效可靠IIC通信的开发者参考。原创 2025-09-08 17:19:53 · 942 阅读 · 0 评论 -
APM32芯得 EP.32 | GPIO模拟串口的另一种实现方式?非阻塞+时间戳解析法详解
本文介绍了一种基于时间戳解析法的模拟串口实现方案,适用于嵌入式开发中硬件串口资源不足的情况。该方法利用GPIO引脚和定时器中断,通过记录电平翻转时间点来解析数据,相比传统逐位采样法减少中断次数50%以上。文章详细阐述了硬件配置(APM32F407)、非阻塞设计原理、时间戳解析逻辑(以0x37为例)及实现代码,并对比了两种方法的优缺点。测试表明该方法在9600bps下稳定可靠,同时提出了优化方向(如支持更高波特率)。适用于低速通信场景,为多任务系统提供灵活的低成本串口扩展方案。原创 2025-09-04 09:47:02 · 871 阅读 · 0 评论 -
APM32芯得 EP.31 | APM32F402 & HC-SR04超声测距经典操作:波形输出与滤波
文章摘要:本文介绍了使用APM32F402微控制器处理HC-SR04超声波测距数据时,如何通过波形可视化分析数据抖动问题。重点讲解了三种滤波方法:均值滤波(简单但延迟明显)、指数平滑(内存占用少)和卡尔曼滤波(自适应强但需调参)。通过SerialPlot工具可直观对比不同滤波效果,文章还提供了具体代码实现。作者指出APM32F402的Cortex-M4F内核和FPU单元能高效处理这些算法,建议根据实际需求选择合适滤波方法。最后附带了相关代码资源供读者参考实践。原创 2025-08-29 14:56:24 · 1017 阅读 · 0 评论 -
APM32芯得 EP.30 | 一根USB线搞定高速传输与日志打印
本文介绍了如何利用APM32F402芯片的USB OTG功能实现USBCDC虚拟串口输出调试日志的方法。相比传统UART串口,USBCDC具有带宽高、接线简单、可同时支持WinUSB数据传输等优势。通过将设备配置为USB复合设备,可实现一根USB线同时传输数据和输出日志。文章详细说明了printf重定向的实现步骤,包括初始化USBCDC、修改fputc函数、添加缓冲区机制等关键代码。这种方案能有效节省硬件资源,简化调试流程,特别适合数据采集设备等需要同时处理高速数据传输和实时调试的应用场景。原创 2025-08-21 11:29:22 · 853 阅读 · 0 评论 -
APM32芯得 EP.29 | 基于APM32F103的USB键盘与虚拟串口复合设备配置详解
本文介绍了基于APM32F103芯片实现USB复合设备(HID键盘+CDC虚拟串口)的配置方法。主要内容包括:1)修改USB设备描述符和配置描述符,将设备类别设为复合设备;2)调整USB端点缓存地址分配;3)增加HID键盘报告描述符;4)在初始化代码中集成HID配置。通过测试验证,该方案成功实现了键盘输入和串口通信功能同时工作,为开发者提供了USB复合设备开发的参考实例。文中详细说明了描述符各字段的配置含义,并提供了完整的代码实现思路。原创 2025-08-19 17:56:48 · 1208 阅读 · 0 评论 -
APM32芯得 EP.26 | 基于APM32F411移植U8g2驱动OLED完整教程
本文介绍了在APM32F411TINY开发板上移植U8g2图形库驱动0.96寸OLED屏幕的过程。作者基于极海半导体官方SDK中的I2C示例工程,通过添加U8g2源码并进行必要的裁剪和适配,实现了对OLED屏幕的控制。重点内容包括:I2C初始化及发送函数修改、U8g2库文件精简、延时函数添加以及u8x8_byte_hw_i2c接口函数实现。最终成功在开发板上运行了U8g2图形库,可进行图形显示功能开发。该移植方案为APM32F411系列MCU的显示应用提供了参考实现。原创 2025-07-28 10:06:04 · 1008 阅读 · 0 评论 -
芯得EP.25 | 使用IIC的DMA模式高效驱动OLED,实现流畅动画显示
本文介绍了使用IIC DMA方式驱动0.96寸OLED屏(SSD1306芯片)的方法。通过配置APM32E103的I2C1和DMA1通道6,实现从内存到外设的数据传输。重点包括:1)修改OLED地址模式为水平模式,减少命令数据量;2)初始化IIC和DMA,设置DMA传输方向为外设作为目标地址;3)实现全屏刷新函数,通过DMA一次性传输1024字节显存数据。最后通过马里奥动画演示了刷屏效果,相比传统方式可大幅节省CPU时间。文中还提供了位图取模工具的使用方法和动画实现的具体代码。原创 2025-07-21 09:27:39 · 1112 阅读 · 0 评论 -
芯得EP.22 | 延长电池寿命的关键? 精通APM32的Standby低功耗模式
本文介绍了APM32F103系列MCU的三种低功耗模式:睡眠模式(5.2~21.5mA)、停止模式(20uA)和待机模式(4uA),重点分析了待机模式的实现方法。通过WKUP引脚上升沿或RTC闹钟两种方式唤醒待机模式,详细说明了硬件配置和软件实现流程,包括RTC初始化、中断处理和主程序逻辑。测试结果表明,待机模式功耗仅3uA,但数据会丢失,唤醒后程序需从头执行。文章还指出了WKUP引脚使用时的注意事项,为低功耗应用开发提供了实用参考。原创 2025-07-07 17:05:30 · 1028 阅读 · 0 评论 -
APM32芯得 EP.20 | 国产电机预驱GHD3440有多香?完整应用电路与替换心得分享
本文介绍极海GHD3440预驱芯片应用经验。该三相栅极驱动IC兼容N沟道VDMOS/IGBT,具有250ns死区时间、欠压保护等特性,适用于无刷/有刷电机驱动。文章详细解析了芯片参数、典型电路及自举电容/栅极电阻选型要点,强调PCB布局需缩短大电流路径、优化滤波电容位置。特别指出自举电容大小影响充电速度与纹波,驱动电阻值关系开关损耗与EMI性能。原创 2025-07-02 10:27:41 · 1036 阅读 · 0 评论 -
APM32芯得 EP.19 | 设备离线无法调试?教你用APM32和U盘打造一个永不丢失的“黑匣子”
本文介绍了基于APM32F407xx MCU实现离线系统日志存储的方案,通过OTG Host接口连接U盘,结合FatFs文件系统和RTC实时时钟,实现带时间戳的日志记录功能。主要内容包括:1. 系统设计:采用U盘存储日志,避免频繁读写板载存储器;2. 关键外设配置:详细说明OTG Host、RTC、定时器及FatFs的初始化过程;3. 功能实现:自动创建日期文件夹、每秒记录数据、存储空间管理(超过90%时删除最早日志);4. 验证结果:展示了实际运行时的日志记录过程和U盘文件生成效果。原创 2025-07-01 11:18:18 · 822 阅读 · 0 评论 -
APM32芯得 EP.17 | 基于APM32E103 SPI转CAN芯片MCP2515移植测试
本文分享了APM32E103系列使用MCP2515实现CAN通信的经验。文章详细介绍了将SPI转CAN的MCP2515模块移植到APM32平台的步骤,包括SPI配置、GPIO初始化、中断设置和寄存器配置,并演示了环回模式下的收发测试。APM32E103支持双CAN接口,最大波特率1Mbit/s,而MCP2515扩展了SPI转CAN功能,适用于需要多个CAN接口的场景。文中提供了完整的初始化代码和测试方法原创 2025-06-27 11:35:29 · 595 阅读 · 0 评论 -
APM32芯得 EP.15 | 基于APM32F411的DMA_ADC Handler模式分析及解决
本文分析了APM32F411芯片ADC采集过程中的中断配置问题。在使用DMA_ADC例程时,发现手册要求配置ADC中断,但实际无需中断也能完成连续转换采集。通过复现官方例程发现,当启用ADC中断但未定义中断服务函数时,系统会不断进入默认中断处理程序,导致程序在Handler模式和线程模式间反复切换,最终卡死在未处理的ADC中断中。文章详细解读了DFSR寄存器状态和启动文件中的中断向量表机制,指出问题根源在于未处理中断服务函数引发的死循环现象。原创 2025-06-25 09:45:19 · 980 阅读 · 0 评论 -
APM32芯得 EP.10 | 基于APM32F411控制的一个软开关电路设计分享
本文介绍了一种用于电子产品的软开关电路设计,通过按键控制系统的供电开启与关断。该电路采用APM32F411 MCU控制电源芯片的使能引脚,实现长按开机、按键松开保持供电、长按关机的功能。硬件部分通过PMOS和NMOS管组合,实现系统断电时按键触发供电、系统运行后MCU锁定电源的状态切换。软件部分提供GPIO控制和按键检测代码示例,支持检测长按动作执行关机操作。该设计已通过实物测试验证,适用于穿戴设备等需要软开关控制的电子产品。原创 2025-06-10 17:22:48 · 2020 阅读 · 0 评论 -
APM32芯得 EP.09 | APM32F411在RT-Thread系统下移植LVGL-8.3
本文详细介绍了在APM32F411微控制器上基于RT-Thread系统移植LVGL轻量级图形库的全过程。重点包括:1)LVGL特性简介与资源准备;2)工程配置中C99模式设置及栈空间调整;3)关键文件修改(显示接口、RT-Thread适配层及触摸驱动);4)三种显示缓冲方案选择与Demo测试。最终实现日历应用演示,并强调移植前需确保LCD/触摸驱动正常。原创 2025-06-10 09:28:50 · 762 阅读 · 0 评论 -
APM32芯得 EP.07 | 探索使用以太网(ETH),搭建一个简单的本地HTTP服务器
本文分享基于APM32系列芯片的ETH模块HTTP服务实现方法。文章详细介绍了HTTP协议特点、LWIP1.4.1的轻量级HTTP服务实现,以及嵌入式Web服务器搭建步骤:1)移植LWIP库;2)使用makefsdata工具转换HTML文件;3)编写httpd_cgi_ssi.c实现SSI和CGI功能,包括ADC数据采集和LED控制;4)配置开发板静态IP地址。实验现象展示了通过网页访问开发板IP地址,实现LED控制和ADC数据采集功能。原创 2025-06-03 16:56:50 · 806 阅读 · 0 评论 -
APM32芯得 EP.02 | 基于APM32E103的USB Printer实现方案
本文介绍了如何基于极海APM32E10x SDK中的CDC例程修改实现USB打印机设备功能。主要步骤包括:1)修改描述符,将设备类从CDC 0x02改为Printer 0x07;2)实现打印机类特殊请求如GET_DEVICE_ID;3)在OUT端点处理函数中添加数据接收功能。通过调整配置描述符、端点描述符,并添加打印机类请求处理,最终成功枚举出"打印支持"设备,实现数据接收功能。文中还推荐了USB调试工具和参考资料,为USB打印机开发提供了实用指导。<|end▁of▁sentenc原创 2025-05-21 18:25:45 · 847 阅读 · 0 评论
分享