一路向北lm 发表于 2019-12-26 14:46

【东软载波ESF0654 PDS开发板活动】测试RT-Thread+循环冗余校...

循环冗余校验(CRC)发生器可以执行带可编程多项式设定的 CRC计算,用于对数据传输的完整性和正确性进行校验。支持四个常用的多项式:CRC-CCITT, CRC-8, CRC-16 和 CRC-32
CRC-CCITT: X16+ X12 + X5 +1
CRC-8: X8 +X2 + X +1
CRC-16: X16+ X15 + X2 +1
CRC-32: X32+ X26 + X23 +X22 + X16 + X12+ X11 + X10 +X8 + X7 + X5 +X4 + X2 + X+1支持可编程的种子值
支持对输入数据和 CRC校验值的可编程的反序设定
支持对输入数据和 CRC校验值的可编程的反码设定
支持 8/16/32位数据宽度
8-bit 写模式: 1 个 AHB 时钟周期操作
16-bit 写模式: 2 个 AHB 时钟周期操作
32-bit 写模式: 4 个 AHB 时钟周期操作
支持使用 DMA写数据执行 CRC操作结构框图

一路向北lm 发表于 2019-12-26 14:46

CRC 发生器可以执行带可编程多项式设定的 CRC 运算。多项式操作包括 CRC-CCITT,CRC-8, CRC-16 和 CRC-32。用户可以通过设置 MODE选择 CRC多项式操作模式。操作示例:
1. 通过设置CRC_CR.EN 使能 CRC 发生器
2. CRC 运算初始化设置
a. 通过设置CRC_CR.CHSINV 配置 CRC 校验值反码
b. 通过设置CRC_CR.CHSREV 配置 CRC 校验值位反序
c. 通过设置CRC_CR.DATINV 配置 CRC 写入数据反码
d. 通过设置CRC_CR.DATREV 配置 CRC 写入数据位反序
e. 通过设置CRC_CR.MODE 配置 CRC 校验模式
f. 通过设置CRC_CR.DATLEN 配置 CRC 写入数据长度。
3. 通过设置CRC_CR.RST 执行 CRC 复位, CRC 复位将装载初始种子值到 CRC 运算电路。
4. 写数据到CRC_DATA 寄存器来计算 CRC 校验值。
5. 通过读CRC_CHECKSUM 寄存器来获得 CRC 校验结果 。

一路向北lm 发表于 2019-12-26 14:47

bsp_crc.c
#include "bsp_crc.h"

void crc_module_init(void)
{
        md_crc_init_t h_crc;
        /* Clear crc_handle_t structure */
        memset(&h_crc, 0x0, sizeof(md_crc_init_t));       
        //初始化CRC
md_crc_init_struct(&h_crc);
        md_crc_init(&h_crc);
        //使能CRC
        md_crc_enable(CRC);
}bsp_crc.h
#ifndef _BSP_CRC_H
#define _BSP_CRC_H

#include "md_crc.h"


void crc_module_init(void);


#endif


页: [1]
查看完整版本: 【东软载波ESF0654 PDS开发板活动】测试RT-Thread+循环冗余校...