- 博客(11)
- 资源 (3)
- 收藏
- 关注
原创 HC32F460 DMA的链式传输(SPI从机+DMA发送/接收)
本文介绍了SPI从机模式下使用DMA进行数据收发的方法。在接收方面,由于SPI缺乏接收超时中断机制,采用片选信号(CS)上升沿中断作为接收完成判断依据,通过中断服务程序获取接收数据长度并重置DMA通道。在发送方面,针对主机控制发送时序的特点,提出通过协议协商方式确保数据正确性:主机先发送命令帧,从机准备数据后清空寄存器(需关闭再启用SPI外设),待主机正式读取时再通过DMA发送正确数据。文中提供了片选中断配置、中断处理函数及从机数据加载的关键代码实现。
2025-12-16 17:48:21
358
原创 HC32F460 DMA的链式传输(SPI主机+DMA发送/接收)
本文介绍了SPI主机模式下使用DMA进行数据传输的实现方法。发送部分与串口DMA发送类似,但需注意片选信号(CS)的正确控制。接收部分与发送同步进行,利用已知数据长度预先配置接收DMA参数,实现自动接收。代码示例展示了单字节和多字节传输的处理逻辑,包括等待总线空闲、DMA参数配置、片选控制等关键步骤,同时提供了发送和接收的整合实现方案。通过DMA机制可有效提高SPI通信效率,减少CPU干预。
2025-12-16 17:28:04
127
原创 HC32F460 DMA的链式传输(串口不定长接收)
摘要:本文介绍了一种基于DMA链表传输的串口不定长数据接收方案。通过配置DMA描述符实现自动重载,避免了直接操作DMA通道使能位带来的原子操作冲突。方案采用链表传输方式,在传输完成后自动重载配置,无需手动清除或重新使能DMA通道。文中提供了DMA描述符初始化、DMA配置及串口接收中断处理的代码实现,其中串口超时中断仅需更新DMA目的地址和传输长度即可开始下一次接收,提高了系统可靠性。该方案有效解决了传统DMA接收方式中的并发访问和中断嵌套问题。
2025-11-28 17:32:41
235
原创 HC32F460 DMA的链式传输(串口发送)
摘要:本文分析了串口DMA传输中的原子操作风险及解决方案。采用链表描述符管理DMA传输可避免寄存器操作冲突,但需解决发送完成后的停止问题。通过将DMA目的地址设为临时地址实现可靠停止,并使用软件触发方式启动传输。给出了DMA描述符配置、初始化和串口发送的具体实现代码,确保传输过程可控且高效。该方法既避免了操作CHEN位的风险,又实现了DMA传输的自动启动和可靠停止。
2025-11-28 17:28:57
267
原创 HC32F460 DMA的链式传输(应用背景)
摘要:针对F460芯片DMA_CHEN寄存器非原子性操作导致的状态不一致问题,提出采用DMA连锁传输机制优化方案。该方法通过首次配置后仅一次使能DMA通道,后续通过链表自动切换缓冲区,避免频繁操作DMA_CHEN位。文中提供包含6种DMA通信方式的参考DEMO,采用三层架构实现多路DMA并发工作,测试表明该方案能有效提升系统稳定性。DEMO包含串口和SPI主从收发测试,支持6路DMA通道同时运行。
2025-11-26 17:20:04
249
原创 HC32L136 零成本降低OPA失调电压影响
MCU内部的运放的失调电压,在测量一些外部信号时,会对测量精度产生影响。本文主要是介绍如何减小这些影响。
2024-11-18 21:47:54
588
原创 基于小华HC32F4A0 + EXMC+DMA的LVGL移植实例(二)
这个接口一定要注意执行效率,在处理器性能已经固定的情况下,显示的流畅度主要取决于这个函数的执行效率,所以我这里也是利用了小华HC32F4A0特有的AOS功能,配合EXMC+DMA,实现了高效率的刷屏。在一直过程中,首要工作还是要搞清楚LVGL的基本框架,前期并不需要太深入研究LVGL内部实现,需要了解如何将显示设备与输入设备注册到LVGL的框架内。2、触摸设备,要实现触摸坐标获取的函数,通知LVGL当前用户的输入动作,这里使用芯片内部硬件I2C,可以快速的读取坐标,且不需要MCU过多参与。
2024-11-18 01:09:34
831
原创 基于小华HC32F4A0 + EXMC+DMA的LVGL移植实例(一)
(Light and Versatile Graphics Library)是一个用于嵌入式系统的轻量级图形用户界面(GUI)库。它旨在帮助开发者在资源受限的设备上创建复杂的用户界面,如微控制器、单片机等。LVGL 特别适合应用于需要显示图形界面的小型设备,如智能手表、智能家居设备、工业控制面板等。
2024-11-14 19:51:16
1997
3
原创 ARM Cortex-M0 内核的 Lockup 状态
Lockup 比 Hard Fault 更为严重,因为后者可以通过软件异常处理机制来解决,而前者则表明处理器已陷入无法通过软件恢复的状态,往往需要硬件复位才能使系统恢复正常。是指处理器进入了一个无法通过软件恢复的状态。Hard Fault 是在执行过程中遇到无法处理的异常或错误时发生的。
2024-08-01 14:12:07
1848
HC32F460 DMA+串口收发+SPI主机收发+SPI从机收发 测试代码
2025-12-16
hc32f4a0-ddl-freertos-lwip(HC32F4A0 LAN8720 LWIP PING test).zip
2024-12-17
HC32F4A0-v2.2.0-LittleVgl-8.3-1111.zip, 基于HC32F4A0的LVGL8.3工程
2024-11-14
适用单片机的正弦信号滤波算法
2020-12-01
SPWM_Demo.rar
2021-09-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅