MSPM0MSPM0G3507小练-计算 CRC 校验和

[复制链接]
867|7
 楼主| xyz549040622 发表于 2023-4-12 23:12 | 显示全部楼层 |阅读模式
本帖最后由 xyz549040622 于 2023-4-13 20:21 编辑

任务 1 的目的是使用 CRC 代码对 MSPM0 LaunchPad 进行编程,并验证 CRC 模块是否正常工作。 实际上,无法直观明确地确定 CRC 是否正常工作,因此,可以将得到的校验和与在线 CRC 计算器得出的结果进行比较。 以下代码示例中提供了预期输出,并将 CRC 输出与之进行了比较。 对于该任务,无需修改代码示例。
1.将 crc_calculate_checksum 从 TI Resource Explorer 导入 CCS。

  • 点击右上角的 Import 2.对 LaunchPad 进行编程。
  • 代码概要功能描述
    此程序计算数组的校验和,并将数组与预期结果进行比较,以验证 crc 模块。

  1.     #include "ti_msp_dl_config.h"

  2.     #define CRC_NUM_OF_WORDS (3)
  3.     #define CRC_EXPECTED_RESULT (0x91A5D23B)

  4.     uint32_t gData32[CRC_NUM_OF_WORDS] = {0x3B4A5812, 0x0C74FECA, 0x0000842F};
  5.     const uint32_t gCrcSeed            = CRC_SEED;

  6.     int main(void)
  7.     {
  8.         volatile uint32_t crcChecksum;
  9.         volatile bool crcChecksumMatch __attribute__((unused));

  10.         SYSCFG_DL_init();

  11.         crcChecksum =
  12.             DL_CRC_calculateBlock32(CRC, gCrcSeed, &gData32[0], CRC_NUM_OF_WORDS);

  13.         if (CRC_EXPECTED_RESULT == crcChecksum) {
  14.             crcChecksumMatch = true;
  15.         } else {
  16.             crcChecksumMatch = false;
  17.         }

  18.         /* Stop the debugger to verify crcChecksumMatch == true */
  19.         __BKPT(0);

  20.         while (1) {
  21.             __WFI();
  22.         }
  23.     }
此程序包含以下几个步骤:
  • 初始化系统配置:重置相关模块并启用 SYSCFG_DL_init() 中的电源。GPIO 和 CRC 模块通过重置功能设置为默认值。
    1. SYSCONFIG_WEAK void SYSCFG_DL_initPower(void)
    2. {
    3. DL_GPIO_reset(GPIOA);
    4. DL_GPIO_reset(GPIOB);
    5. DL_CRC_reset(CRC);

    6. DL_GPIO_enablePower(GPIOA);
    7. DL_GPIO_enablePower(GPIOB);
    8. DL_CRC_enablePower(CRC);
    9. delay_cycles(POWER_STARTUP_DELAY);
    10. }

  • 执行 CRC_32 计算并检查结果
    1. crcChecksum =
    2. DL_CRC_calculateBlock32(CRC, gCrcSeed, &gData32[0], CRC_NUM_OF_WORDS);

    3. if (CRC_EXPECTED_RESULT == crcChecksum) {
    4. crcChecksumMatch = true;
    5. } else {
    6. crcChecksumMatch = false;
    7. }




chenjun89 发表于 2023-4-13 07:40 来自手机 | 显示全部楼层
CRC常用校验算法
qcliu 发表于 2023-5-4 14:49 | 显示全部楼层
请问 如何使用 CRC 代码对 MSPM0 LaunchPad 进行编程呢?
drer 发表于 2023-5-4 15:45 | 显示全部楼层
crc校验算法有很多种,我们如何知道对方采用的是哪种呢
coshi 发表于 2023-5-4 16:20 | 显示全部楼层
drer 发表于 2023-5-4 15:45
crc校验算法有很多种,我们如何知道对方采用的是哪种呢

我都是在网上用crc的计算器进行比对
tpgf 发表于 2023-5-4 16:47 | 显示全部楼层
crc校验还需要查表吗 还是只有一个算法就可以了
kxsi 发表于 2023-5-5 07:55 | 显示全部楼层
tpgf 发表于 2023-5-4 16:47
crc校验还需要查表吗 还是只有一个算法就可以了

感觉应该是一种算法 然后得到的校验码就需要查表了吧
wiba 发表于 2023-5-5 09:06 | 显示全部楼层
有的单片机是不是会有专用的crc计算的模块啊
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群: 嵌入式系统arm初学者 224636155←← +→→点击-->小 i 精品课全集,21ic公开课~~←←→→点击-->小 i 精品课全集,给你全方位的技能策划~~←←

2841

主题

19330

帖子

110

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