Hobby Lab 趣味のモノ作り実験のサイトです。
部品 プロセッサー他 CH32V 203マニュアル_6_RTC
6 Real-Time Clock
6.1 主な特徴
6.2 機能説明
6.2.1 概要
6.2.2 リセット
6.2.3 特殊なレジスタ

6.3 レジスタの説明
6.3.1 RTC_CTLRH
6.3.2 RTC_CTLRL
6.3.3 RTC_PSCRH
6.3.4 RTC_PSCRL
6.3.5 RTC_DIVH
6.3.6 RTC_DIVL
6.3.7 RTC_CNTH
6.3.8 RTC_CNTL
6.3.9 RTC_ALRMH
6.3.10 RTC_ALRML

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他

6 Real-Time Clock (RTC)

この章は、CH32F2x、CH32V2x、およびCH32V3xファミリ全体に適用されます。

リアルタイムクロック(RTC)は独立したタイマーモジュールです。
最大32ビットのプログラマブルカウンタをサポートします。
ソフトウェアを使用することで、リアルタイムクロック機能を実装し、 カウンタ値を変更してシステムの現在の時刻と日付を再設定できます。
RTCモジュールはバックアップ電源領域にあり、システムリセットやスタンバイモードからのウェイクアップの影響を受けません。

6.1 主な特徴

・分周係数:最大220
・32ビットプログラマブルカウンタ
・複数のクロックソース、割り込み
・独立リセット




6.2 機能説明

6.2.1 概要

図6-1に示すように、RTCモジュールは主にAPB1バスインターフェース、 分周器とカウンタ、制御レジスタとステータスレジスタの3つの部分で構成されています。

分周器とカウンタはバックアップ領域にあり、VBATから電源供給されます。
RTCCKは分周器(RTC_DIV)に入力された後、TR_CLKに分周されます。
分周器(RTC_DIV)には自己減分カウンタが搭載されていることに注意してください。

自己減分カウンタがオーバーフローに達すると、TR_CLKが出力されます。
その後、リロード値レジスタ(RTC_PSCR)からプリセット値が取得され、分周器にリロードされます。
図6-1 RTC構造ブロック図
分周器の値を読み取ることは、実際にはそのリアルタイム値(読み取り専用)を読み取ることを意味します。
分周器係数は、リロード値レジスタ(RTC_PSCR)に書き込む必要があります。

通常、TR_CLKの周期は1秒に設定され、TR_CLKは2番目のイベントをトリガーし、 同時にメインカウンタ(RTC_CNT)が1ずつ自動的に増加します。
メインカウンタがアラームレジスタの値と同じ値まで増加すると、アラームイベントがトリガーされます。
メインカウンタがオーバーフローまで増加されると、オーバーフローイベントがトリガーされます。
これら3つのイベントはすべて、対応する割り込みイネーブルビットによって制御される割り込みをトリガーできます。

6.2.2 リセット

リアルタイムクロックの特殊な用途のため、バックアップドメインには4組のレジスタ (分周器、分周器リロード値、メインカウンタ、アラームクロック)があります。
これらは、バックアップドメインのリセット信号によってのみリセットできます。
RCCバックアップドメインのリセットの章を参照してください。
リアルタイムクロックの制御レジスタは、システムリセットまたは電源リセットによって制御されます。

6.2.3 特殊なレジスタ読み出し/書き込み操作

リアルタイムクロックの特殊な用途のため、RTCバスとAPB1バスは独立しており、APB1によるRTCの読み出しは必ずしもリアルタイムではありません。 APB1を介したRTCレジスタの読み出しは、APB1起動後のRTCの立ち上がりエッジを経由する必要があります。 この状況は、システムリセット、電源リセット、スタンバイモードまたはストップモードからのウェイクアップ後に発生する可能性があります。 制御レジスタ(CTLR)のRSFビットがハイに設定されている状態で待機すると便利です。 RTCへの書き込み操作については、前回の書き込み操作が終了した後、コンフィギュレーションモードで以下の手順に従って操作を行う必要があります。
(1) RTOFFビットが1に変化したかどうかを問い合わせます。
(2) CNFビットをセットしてコンフィギュレーションモードに入ります。
(3) 1つまたは複数のRTCレジスタへの書き込み操作を実行します。
(4) CNFビットをクリアしてコンフィギュレーションモードを終了し、 APBインターフェース1を介してRTCレジスタへの書き込みを開始します。
(5) RTOFFビットが1になるまで問い合わせる。ここまでで書き込みは完了です。




6.3 レジスタの説明

表6-1 RTC関連レジスタ
NameAccess addressDescriptionReset value
R16_RTC_CTLRH0x40002800RTC control register high bit0x0000
R16_RTC_CTLRL0x40002804RTC control register low bit0x0000
R16_RTC_PSCRH0x40002808Prescaler reload value register high bit0x0000
R16_RTC_PSCRL0x4000280CPrescaler reload value register low bit0x0000
R16_RTC_DIVH0x40002810Prescaler divider register high bit0x0000
R16_RTC_DIVL0x40002814Prescaler divider register low bit0x0000
R16_RTC_CNTH0x40002818RTC counter high bit0x0000
R16_RTC_CNTL0x4000281CRTC counter low bit0x0000
R16_RTC_ALRMH0x40002820Alarm clock register high bit0xFFFF
R16_RTC_ALRML0x40002824Alarm clock register low bit0xFFFF

6.3.1 RTC制御レジスタの上位ビット(RTC_CTLRH)

RTC_CTLRH =RTC ConTroL Register High bit | Access base address 0x40002800 Offset address: 0x00
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
ReservedOWIEALRIESECIE
RORWRWRW
00000000 00000000

OWIE [RW]

オーバーフロー割り込み有効ビット
1有効
0無効

ALRIE [RW]

アラーム割り込み有効ビット
1有効
0無効

SECIE [RW]

2 番目の割り込み有効ビット
1有効
0無効


6.3.2 RTC制御レジスタ下位ビット(RTC_CTLRL)

RTC_CTLRL =RTC ConTroL Register Low bit | Access base address 0x40002800 Offset address: 0x04
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
Reserved RTOFFCNFRSFOWFALRFSECF
RO RORWRWORWORWORWO
00000000 00000000

RTOFF [RO]

RTC 操作ステータス表示ビット。
RTC に対して実行された最後の書き込み操作のステータスを示します。
RTC に対して操作を実行するには、このビットが 1 である必要があります。
1RTC への最後の書き込み操作が完了しました
0RTC への最後の書き込み操作がまだ進行中です

CNF [RW]

コンフィギュレーションフラグビット。
このビットに1を書き込むとコンフィギュレーションモードに入り、カウンタ(R16_RTC_CNTx)、 アラームレジスタ(R16_RTC_ALRMx)、およびプリスケーラリロード値レジスタ(R16_RTC_PSCRx)への書き込みが可能になります。
書き込み操作は、このビットに1を書き込んでソフトウェアでクリアした場合にのみ実行できます。
1コンフィギュレーションモードに入ります
0コンフィギュレーションモードを終了し、RTCレジスタの更新を開始します

RSF [RW]

レジスタ同期フラグビット。
プリスケーラ(PSCRx)、アラーム(ALRMx)、カウンタRW0(CNTx)の読み書き操作を行う前に、 このビットがハードウェアによってセットされている(レジスタ同期されている)ことを確認してください。
これらのレジスタを読み書きする場合、またはAPBIがリセットされた後、あるいはAPB1クロックが停止した後は、 まずこのビットをリセットする必要があります。
1レジスタ同期済み
0レジスタが同期されていません

OWF [RW]

カウンタオーバーフローフラグ。 32ビットカウンタがオーバーフローすると、このビットがハードウェアによってセットされます。
OWIEビットがセットされている場合は、オーバーフロー割り込みも生成されます。
このビットはソフトウェアによってクリアのみ可能で、セットすることはできません。
1セット不可
0クリア

ALRF [RW]

アラームフラグ。
カウンタ値がアラームレジスタ(ALRMx)の値に達すると、このビットはハードウェアによってセットされます。
アラーム割り込みイネーブルビット(ALRIE)がセットされている場合は、アラーム割り込みも生成されます。
このビットはソフトウェアによってクリアのみ可能で、セットすることはできません。
1セット不可
0クリア

SECF [RW]

秒イベントフラグ。 クロックがプリスケーラで分周された後、立ち下がりエッジを生成すると、カウンタは1ずつ増加し、秒イベントを生成し、このビットがセットされます。 秒割り込みが有効になっている場合(SECIEビットがセットされている場合)、同時に秒割り込みも生成されます。 このビットはソフトウェアによってのみクリアでき、ソフトウェアによってセットすることはできません。
1セット不可
0クリア


6.3.3 プリスケーラリロード値レジスタ上位ビット(RTC_PSCRH)

PSCRH =PreSCaler reload value Register High bit | Access base address 0x40002800 Offset address: 0x08
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
Reserved PSCR
RORW
00000000 00000000

PSCR [RW]

リロード値の上位ビット。

6.3.4 プリスケーラリロード値レジスタ下位ビット(RTC_PSCRL)

PSCRL =PreSCaler reload value Register Low bit | Access base address 0x40002800 Offset address: 0x0C
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
PSCR
RW
10000000 00000000

PSCR [RW]

リロード値の下位ビット。
実際の分周係数は (PSCR[19:0]+1) です。
例えば、RTC入力周波数が32768Hzの場合、この値を0x7fffに設定すると、信号を1秒周期で分周できます。

6.3.5 プリスケーラ分周レジスタ上位ビット(RTC_DIVH)

DIVH =prescaler DIVider register High bit | Access base address 0x40002800 Offset address: 0x10
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
ReservedDIV
RORO
00000000 00000000

DIVH [RO]

プリスケーラ分周器レジスタの上位ビット。

6.3.6 プリスケーラ分周レジスタ下位ビット (RTC_DIVL)

DIVL =prescaler DIVider register Low bit | Access base address 0x40002800 Offset address: 0x14
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
DIV
RO
00000000 00000000

DIVL [RO]

プリスケーラ分周レジスタの下位ビット。
DIVは実際には自己減分カウンタです。DIVカウンタは、RTC_CLKの入力クロックごとに1ずつ減少します。
オーバーフロー後、TR_CLKを出力し、同時にPSCRから値をリロードします。
DIVは読み取り専用で、現在のプリスケーラ分周器のカウンタの残値が読み取られます。

6.3.7 RTCカウンターハイビット(RTC_CNTH)

RTC_CNTH =RTC CouNTer high bit | Access base address 0x40002800 Offset address: 0x18
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
CNT
RW
00000000 00000000

CNTH [RW]



6.3.8 RTCカウンターロービット(RTC_CNTL)

RTC_CNTL =RTC CouNTer Low bit | Access base address 0x40002800 Offset address: 0x1C
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
CNT
RW
00000000 00000000

CNTH [RW]

カウンタの下位ビット。
RTCタイマーの中核コンポーネント。クロックはTRCLKで供給されます(周期は通常1秒に設定されています)。
CNT[31:0]を読み出すことで現在時刻を計算します。
この値を書き込むには、コンフィギュレーションモードに入ります。

6.3.9 アラームレジスタの上位ビット(RTC_ALRMH)

ALRMH =ALaRM register High bit (RTC_ALRMH) | Access base address 0x40002800 Offset address: 0x20
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
ALRM
RW
00000000 00000000

ALRM [RW]

アラームレジスタの上位ビット

6.3.10 アラームレジスタの下位ビット(RTC_ALRML)

ALRML =ALaRM register Low bit (RTC_ALRMH) | Access base address 0x40002800 Offset address: 0x24
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
ALRM
RW
00000000 00000000

ALRM [RW]

アラームレジスタの下位ビット。
アラームレジスタALRM[31:0]の値がカウンタCNT[31:0]の値と一致すると、アラームイベントが生成されます。
この値を変更するには、コンフィギュレーションモードに入ります。





































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