芯旺微chipon KF32A156系列 CRC 模块的基本使用

原创扣字不易,转载还请注明源出处

本文主要来讲解一下芯旺微chipon KF32A156系列 CRC 模块的基本使用 ,此次以常用的CRC-16/ MODBUS 多项式规则来说明配置。

简单介绍一下,CRC是什么:循环冗余校验单元(Cyclic Redundancy Check, CRC)可以通过生成多项式计算不同长度
数据的 CRC 校验值。CRC 技术可应用于核实数据传输或者数据存储的正确性和完整性。

这里做一个函数直接配置好对应模式的相关参数,用户如果使用该模式可以直接拿来使用。同时我也将手册上的对应的其他模式的表格粘贴过来先:
在这里插入图片描述
从此表格也可以看出,不同类型的多项式校验主要参数就是这几个:多项式值 、初始值 、 输入反序、 结果反序 、结果异或值 。
不难看出:MODBUS的以上参数一次是:0x80050000、 0xFFFFFFFF、 T、 T、 0x00000000 。
配置程序如下:
里面引入的函数均为库函数。

//要求传入数据为32位的数据地址,数据总长度长度以32位为单位计算得出
uint32_t CRC16_MODBUS_TEST_FAN(uint32_t const *InputDataBuffer, uint16_t InputDataLenth)
{
    uint32_t        i;
    int32_t         j;
    CRC_InitTypeDef CRCInitStruct;

    uint16_t *kpCurVal = (uint16_t *)InputDataBuffer;

    /* Reset and Enable CRC module */
    CRC_Reset();
    CRC_SET_PLN(0x80050000);
    CRC_SET_INITVALUE(0xFFFFFFFF);
    CRC_SET_RXOR(0x00000000);
    CRCInitStruct.m_CalUnitReset  = CRC_CAL_RSET_ENABLE;
    CRCInitStruct.m_InputSize     = CRC_INPUT_SEZE_16;
    CRCInitStruct.m_InputReverse  = CRC_INPUT_REVERSE_ENABLE;
    CRCInitStruct.m_ResultReverse = CRC_RESULT_REVERSE_ENABLE;
    CRC_Configuration(&CRCInitStruct);

    for (i = 0; i < InputDataLenth; i++)     //这个for循环是将数据进行16位拆分传入。
    {
        for (j = 1; j >= 0; j--)
        {
            CRC_INPUT_DATA(*(kpCurVal + j));
        }
        kpCurVal += 2;
    }
    return CRC_GET_RESULT();
}

ok啦,本篇关于CRC的使用就到这里。涉及到的参数不多,主要就是上文提到的那几个参数。

本次更新20230918.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值