[AT32F403/403A] AT32F4 支持硬件CRC16吗?谁是否在导一下怎么使用

[复制链接]
4758|23
玫瑰凋零日记 发表于 2026-2-26 19:58 | 显示全部楼层
硬件 CRC16 无需 CPU 参与,快速计算数据校验值,提升通信 / 存储数据完整性校验效率,降低软件开销。
xuanhuanzi 发表于 2026-3-2 10:27 | 显示全部楼层
AT32F4 系列 MCU 的硬件 CRC 外设支持 CRC16,并非仅固定为 CRC32。
暗夜幽灵骑士 发表于 2026-3-17 21:09 | 显示全部楼层
使用硬件CRC16通常需要设置CRC数据寄存器,然后启动CRC计算,最后读取结果。具体的寄存器配置和操作步骤,可以参考AT32F4的参考手册。
深渊之海 发表于 2026-3-29 13:25 | 显示全部楼层

肯定支持啊,这是标配拿个例程瞅一瞅
夜阑风雨 发表于 2026-4-7 08:37 | 显示全部楼层
具体使用方法可以参考AT32F4的数据手册,里面有详细的寄存器配置和示例代码。
未说出口的像你 发表于 2026-4-8 19:44 | 显示全部楼层
具体使用方法,你可以查阅AT32F4的官方参考手册,里面有详细的CRC模块配置和使用示例。
21mengnan 发表于 2026-4-13 19:08 | 显示全部楼层
是的,AT32F4 全系列(如 AT32F403A/407/415/425/437 等)均支持硬件 CRC16。其内置的 CRC 外设可灵活配置多项式、位宽、初始值和输入输出反转,完全满足 CRC16/MODBUS 等常用标准。
EchoInSilence 发表于 2026-4-23 11:24 | 显示全部楼层
呐咯密密 发表于 2025-3-19 15:27
modbus的crc16属于典型应用,肯定是支持的

硬件CRC16支持?我看是32位吧
星辰大海不退缩 发表于 2026-4-23 13:55 | 显示全部楼层
自己软件编写其实也是很快的
xebjz 发表于 2026-6-6 10:35 | 显示全部楼层
#include "wk_crc.h"

void wk_crc_init(void) {
  crm_periph_clock_enable(CRM_CRC_PERIPH_CLOCK, TRUE);    //使能 CRC 外设时钟
  crc_poly_size_set(CRC_POLY_SIZE_16B);                   //设置生成多项式位宽为 16 位
  crc_init_data_set(0xFFFF);                              //设置初始值为 0xFFFF (Modbus RTU 标准)
  crc_poly_value_set(0x8005);                             //设置生成多项式为 0x8005 (Modbus RTU 标准)
  crc_reverse_input_data_set(CRC_REVERSE_INPUT_BY_BYTE);  //设置输入数据反转方式为"按字节反转" (Modbus RTU 标准)
  crc_reverse_output_data_set(CRC_REVERSE_OUTPUT_DATA);   //设置输出数据反转 (Modbus RTU 标准)
  crc_data_reset();                                       //复位 CRC 计算单元,使上述配置生效
}


//使用硬件 CRC 计算字节数组的 Modbus CRC-16 值
uint16_t crc16_modbus_calc(uint8_t *buf, uint16_t len) {
  crc_data_reset();                   // 每次计算前,将CRC寄存器重置为初始值 0xFFFF
  for (uint16_t i = 0; i < len; i++)  // 将数据逐字节写入 CRC 数据寄存器
  {
    (*(uint8_t *)&CRC->dt) = buf[i];  // 只写低8位
  }
  uint16_t result = (uint16_t)CRC->dt;  //读取数据寄存器,获取最终的 CRC 计算结果
  return result;                        //返回低16位有效数据
}

wahahaheihei 发表于 2026-7-9 11:00 | 显示全部楼层
AT32F4 全系硬件 CRC 外设默认只支持标准 CRC32(IEEE 802.3 多项式 0x04C11DB7),硬件模块不原生内置 CRC16 计算单元 **,硬件寄存器无 CRC16 模式切换。
幸福小强 发表于 2026-7-14 09:42 | 显示全部楼层
外设配套寄存器:自定义初始值 IDT、多项式寄存器、输入输出位反转控制,完美支持 Modbus、CCITT、Xmodem 等主流 CRC16 标准。
yiy 发表于 2026-8-10 19:22 | 显示全部楼层
AT32F 全系通用 CRC 外设默认原生模式为 CRC32,但模块开放了多项式位宽、自定义多项式、初始值、输入 / 输出位反转全套可配置寄存器,支持直接用硬件外设实现 CRC16(Modbus、CRC-CCITT 等主流 16 位校验均可),不是纯软件模拟,全程硬件运算加速;部分型号 SPI 外设自带独立 CRC16 校验单元,仅用于 SPI 通信场景。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 在线客服 返回列表 返回顶部
0