Перейти к содержанию

Регистры CRC STM32L1

Регистры блока CRC STM32L1: запись данных и чтение результата, независимый байт данных и сброс вычисления.

Блок CRC STM32L1 — простой, как у STM32F1 и STM32F4: полином фиксирован (CRC-32 Ethernet, 0x04C1 1DB7), начальное значение 0xFFFF FFFF, данные пишутся 32-битными словами без обращения битов. Бит RESET в CRC_CR заново начинает расчёт (RM0038, раздел 4.4).

Для совместимости с zlib обратите биты каждого слова и результата программно (инструкция RBIT) и проинвертируйте результат.

ЭкземплярБазовый адресЕсть у
CRC0x4002 3000всех

Регистры блока

РегистрСмещениеНазначениеПосле сброса
CRC_DR0x00Данные и результат0xFFFF FFFF
CRC_IDR0x04Свободный байт0x0000 0000
CRC_CR0x08Сброс вычислителя0x0000 0000

Конструктор значения

Выберите регистр и значения полей — конструктор покажет 32-битное значение и строку на C с макросами CMSIS. Поля, которые вы не меняете, берутся из значения после сброса.

Значение: 0xFFFFFFFF

1111 1111 1111 1111 1111 1111 1111 1111

CRC->DR = 0xFFFFFFFF;

CRC_DR — данные и результат

Смещение 0x00, адрес 0x4002 3000, 32 бит, после сброса 0xFFFF FFFF. В коде: CRC->DR.

31302928272625242322212019181716
DR
1514131211109876543210
DR
  • DR (биты 31:0) — Запись — следующее слово данных, чтение — текущий CRC.

CRC_IDR — свободный байт

Смещение 0x04, адрес 0x4002 3004, 8 бит, после сброса 0x0000 0000. В коде: CRC->IDR.

76543210
IDR
  • IDR (биты 7:0) — Свободный байт для временных данных.

CRC_CR — сброс вычислителя

Смещение 0x08, адрес 0x4002 3008, 32 бит, после сброса 0x0000 0000. В коде: CRC->CR.

31302928272625242322212019181716
—
1514131211109876543210
—RESET
  • RESET (бит 0) — Сброс вычислителя: DR = 0xFFFF FFFF.

Частые вопросы

Почему CRC STM32L1 не совпадает с онлайн-калькулятором CRC-32?

Блок считает CRC-32 без обращения битов и финального XOR, словами по 32 бита. Распространённый CRC-32 (zlib) обращает биты входа и выхода и инвертирует результат: сделайте это программно или сравнивайте с вариантом CRC-32/MPEG-2.

Источники

  1. STMicroelectronics. RM0038: Reference manual (Rev 18) — раздел 4.4: описание регистров, назначение полей и значения после сброса
  2. STMicroelectronics. cmsis-device-l1 v2.3.4: заголовки CMSIS stm32l100xb.h, stm32l100xba.h, stm32l100xc.h, stm32l151xb.h, stm32l151xba.h, stm32l151xc.h, stm32l151xca.h, stm32l151xd.h, stm32l151xdx.h, stm32l151xe.h, stm32l152xb.h, stm32l152xba.h, stm32l152xc.h, stm32l152xca.h, stm32l152xd.h, stm32l152xdx.h, stm32l152xe.h, stm32l162xc.h, stm32l162xca.h, stm32l162xd.h, stm32l162xdx.h, stm32l162xe.h — структуры периферии, смещения, адреса экземпляров и макросы полей; лицензия Apache-2.0

Нашли ошибку в регистрах? ·

Другие регистры STM32L1

Калькуляторы и статьи