Hobby Lab 趣味のモノ作り実験のサイトです。
部品 プロセッサー他 CH32V 203マニュアル_1_MBA
1 メモリとバスアークテクチャ
1.1 バスアーキテクチャ
1.2 メモリマップ
1.2.1 ビットセグメントアクセス
1.2.2 メモリ構成
1.3 スタートアップ構成

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他

1 メモリとバスアーキテクチャ

図1-1 CH32F2xシステムアーキテクチャ

1.1 バスアーキテクチャ

CH32F2xは、ARMRCortexTM-M3コアをベースにしたマイクロコントローラです。
フレームワーク内のコア、調停ユニット、DMAモジュール、SRAMメモリなどは、複数のバスセットを介して相互作用します。
システムアーキテクチャは図1-1のとおりです。

CH32V2xは、RISC-V命令セットをベースに設計された汎用マイクロコントローラです。
アーキテクチャ内のコア、調停ユニット、DMAモジュール、SRAMメモリなどは、複数のバスセットを介して相互作用します。

このシステムは、コード実行を高速化するフラッシュアクセス・プリフェッチ機構、CPU負荷を軽減し効率を向上させる汎用DMAコントローラ、 周辺機器の動作消費電力を削減するクロックツリー階層管理などの機能を搭載しています。
また、データ保護機構やクロックセキュリティシステム保護機構といった機能も備えており、システムの安定性を高めています。

● コマンドバス(I-Code)は、コアとFLASHコマンドインターフェースを接続し、プリフェッチはこのバス上で完了します。
● データバス(D-Code)は、コアとFLASHデータインターフェースを接続し、常時ロードとデバッグを行います。
● システムバスは、コアとバスマトリックスを接続し、コア、DMA、SRAM、および周辺機器のアクセスを調整します。
●DMAバスはDMA AHBマスター制御インターフェースとバスマトリックスを接続し、バスアクセスオブジェクトにはフラッシュデータ、SRAM、ペリフェラルが含まれます。
●バスマトリックスは、システムバス、データバス、DMAバス、SRAM、AHB/APBブリッジ間のアクセス調整に使用されます。
●AHB/APBブリッジは、AHBバスと2つのAPBバスの同期接続を提供します。
異なるペリフェラルは異なるAPBバスに接続され、実際のニーズに応じて異なるバスクロックを設定することで、パフォーマンスを最適化できます。

図1-3 ストレージマッピング
ADDRESS
STARTEND
Reserved0xE010 00000xFFFF FFFFF
Core Private
Peripherals
0xE000 00000xE001 FFFF
Reserved0x5004 00000xDFFF FFFF
USBFS0x5000 00000x5003 FFFF
Reserved0x4002 A0000x4FFF FFFF
Ethernet
(CH203RBx)
0x4002 80000x4002 9FFF
Reserved0x4002 3C000x4002 7FFF
EXTEND0x4002 38000x4002 3BFF
Reserved0x4002 34000x4002 37FF
CRC0x4002 3000 0x4002 33FF
Reserved0x4002 0400 0x4002 2FFF
DMA0x4002 0000 0x4002 03FFF
Reserved0x4001 3C00 0x4001 FFFF
USART10x4001 3800 0x4001 3BFF
Reserved0x4001 3400 0x4001 37FF
SPI10x4001 3000 0x4001 33FF
TIM10x4001 2C00 0x4001 2FFF
ADC2/TouchKey0x4001 2800 0x4001 2BFF
ADC1/TouchKey0x4001 2400 0x4001 27FF
Reserved0x4001 1800 0x4001 23FF
Port D0x4001 1400 0x4001 17FF
Port C0x4001 1000 0x4001 13FF
Port B0x4001 0C00 0x4001 0FFF
Port A0x4001 0800 0x4001 0BFF
EXTI0x4001 0400 0x4001 07FF
AFIO0x4001 0000 0x4001 03FF
Reserved0x4000 7400 0x4000 FFFF
PWR0x4000 7000 0x4000 73FF
BKP0x4000 6C00 0x4000 6FFF
Reserved0x4000 6800 0x4000 6BFF
bxCAN10x4000 6400 0x4000 67FF
share 512B SRAM0x4000 6000 0x4000 63FF
USBD0x4000 5C00 0x4000 5FFF
I2C20x4000 5800 0x4000 5BFF
I2C10x4000 5400 0x4000 57FF
Reserved0x4000 5000 0x4000 53FF
UART40x4000 4C00 0x4000 4FFF
USART30x4000 4800 0x4000 4BFF
USART20x4000 4400 0x4000 47FF
Reserved0x4000 3C00 0x4000 43FF
SPI20x4000 3800 0x4000 3BFF
Reserved0x4000 3400 0x4000 37FF
IWDG0x4000 3000 0x4000 33FF
WWDG0x4000 2C00 0x4000 2FFF
RTC0x4000 2800 0x4000 2BFF
Reserved0x4000 1000 0x4000 27FF
TIM5 (CH203RBx)0x4000 0C00 0x4000 0FFF
TIM40x4000 0800 0x4000 0BFF
TIM30x4000 0400 0x4000 07FF
TIM20x4000 0000 0x4000 03FF
Reserved0x2001 0000 0x3FFF FFFF
SRAM (64KBmax)0x2000 0000 0x2000 FFFF
Reserved 0x1FFF F880 0x1FFF FFFF
Option Bytes0x1FFF F800 0x1FFF F87F
Vendor Bytes0x1FFF F700 0x1FFF F7FF
Reserved0x1FFF F000 0x1FFF F6FF
System FLASH
(BOOT_28KB)
0x1FFF 8000 0x1FFF EFFF
Reserved0x---- ---- 0x1FFF 7FFF
Code FLASH 224KB
maxIncludes
0 Wait and non-0
waiting areas
0x0800 0000 0x---- ----
Aliased to Flash
or system memory
Depending on
BOOT pins
0x0000 0000 0x0800 0000




1.2 メモリマップ

CH32F2x、CH32V2x、CH32V3x はいずれもプログラムメモリ、データメモリ、コアレジスタ、ペリフェラルレジスタなどを備えており、これらはすべて 4GB のリニア空間でアドレス指定されます。
システムメモリはデータをリトルエンディアン形式で保存します。
つまり、下位バイトは下位アドレスに、上位バイトは上位アドレスに保存されます。

1.2.1 ビットセグメントアクセス

ビットセグメントとは、ビット操作を独立して読み書きすることを意味します。
CH32F2xは、マッピング処理方式により、周辺レジスタおよびSRAM領域の内容に対するビット操作の読み書きを提供します。
具体的な方法:
1) マッピングされたアドレス領域から32ビットデータを読み出し、読み出し値が0または0以外で、対象ビット値が0または1の場合。
2) マッピングされたアドレス領域に32ビットデータを書き込み、0または1を書き込み、対象ビットの値を0または1に変更します。
アドレスマッピング:
対象ビットフィールド:ベースアドレス(BEaddr)+オフセットアドレス(Ofaddr)+ビット番号(BitN)
マッピングアドレス:Mapaddr
Mapaddr = BEaddr + 0x2000000 + (Ofaddr×32) + (BitN×4)
例1:
SRAM領域のアドレスバイト0x20000100のビット3の対象ビットフィールドを操作します。
Mapaddr = 0x20000000 + 0x2000000 + (0x100*32) + (3*4) = 0x2200200C
アドレス0x2200200Cの4バイトデータの内容を読み取って、ビット3が0x20000100
アドレスバイトが0または1の場合、0x2200200Cアドレスに0または1を書き込むと、0x20000100アドレスバイトのビット3を0または1に変更できます。
例2:
ペリフェラル領域のアドレス0x40021000のビット24を操作する:
Mapaddr = 0x20000000+0x2000000+(0x21000*32)+(24*4)= 0x22420060
アドレス0x22420060の4バイトデータの内容を読み取って、ペリフェラルアドレス0x40021000のビット24が0か1かを確認します。
アドレス0x22420060に0か1を書き込みます。
0x40021000 ペリフェラルアドレスのビット24を 0 または 1 に変更できます。
注:
CH32V2x および CH32V3x は、ビットセグメントマッピングアクセスモードをサポートしていません。

1.2.2 メモリ構成

最大128KBのSRAMを内蔵し、開始アドレスは0x20000000で、バイト、ハーフワード(2バイト)、フルワード(4バイト)のアクセスをサポートします。
ユーザーアプリケーションを保存するための、最大480KBのプログラムフラッシュストレージ領域(CodeFlash)を内蔵しています。
システムブートプログラム(メーカーが固定化したブートローディングプログラム)を保存するための、28KBのシステムメモリ(ブートローダ)を内蔵しています。
メーカーが定義したコンフィギュレーションワードを保存するための128KBのメモリを内蔵しています。
このコンフィギュレーションワードは工場出荷前に固定化されており、ユーザーによる変更はできません。
ユーザーが選択したワードを保存するための128KBのメモリを内蔵しています。
注:
製品番号によってメモリ構成が異なります。
詳細は、CH32F20xDS0.PDFおよびCH32F20x_30xDS0.PDFを参照してください。





1.3 スタートアップ構成

システムは、BOOT0ピンとBOOT1ピンを介して3つの異なるスタートアップモードを選択できます。

表1-1 起動モード
BOOT0BOOT1起動モード
0Xプログラムフラッシュメモリからの起動
10システムメモリからの起動
11内部SRAMからの起動
ユーザーは、BOOTピンのステータス値を設定することで、リセット後の起動モードを選択します。
システムリセット後または電源リセット後、BOOTピンの値は再びラッチされます。
プログラムフラッシュメモリ、システムメモリ、および内部SRAMは、起動モードによってアクセス方法が異なります。
● プログラムフラッシュメモリから起動する場合、プログラムフラッシュメモリのアドレスは0x00000000番地領域にマッピングされ、開始アドレス領域0x08000000からもアクセスできます。
● システムメモリから起動する場合、システムメモリのアドレスは0x00000000番地領域にマッピングされ、元のアドレス領域0x1FFFF000からもアクセスできます。
● 内部SRAMから起動する場合、0x20000000番地領域からのみアクセスできます。
CH32F2xをこの領域で起動する場合、NVICコントローラを介してベクターテーブルオフセットレジスタを設定し、ベクターテーブルをSRAMに再マップする必要があります。
CH32V2xおよびCH32V3xでは、この操作は不要です。




































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