Hobby Lab 趣味のモノ作り実験のサイトです。
部品 プロセッサー他 CH32V 203マニュアル_16_BCTM
16 基本タイマー
16.1 主な機能
16.2 原理と構造
16.2.1 概要
16.2.2 基本・汎用タイマーの違い
16.2.3 クロック入力
16.2.4 カウンタと周辺回路
16.3 デバッグモード

16.4 レジスタの説明
16.4.1 TIMy_CTLR1
16.4.2 TIMy_CTLR2
16.4.3 TIMy_DMAINTENR
16.4.4 TIMy_INTFR
16.4.5 TIMy_SWEVGR
16.4.6 TIMy_CNT
16.4.7 TIMy_PSC
16.4.8 TIMy_ATRLR

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他

16 基本タイマー(BCTM)

この章は、CH32F2x、CH32V2x、およびCH32V3xファミリ全体に適用されます。
基本タイマーモジュールには、16ビットの自動リロードタイマー(TIM6およびTIM7)が搭載されており、更新イベントをカウントし、割り込み/DMA要求を生成するために使用できます。

16.1 主な機能

基本的なタイマー機能
・ 16ビット自動リロードカウンタ(アップカウントをサポート)
・ 16ビットプリスケーラ(分周比は1~65536の範囲で動的に調整可能)
・ DACをトリガーする同期回路
・ 更新イベント発生時の割り込み/DMA要求生成

16.2 原理と構造

16.2.1 概要

図16-1 基本タイマーの構造ブロック図
図16-1に示すように、基本タイマーの構造は入力クロックとコアカウンタの2つの部分に分けられます。
基本タイマーのクロックソースはAHBバスクロック(CK_INT)です。これらの入力クロック信号は、設定された各種フィルタリングと分周処理を経てCK_PSCクロックとなり、コアカウンタに出力されます。
さらに、これらの複雑なクロックソースは、TRGOとしてDACペリフェラルに出力することもできます。
基本タイマーの中核は16ビットカウンタ(CNT)です。
CK_PSCはプリスケーラ(PSC)によって分周され、CK_CNTとなり、最終的にCNTに出力されます。
CNTはアップカウントをサポートし、カウントサイクルが終了するたびにCNTの初期値をリロードする自動リロードレジスタ(ATRLR)を備えています。

16.2.2 基本タイマーと汎用タイマーの違い

汎用タイマーと比較して、基本タイマーには以下の機能がありません。
1) 基本タイマーはダウンカウントまたはアップダウンカウントをサポートしていません。
2) 基本タイマーは4つの独立した比較/キャプチャチャネルを備えていません。
3) 基本タイマーはタイマーを制御するための外部信号をサポートしていません。
4) 基本タイマーはインクリメンタルコード、またはタイマー間のカスケード接続/同期をサポートしていません。

16.2.3 クロック入力

基本タイマーのクロックは内部クロック(CK_INT)によって提供されます。

16.2.4 カウンタと周辺回路

CK_PSCは、分周器(PSC)への入力として周波数分周に使用されます。
PSCは16ビットで、実際の分周係数はR16_TIMx_PSCの値+1に相当します。
CK_PSCはPSCを介してCK_INTになります。
R16_TIMx_PSCの値の変更はリアルタイムには反映されませんが、更新イベント後にPSCに反映されます。
更新イベントには、UGビットのクリアとリセットが含まれます。

16.3 デバッグモード

システムがデバッグモードに入ると、タイマーはDBGモジュールの設定に従って実行を継続するか停止します。

16.4 レジスタの説明

表16-1 TIM6関連レジスタ
TIMTIM6TIM7
Offset address0x4000100x400014

NameOffset
address
DescriptionReset
value
R16_TIMy_CTLR100TIMy control register10x0000
R16_TIMy_CTLR204TIMy control register20x0000
R16_TIMy_DMAINTENR0CTIMy DMA/interrupt enable register0x0000
R16_TIMy_INTFR10TIMy interrupt flag register0x0000
R16_TIMy_SWEVGR14TIMy event generation register0x0000
R16_TIMy_CNT24TIMy counter0x0000
R16_TIMy_PSC28TIMy prescaler0x0000
R16_TIMy_ATRLR2CTIMy auto reload register0x0000

16.4.1 制御レジスタ1 (TIMy_CTLR1) (y=6/7)

CTLR1 = ConTroL Register1 | Access base address 0x4000*C00 Offset address: 0x00
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
Reserved ARPEReservedOPMURSUDISCEN
RO RWRORWRWRWRW
00000000 00000000

ARPE

自動リロードおよびプリロード有効ビット(Auto reload and preload enable bit)
1自動リロード値レジスタ(ATRLR)が有効。
0自動リロード値レジスタ(ATRLR)が無効。

OPM

シングルパルスモード (Single pulse mode)
1次の更新イベント(CENビットがクリアされる)が発生するとカウンタは停止します。
0次の更新イベントが発生してもカウンタは停止しません。

URS

更新要求ソース(Update request source)
ソフトウェアはこのビットを介してUEVイベントのソースを選択します。
1更新割り込みまたはDMA要求が有効な場合、カウンタのオーバーフロー/アンダーフローのみが更新割り込みまたはDMA要求を生成します。
0更新割り込みまたはDMA要求が有効な場合、以下のいずれかのイベントが更新割り込みまたはDMA要求を生成します。
-カウンタのオーバーフロー/アンダーフロー
-UGビットのセット
-スレーブモードコントローラによって生成された更新

UDIS

更新無効 (Update disable)
ソフトウェアはこのビットを介してUEVイベントの生成を有効/無効にします。
1UEV無効。更新イベントは生成されず、レジスタ(ATRLR、PSC、CHCTLRx)は値を維持します。
UGビットがセットされるか、スレーブモードコントローラによってハードウェアリセットが送信されると、カウンタとプリスケーラは再初期化されます。
0UEV有効。更新(UEV)イベントは、以下のいずれかのイベントによって生成されます。
− カウンタのオーバーフロー/アンダーフロー
− UGビットのセット
− スレーブモードコントローラによって生成された更新。
バッファ付きレジスタには、プリロードされた値がロードされます。

CEN

カウンター有効 (Counter enable)
1カウンター有効
0カウンター無効


16.4.2 制御レジスタ2 (TIMy_CTLR2) (y=6/7)

CTLR2 = ConTroL Register2 | Access base address 0x4000*C00 Offset address: 0x04
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
ReservedMMSReserved
RORWRO
00000000 00000000

MMS

マスターモード選択 (Master mode selection)
これらの3ビットは、マスターモード時にスレーブタイマーに送信される同期情報(TRGO)を選択するために使用されます。可能な組み合わせは次のとおりです。
000リセット - UGビットはトリガ出力(TRGO)として使用されます。
トリガ入力によって生成されたリセットの場合(スレーブモードコントローラがリセットモードの場合)、TRGOの信号は実際のリセットに対して遅延します。
001イネーブル - カウンタは信号CNT_ENをトリガ出力(TRGO)として使用できるようにします。
場合によっては、複数のタイマーを同時に起動したり、一定時間内にスレーブタイマーをイネーブルするように制御したりする必要があります。
カウンタイネーブル信号は、ゲーティングモードでは、CEN制御ビットとトリガ入力信号の論理和によって生成されます。
カウンタイネーブル信号がトリガ入力によって制御される場合、マスター/スレーブモードが選択されていない限り、TRGOに遅延が発生します(TIMx_SMCFGRレジスタのMSMビットの説明を参照)。
010更新イベントがトリガ入力(TRGO)として選択されます。
例えば、マスタータイマーのクロックをスレーブタイマーの分周器として使用できます。
011
100
101
110
111


16.4.3 DMA/割り込み有効レジスタ(TIMy_DMAINTENR)(y=6/7)

DMAINTENR = DMA/INTerrupt ENable Register | Access base address 0x4000*C00 Offset address: 0x0C
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
ReservedUDEReservedUIE
RORWRORW
00000000 00000000

UDE

更新DMA要求有効ビット (Update DMA request enable bit)
1 更新DMA要求有効。
0更新DMA要求無効。

UIE

更新割り込み有効ビット(Update interrupt enable bit)
1更新割り込み有効。
0更新割り込み無効。


16.4.4 割り込みフラグレジスタ(R16_TIMy_INTFR)(y=6/7)

INTFR = INTerrupt Flag Register | Access base address 0x4000*C00 Offset address: 0x10
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
ReservedUIF
RORWO
00000000 00000000

UIF

更新割り込みフラグビット (Update interrupt flag bit)
新イベントが発生すると、このビットはハードウェアによってセットされ、ソフトウェアによってクリアされます。
1更新割り込み発生。
0更新割り込み未発生。
以下の状況の場合に更新イベントが発生します。
UDIS=0、繰り返しカウンタ値がオーバーフローまたはアンダーフロー。
URS=0、UDIS=0、UGビットがセットされている、またはカウンタコアがソフトウェアによって再初期化されている。


16.4.5 イベント生成レジスタ(TIMy_SWEVGR)(y=6/7)

SWEVGR = EVent Generation Register | Access base address 0x4000*C00 Offset address: 0x14
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
ReservedUG
ROWO
00000000 00000000

UG

更新イベント生成ビット (Update event generation bit)
更新イベントを生成します。
このビットはソフトウェアによってセットされ、ハードウェアによって自動的にクリアされます。
1カウンタを初期化し、更新イベントを生成します。
0影響しません。
注:分周器のカウンタもクリアされますが、分周器の係数は変更されません。
Centro対称モードまたはアップカウントモードでは、コアカウンタがクリアされます。
ダウンカウントモードでは、コアカウンタはリロード値レジスタの値を取得します。


16.4.6 汎用タイマーのカウンタ(TIMy_CNT)(y=6/7)

CNT = CouNter of general purpose Timer | Access base address 0x4000*C00 Offset address: 0x24
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
CNT
RW
00000000 00000000

CNT

カウンターのリアルタイム値。(Real-time value of counter)

16.4.7 プリスケーラ(TIMy_PSC)(y=6/7)

PSC = PreSCaler | Access base address 0x4000*C00 Offset address: 0x28
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
PSC
RW
00000000 00000000

PSC

タイマーの分周器の分周係数(Frequency division factor of the timer's prescaler)
カウンターのクロック周波数は、分周器の入力周波数/(PSC+1)に等しくなります。


16.4.8 自動リロードレジスタ(TIMy_ATRLR)(y=6/7)

ATRLR = | Access base address 0x4000*C00 Offset address: 0x00
■レジスター内容
1514131211109 8 7 6 5 4 3 2 1 0
ATRLR
RW
00000000 00000000

ATRLR

ATRLR[15:0]の値がカウンタにロードされます。
ATRLRの動作と更新時間については、セクション14.2.4を参照してください。
ATRLRが空になると、カウンタは停止します。






































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