• 资料介绍
    • 1、概述
    • 2、原理
    • 3、实现
    • 4、小结
  • 资料预览
  • 相关推荐
申请入驻 产业图谱

LAT1500 如何通过DMA配合CRC功能

03/06 15:45
497
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

LAT1500 如何通过DMA配合CRC功能

762.19 KB

1、概述

STM32 的 CRC 外设是用来实现 CRC 计算的硬件单元,硬件实现 CRC 计算相对于软件算法实现来说,可以大大提高运算速度。CRC 计算单元具有单个 32 位读/写数据寄存器(CRC_DR)。它用于输入新数据(写访问)并保存以前的 CRC 计算结果(读访问)。当 DMA用作数据传输处理器时,可以极大地减轻 CPU 负荷。本文以 STM32G474 为例,介绍如何通过 DMA 配合 CRC 计算,以供读者参考。

2、原理

2.1. 时间上的可能性

单次 DMA 传输包括两个 AHB 传输阶段,通过 DMA AHB 总线 master 实现:

  • 通过内部当前外设/存储器地址寄存器进行寻址,从外设数据寄存器或存储器单元中读取单个数据(字节、半字或字)。
  • 通过内部当前外设/存储器地址寄存器进行寻址,向外设数据寄存器或存储器单元中写入单个数据(字节、半字或字)。

在 AHB 总线上一次读+写就至少需要 4 个 AHB 时钟周期,这就已经可以满足 CRC 单次计算所需的时间。所以单次 DMA 数据传输之后即可进行下次数据传输(背靠背传输),无需额外等待。

3、实现

这里以 NUCLEO-G474RE 为例进行介绍,这里不对基本操作做过多介绍,只介绍与

DMA 和 CRC 相关的配置部分,详细配置可参考附件。

3.1. 创建工程

  1. 使用 STM32CubeMX 选择 STM32G474RET6 创建工程。然后选择 CRC 外设,点击"Activated"选项。本例的"Input Data Format"参数配置为"Words",其他参数保持默认,这里大家在实际应用中可以根据自己需求进行配置,这里 CRC 外设已经配置完毕。
  2. 找到 DMA 外设。点击"Add"添加 DMA Request,并选择"MemToMem"模式。配置保持默认即可,Mode 设置为"Normal"。要注意"Dst Memory"不要勾选,因为CRC_DR 寄存器的地址是固定的。这里的"Data Width"配置为 Byte、Half Word 或者Word 都可以,本示例中配置为 Word。
  3. 配置 DMA 中断。在"NVIC"里面 Enable "DMA1 channel1 global interrupt",注意这里与你使用的 DMA 相关,本例中使用的是 DMA1。
  4. 然后点击"GENERATE CODE"即可生成代码。

4、小结

本文对通过 DMA 配合 CRC 应用从原理上进行了可行性分析,并且介绍了如何实现这个过程,希望能对读者有所帮助。

资料预览

点赞
收藏
评论
分享
加入交流群
举报

相关推荐