0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

瑞萨RA MCU中CRC模块的使用方法

瑞萨MCU小百科 来源:瑞萨MCU小百科 作者:瑞萨MCU小百科 2023-12-07 10:23 次阅读

CRC(Cyclic Redundancy Check),即循环冗余校验码CRC是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

常用CRC有以下多种:

7e68c2d2-949f-11ee-939d-92fbcf53809c.jpg

点击查看大图

网络上关于CRC基础原理的内容比较多,可以搜索关键词“循环冗余校验”进行查询。

瑞萨RA MCU中有硬件CRC计算单元,采用固定的多项式发生器来计算8位或者32位数据的CRC校验值,对数据传输或数据存储的一致性、完整性进行验证。这篇文章重点介绍RA MCU中的CRC模块和使用方法。

RA MCU中的CRC 计算单元规格如下:

7e84d8f0-949f-11ee-939d-92fbcf53809c.jpg

点击查看大图

注1. 该函数不能划分CRC计算中使用的数据。以8位或32位为单位写入数据。

CRC 计算单元框图如下:

7e979d50-949f-11ee-939d-92fbcf53809c.png

那么接下来就是如何使用了,打开工程中的configuration.xlm文件,在Stacks窗口中,可以通过“New Stack → Monitoring → CRC (r_crc)”添加该模块。该模块的属性窗口如下:

7ea4f504-949f-11ee-939d-92fbcf53809c.jpg

点击查看大图

在应用程序中使用CRC模块的基本例程如下:

void crc_example ()
{
uint32_t length;
uint32_t uint8_calculated_value;
length = sizeof(g_data_8bit) / sizeof(g_data_8bit[0]);
crc_input_t example_input =
{
.p_input_buffer = g_data_8bit,
.num_bytes = length,
.crc_seed = 0,
};
/* Open CRC module with 8 bit polynomial */
R_CRC_Open(&crc_ctrl, &g_crc_test_cfg);
/* 8-bit CRC calculation */
R_CRC_Calculate(&crc_ctrl, &example_input, &uint8_calculated_value);
}

● CRC监听功能注

另外CRC单元还具有监听功能 ,可以监视指定 I/O 寄存器地址的读取和写入,并自动对寄存器地址读取和写入的数据进行CRC计算。不是对数据块调用 R_CRC_Calculate,而是调用 R_CRC_SnoopEnable 来开始监视读/写,并使用 R_CRC_CalculatedValueGet 来获取当前CRC。

请注意,监听模式仅适用于SCI上的发送/接收操作。

注:并非所有RA MCU的CRC单元都有监听功能,RA2A1、RA2L1、RA2E1、RA2E2、RA4M1

、RA4W1、RA6M1、RA6M2、RA6M3、RA6T1、RA6T2的CRC单元有监听功能,而RA4M2、RA4M3、RA4T1、RA4E1、RA4E2、RA6M4、RA6M5、RA6T3、RA6E1、RA6E2的CRC单元没有监听功能,具体请参考各MCU的硬件手册。

以下参考代码展示了CRC监听操作:

void crc_snoop_example ()
{
/* Open CRC module with 8 bit polynomial */
R_CRC_Open(&crc_ctrl, &g_crc_test_cfg);
/* Open SCI Driver */
/* Configure Snoop address and enable snoop mode */
R_CRC_SnoopEnable(&crc_ctrl, 0);
/* Perfrom SCI read/Write operation depending on the SCI snoop address configure */
/* Read CRC value */
R_CRC_CalculatedValueGet(&crc_ctrl, &g_crc_buff);
}

在使用CRC32多项式函数时,CRC模块会产生与流行的在线CRC32计算器相同的结果,但请务必记住一些要点:

● 在线CRC32计算器允许输入任意数量的字节。而FSP CRC32 API函数使用32位。这意味着在线计算时必须“填充”为32位。

● 在线CRC32计算器通常会先对输出取反,然后再将其呈现为结果。如果需要,由应用程序决定是否包含此步骤。

● 在线CRC32计算器和R_CRC模块API(CRC32 多项式)都需要使用种子值 0xFFFFFFFF。

● 确保R_CRC CRC32的位方向设置为LSB,并且选择了CRC32而不是CRC32C。

● 一些在线CRC工具将最终结果与0xFFFFFFFF进行异或。

瑞萨RA MCU全系列产品都具有CRC外设(注意,是全系列都有), 对CRC的计算提供硬件支持,为应用程序节省了代码空间。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16018

    浏览量

    343639
  • 瑞萨
    +关注

    关注

    32

    文章

    22214

    浏览量

    84915
  • crc
    crc
    +关注

    关注

    0

    文章

    191

    浏览量

    29195
  • 数据通信
    +关注

    关注

    2

    文章

    396

    浏览量

    33521
  • 循环冗余校验

    关注

    0

    文章

    7

    浏览量

    6495

原文标题:RA MCU的循环冗余校验(CRC)

文章出处:【微信号:瑞萨MCU小百科,微信公众号:瑞萨MCU小百科】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    电子推出采用自研RISC-V CPU内核的通用32位MCU

    )——R9A02G021。尽管多家MCU供应商最近加入了投资联盟以推动RISC-V产品的开发,但已独立设计并测试了一款全新RISC-V内核——该内核现已在商用产品实现应用,并可在
    发表于 03-30 22:08

    RA2L1:使用CLKOUT给MCU CAN模块提供时钟

    RA2L1:使用CLKOUT给MCU CAN模块提供时钟
    的头像 发表于 11-02 16:27 362次阅读
    <b class='flag-5'>RA</b>2L1:使用CLKOUT给<b class='flag-5'>MCU</b> CAN<b class='flag-5'>模块</b>提供时钟

    AT32 MCU Printf的功能使用方法

    AT32 MCU Printf的功能使用方法
    的头像 发表于 10-27 09:27 453次阅读
    AT32 <b class='flag-5'>MCU</b> Printf的功能<b class='flag-5'>使用方法</b>

    RA MCU CANFD在FSP中的配置详解

    在瑞萨RA系列MCU产品中,目前RA4E2、RA4T1、RA6E2、RA6T2和
    的头像 发表于 10-20 14:46 629次阅读
    <b class='flag-5'>RA</b> <b class='flag-5'>MCU</b> CANFD在FSP中的配置详解

    RAMCU创意氛围赛】基于RA6M5的电子墨水屏微信信息站

    显示设备。它适合作为本创意的显示器件。 电子RA6M5芯片是32位高性能微控制器(MCU)产品。它具有支持TrustZone的高性能Arm®Cortex®-M33内核。结合片内
    发表于 08-28 04:06

    瑞萨MCU RA6T2的16位模数转换器操作 [4] 配置RA6T2 ADC模块 (1)

    2 配置RA6T2 ADC模块 RA6T2 MCU包含两个噪声整形SAR型A/D转换器单元,二者采用混合式架构,兼具SAR型和ΔΣ调制型的特性。 R
    的头像 发表于 07-24 17:45 647次阅读
    瑞萨<b class='flag-5'>MCU</b> <b class='flag-5'>RA</b>6T2的16位模数转换器操作 [4] 配置<b class='flag-5'>RA</b>6T2 ADC<b class='flag-5'>模块</b> (1)

    Ra-01SC/Ra-01SCH模组驱动例程使用方法

    本文档主要介绍Ra-01SC/Ra-01SCH模组驱动例程使用方法
    的头像 发表于 06-19 10:06 1358次阅读
    <b class='flag-5'>Ra</b>-01SC/<b class='flag-5'>Ra</b>-01SCH模组驱动例程<b class='flag-5'>使用方法</b>

    【野火】RA MCU创意氛围赛+ 基于CAN总线的UDS诊断升级MCU /bootloader/UDS诊断/14229/15765

    可以之前RenesasRA4M2和STM32 CAN通信 定时器配置 OSI网络需要获取毫秒系统时间,判断数据传输是否超时 SD卡配置 后面会介绍,升级文件放在SD卡。 具体可
    发表于 06-13 01:26

    FPB-RA6E1快速原型板】使用TinyMaix识别手写数字

    /redefining-low-level-library-functions-to-enable-direct-use-of-high-level-library-functions 【野火 RA系列FSP库开发实战指南】
    发表于 06-04 21:39

    FPB-RA6E1快速原型板】CoreMark移植完全指南——UART输出和SysTick计时

    /redefining-low-level-library-functions-to-enable-direct-use-of-high-level-library-functions 【野火 RA系列FSP库开发实战指南】
    发表于 05-28 17:18

    RA MCU创意氛围赛】3. 硬件I2C驱动OLED显示汉字

    RA MCU创意氛围赛】1. PWM驱动LED以及STLINK下载配置【
    发表于 05-26 14:06

    RA MCU创意氛围赛——作品制作记录

    ------------------------------------ 2023年5月6日 小记: 之前在武汉芯源的群里潜水的时候看到了野火发布的RA MCU创意氛围赛,听说免费
    发表于 05-26 09:42

    RA2 MCU ADC转换时间测试方法

    RA2 MCU ADC转换时间测试方法
    的头像 发表于 05-24 08:07 154次阅读
    <b class='flag-5'>RA</b>2 <b class='flag-5'>MCU</b> ADC转换时间测试<b class='flag-5'>方法</b>

    FPB-RA6E1快速原型板】简单开箱和RASC+Keil开发环境搭建

    不支持RA系列MCU,需要安装RA系列MCU Keil支持包才能支持
    发表于 05-22 23:13

    RA MCU创意氛围赛】以RA2E的车载VFD屏幕时钟

    引言 很高兴能有机会参加【RA MCU创意氛围赛】,在以前学习stm32的时候,就是野火的开发板、文档以及视频带我入门的。现在有空体验一下野火的产品——
    发表于 05-21 17:02