登录/注册

PIC32 UART DMA

更多

在PIC32微控制器上使用UART和DMA(直接内存访问)可以高效传输数据,减轻CPU负担。以下是关键配置步骤和要点:


1. 初始化UART


2. 配置DMA通道


3. 设置传输方向与地址


4. 启动DMA

DCH0CONbits.CHEN = 1;      // 使能通道
DCH0CONbits.CHEDMA = 1;    // 允许硬件触发(事件驱动)

5. 中断处理


关键注意事项

  1. 数据对齐:RAM缓冲区地址需满足DMA对齐要求(通常4字节对齐)。
  2. 环形缓冲:若需循环接收,配置DCH0CSIZ为缓冲区长度,并设置DCH0CONbits.CHMODE = DMA_CH_MODE_CONTINUOUS
  3. 硬件流控:高速通信时使能CTS/RTS引脚(通过UxMODEbits配置)。
  4. 性能优化
    • 设置DMA优先级高于CPU
    • 使用CPU缓存一致寄存器(Cache Coherence)如CHEKRA(若启用缓存)。

示例代码(DMA接收)

char rx_buffer[128] __attribute__((aligned(16)); // 16字节对齐

void init_uart_dma_rx() {
    // UART配置(波特率115200)
    U1BRG = ((PBCLK_HZ / 115200) / 16) - 1;
    U1MODEbits.ON = 1;
    U1STAbits.UTXEN = U1STAbits.URXEN = 1;

    // DMA配置
    DCH0CONbits.CHEN = 0;
    DCH0ECONbits.CHSIRQ = 34; // UART1 RX IRQ(见器件手册)
    DCH0ECONbits.SIRQEN = 1;
    DCH0SSA = (uint32_t)&U1RXREG;
    DCH0DSA = (uint32_t)rx_buffer;
    DCH0SSIZ = 1;
    DCH0DSIZ = sizeof(rx_buffer);
    DCH0CSIZ = 1;
    DCH0CONbits.CHMODE = DMA_CH_MODE_CONTINUOUS; // 循环模式
    DCH0CONbits.CHEN = 1;

    // 中断配置
    IPC9bits.DMA0IP = 6;        // 中断优先级6
    IFS0bits.DMA0IF = 0;        // 清除标志
    IEC0bits.DMA0IE = 1;        // 使能DMA中断
}

以上步骤确保UART数据通过DMA自动存储到RAM,大幅提升系统效率。具体寄存器名称请参考Microchip PIC32系列数据手册中"UART"和"DMA Controller"章节。

USB KEY - MIKROPASCAL PRO FOR PIC32

USB KEY - MIKROPASCAL PRO FOR PIC32

2023-03-28 14:48:51

PIC32

PIC32 - PIC32 Microcontroller Families With USB, CAN and Ethernet - Microchip Technology

2022-11-04 17:22:44

Microchip PIC32 MCU的主要特性及开发应用

Microchip的MIPS®M4K®的32位产品组合提供了高性能微控制器以及开发嵌入式项目所需的所有工具。借助免费软件,低成本开发工具以及16位产品线的引脚/外设兼容性,PIC32 MCU缩短了上市时间,并使您的设计不断发展。P

2021-03-18 16:36:27

PIC32系列参考手册——高/低压检测

电子发烧友网站提供《PIC32系列参考手册——高/低压检测.pdf》资料免费下载

资料下载 李名扬 2023-09-25 11:39:08

PIC32入门指南

PIC32入门指南资料手册免费下载。

资料下载 姚小熊27 2021-06-02 11:31:17

PIC32自举程序

PIC32 器件的自举程序用于升级目标器件上的固件,无需外部编程器或调试器。

资料下载 姚小熊27 2021-04-02 14:13:53

使用PIC32 MCU开发GSM/GPRS/GPS解决方案

本应用笔记将介绍一个使用 PIC32 单片机(MCU)、M2M 电路板和 MEB 共同实现 GSM/GPRS/GPS连接的参考设计。

资料下载 姚小熊27 2021-04-02 13:58:39

使用PIC32 MCU开发低成本无控制器图形解决方案

本应用笔记将介绍以PIC32单片机实现低成本无控制器图形方法的LCC图形板。

资料下载 姚小熊27 2021-04-02 09:57:24

DMA怎么实现PIC32 UART接收?

大家好,我正在尝试用DMA实现PIC32 UART接收,到目前为止,在运行代码时,我没有在myBUFF中接收任何数据,并且当我使用

2020-04-06 08:49:21

PIC32 UART接收中断怎么设置?

大家好,我最近开始使用pic32工作,我试图设置一个UART接收中断,到目前为止,没有人知道为什么感谢代码如下

2020-04-06 07:53:51

PIC32 MZ的EBI/DMA/PMP是否需要使用和声?

我开始了一个新的项目与LCD显示器,我正在考虑使用PIC32 MZ来控制通过DMA和EBI/PMP。关于PIC32 MZ的EBI/

2020-03-09 08:46:11

UART需要使用DMA发送吗 ?

UART需要使用DMA发送吗?

2020-03-07 16:57:28

怎么用PIC32 MX795F512测试UART通信?

你好,我用PIC32 MX795F512测试UART通信。但是,我没有收到任何来自UART的数据。我在

2019-11-11 15:17:58

PIC32 USB入门工具包III-DMA示例是否协调?

您好,有PIC32 USB启动器工具包III的例子来演示使用和声库的DMA吗?有一个PWMLDMA演示,但使用外围库。当我考虑创建一个新的和谐项目或者使用PI

2019-10-25 12:46:06

PIC32中AT命令的响应方式是什么?

您好,我是PIC32的新手,想知道PIC32中AT命令的响应方式。我正在通过uart发送AT命令,需要查看AT命令的响应以进行进一步的处理。请检

2019-09-17 10:05:06
7天热门专题 换一换
相关标签