Hobby Lab 趣味のモノ作り実験のサイトです。
部品 プロセッサー他 CH32V 203マニュアル_5_CRC
5 巡回冗長検査
5.1 主な特徴
5.2 機能説明

5.3 レジスタの説明
5.3.1 CRC_DATAR
5.3.2 CRC_IDATAR
5.3.3 CRC_CTLR

Pr:Prプロセッサ関係
PrP:プロセッサ
動作比較
 STM32F動作比較
 CH32V203&STM32F 動作比較
 arduino動作比較
raspberrypi関係
 RaspberryPiハード
CH32V関係
 -CH32V開始
 -203K8T6(32Pin)開始
 -203C8T6(48P)開始
 -003J4M6(8Pin)開始
 -003F4P6(20Pin)開始
 -Moun River StudioⅡ
 プログラミング!
  203_GPIO関係
  203_TIME関係
  203_TIME Encoder
  203_I2C関係
  203_1-Wire関係
  003_DS18B20テスター
  USART(UART)関係
  DS18B20をModBus制御
 -マニュアル
 203データシート
 203取説
  MBA メモリとバス方式
  PWR 電力制御
  RCC リセット・拡張・クロック
  BKP バックアップレジスタ
  CRC 巡回冗長検査
  RTC リアルタイムクロック
  GPIO GPIOと代替機能
  DMA ダイレクトメモリアクセス制御
  ADTM 高度な制御タイマー
  GPTM 汎用タイマー
  BCTM 基本タイマー
  USART 同期非同期通信
arduino関係
 ESP12関係
 (a)ESP-8266D1mini注意
PrP:その他  RS485ドライバー
 CP2102 BRIDGE
 WCH-LinkEエミュレーター
Pr:Wire 電線関係
Pr:Resistance 抵抗
Pr:Capacitor コンデンサ
Pr:Coil コイル
Pr:PassiveElmt 受動素子
Pr:Diode ダイオード関係
Pr:OPAMP オペアンプ関係
PrO:送受信機  Si4735
PrO:オペアンプ  LM324
 LM358
Pr:Tr トランジスタ関係
2SC1815
 リレードライバー設計
 アンプ設計
 発振器
TLP152
 TLP152テスト
TLP2361
 TLP2361テスト
TLP5754
 TLP5754テスト
Pr:Source 電源関係  ツェナーダイオード
 TL431
 LM317
PrS:Downモジュール
 EGS002_IR2110S
 SKU011012
 ACDC02
 XH_M299
 LM2596
 Mini360_MP23070N
 DROK
 WH140
PrS:UPモジュール
 MT3608
PrS:充電モジュール
 TP4056
Pr:Sensor_AD_時計等
PrS:電圧、電流
ADS1115 16bit4CH I2C A/D
 Hardware
 RaspberryPi_コマンド接続
 RaspberryPi_Python
 Arduino
 CH23V203 MounRiverStudioⅡ
INA226 I2C 直流電圧電流
 Hardware
 Arduino
 RaspberryPi_Python
WCS 電流ホール素子
 Hardware
PrS:温度、気圧、湿度、照度
BNE280 I2C 気圧,湿度,気温
 Hardware
 Arduino
 RaspberryPi_Python
BH1750 I2C 照度
 Hardware
 Arduino
 RaspberryPi_Python
DS18B20 1-Wire 温度計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:時間、日時
DS3231 I2C 時計
 Hardware
 Arduino
 RaspberryPi_Python
PrS:表示器
MAR3953 320X480 3.95"
 概要と線や点を描く
 フォントを描く
SSD1306 I2C 0.96"OLED
 Hardware
 Arduino
 RaspberryPi_Python
Pr:Old Processor他

5 巡回冗長検査(CRC)

この章は、CH32F2x、CH32V2x、およびCH32V3xファミリ全体に適用されます。
巡回冗長検査(CRC)計算ユニットは、32ビットのデータワードと固定生成多項式からCRCコードを取得するために使用されます。
これは通常、データ転送またはストレージの整合性を検証するために使用されます。
システムに搭載されているハードウェアCRC計算ユニットは、CPUとRAMのリソースを大幅に節約し、効率を向上させます。

5.1 主な特徴

・CRC32多項式 (0x4C11DB7): X32+X26+X23+X22+X16+X12+X11+X10+X8+X7+X5+X4+X2+X+1
・単一入出力32ビットデータレジスタ
・CRC計算は4AHBクロックサイクル (HCLK) で実行されます




5.2 機能説明

・CRCユニットのリセット
新しいCRC計算を開始するには、CRC計算ユニットをリセットする必要があります。
CRC_CTLRレジスタのRSTビットに1を書き込むと、データレジスタがハードウェアによってリセットされ、初期値0xFFFFFFFFに戻ります。
・CRC計算
CRCユニットの計算は、前回のCRC計算値と新しいCRC計算値の組み合わせによって行われます。
CRC_DATARレジスタに書き込むと、新しいデータがハードウェア計算ユニットに入力されます。
レジスタを読み出すと、最新のCRC計算値を取得できます。
ハードウェア計算はシステムの書き込み操作を中断するため、新しい値を連続して書き込むことができます。
注:CRCユニットは、バイトごとではなく、32ビットのデータワード全体を計算します。
・独立データバッファ
CRCユニットは8ビットの独立データレジスタ(CRC_IDATAR)を備えています。このレジスタは、アプリケーションコードの1バイトのデータを一時的に保存するために使用され、CRCユニットのリセットの影響を受けません。




5.3 レジスタの説明

表5-1 CRC関連レジスタ
NameAccess addressDescriptionReset value
R32_CRC_DATAR0x40023000データレジスタ0xFFFFFFFF
R8_CRC_IDATAR0x40023004独立データレジスタ0x00
R32_CRC_CTLR0x40023008制御レジスタ0x00000000

5.3.1 データレジスタ(CRC_DATAR)

DATAR =DATA Register | Access base address 0x40023000 Offset address: 0x00
■レジスター内容
3130292827262524 2322212019181716 1514131211109 8 7 6 5 4 3 2 1 0
DATAR
RW
11111111 11111111 11111111 11111111

DATA [RW]

元のデータを書き込み、計算結果を読み取ります。

5.3.2 独立データレジスタ(CRC_IDATAR)

IDATAR =Independent DATA Register | Access base address 0x40023000 Offset address: 0x04
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
Reserved IDATA
RO RW
00000000 00000000

IDATA [RW]

8ビットの汎用レジスタ。データバッファとして使用できます。
このレジスタは、制御レジスタのRSTの影響を受けません。

5.3.3 制御レジスタ(CRC_CTLR)

CTLR =ConTroL Register | Access base address 0x40023000 Offset address: 0x08
■レジスター内容
3130292827262524 2322212019181716 1514131211109 8 7 6 5 4 3 2 1 0
ReservedRST
ROWO
00000000 00000000 00000000 00000000

RST [WO]

CRC計算ユニットのリセット制御
1書き込むと設定できます。
0
ハードウェアによって自動的にクリアされます。
設定後、データレジスタは0xFFFFFFFFになります。




































更新日 2025/11/24 19:52  管理者 平林 剛Hirabayashi Takeshi