Cortex-A7 コア PWM 実験 -- STM32MP157

実験の目的: ファン、ブザー、モーターを駆動して動作させる

目次

1. PWM関連の概念

アクティブブザーとパッシブブザー

次に、回路図、ブロック図を分析します。

3、RCCの章を分析する

1. バス接続を決定する

2. バスの内容に応じてベースアドレスを決定します。

3. RCC 章で必要なレジスタを分析する

1、RCC_MP_AHB4ENSETRレジスタ

2、RCC_MP_APB1ENSETRレジスタ

4 番目に、GPIO チャプタ レジスタを分析します。

1、GPIOx_MODER レジスタ

2、GPIOx_AFRL レジスタ

5、TIM4 章を分析する

 1. 概要:編集

2. 特徴:

カウント方法:

3. 内部ブロック図

4. キャプチャ/コンペア レジスタ CCR (キャプチャ/コンペア 1 レジスタ)

5. 分周の動作原理

6. TIM4レジスタを分析する

1. TIMx_CR1 レジスタを分析する

2. TIMx_CCMR1 レジスタを分析する

3. TIMx_CCER レジスタを分析する

4. TIMx_PSC レジスタを分析する

5. TIMx_ARR レジスタを分析する

6. TIMx_CCR1 レジスタを分析する

6、ファン、モーター


1. PWM関連の概念

PWM:(パルス幅変調)パルス幅変調:可変デューティサイクルのパルス波形であり、アナログ信号レベルをデジタルエンコードする方式です

パルス: 方形波信号、高レベルと低レベルの変化により方形波信号が生成されます。

サイクル: 高レベルと低レベルの変化に必要な時間 (ミリ秒)

周波数: 周期と周波数の間には逆相関関係があり、単位: HZ、1 秒間に生成できる方形波信号の数

デューティ サイクル: 方形波では、高レベルが全期間の割合を占めます。

アクティブブザーとパッシブブザー

1. ソースは電源ではなく発振源です

2. アクティブブザー内に発振源があり、高レベルで音が鳴り、高レベルと低レベルをプログラムできます。

3. パッシブブザーの内部には発振源がなく、動作するには特定の方形波信号ドライブが必要で、価格は安価です

4. この実験用開発ボードは、PWM 方形波を生成するために受動的に使用することを目的としています。

次に、回路図、ブロック図を分析します。

1. 拡張バージョンの回路図のネットワーク番号に従って、リソース拡張ボードの対応するピンと組み合わせます。

ブザー: TIM4_CH1 === PB6

モーター: TIM16_CH1 === PF6

ファン: TIM1_CH1 === PE9

2. 実験はブザーを例にします

ブロック図

 分析します:

1.チップマニュアルのRCC/GPIO/TIM4の章を分析する必要があります

2. RCC: GPIOB グループ/TIM4 グループ コントローラーを有効にする

3. GPIO: 1) 多重化機能を設定します。 2) 多重化機能を設定します TIM4_CH1

4. TIM4: PWM 方形波信号を生成します。

3、RCCの章を分析する

1. バス接続を決定する

「メモリとバス アーキテクチャ」の章のメモリ マップとレジスタ境界アドレスに従って、GPIO バス: APB4、TIM バス: APB1 を決定します。

2. バスの内容に応じてベースアドレスを決定します。

RCC: 0x5000 0000

GPIOB:0x5000 3000

TIM4: 0x4000 2000

レジスタのベース アドレスとオフセットに従ってレジスタのアドレスを決定します: レジスタ アドレス = ベース アドレス + オフセット アドレス

3. RCC 章で必要なレジスタを分析する

1、RCC_MP_AHB4ENSETRレジスタ

機能: GPIOB グループ コントローラーを有効にする

アドレス: 0x5000000 + 0xA28 = 0x50000A28

疑似コード: RCC_MP_AHB4ENSETR[1] = 1

2、RCC_MP_APB1ENSETRレジスタ

機能: TIM4 グループレジスタを有効にする

アドレス: 0x5000000 + 0xA00 = 0x50000A00

疑似コード: RCC_MP_APB1ENSETR[2] = 1

4 番目に、GPIO チャプタ レジスタを分析します。

1、GPIOx_MODER レジスタ

機能:GPIOB端子のモードをマルチプレクス機能モードに設定(入力、出力、マルチプレクス、アナログの計4種類)

アドレス: 0x50003000 + 0x00 = 0x50003000

演算: GPIOB_MODER[13:12] = 10

2、GPIOx_AFRL レジスタ

機能: GPIOB ピン多重化機能を TIM4_CH1 機能として設定します。

アドレス: 0x50003000 + 0x20 = 0x50003020

疑似コード: GPIOB_AFRL [27:24] = 0010 (多重化機能は、「ピン配置、ピンの説明、および代替機能」の章に従って与えられる値を決定します)

5、TIM4 章を分析する

 1。概要:

1. 自動リロードカウンター、プログラム可能な分周器

2. 出力方形波

3. タイマプリスケーラ、RCC クロックコントローラプリスケーラ

4. 独立したチャンネル

2. 特徴:

1、16ビットアップ、ダウン、アップ/ダウン自動リロードカウンター

2. インクリメント、デクリメント: エッジ揃えモード

3. インクリメント/デクリメント: 中央揃えモード

カウント方法:

例: アップ カウンタ: アップ カウンタ クロック信号を駆動し、クロック サイクルごとにカウンタの値が 1 ずつ増加します。アップ カウンタの値が等しくなるまで加算した後、0 から開始し、次のクロック サイクルを開始します。

3. 内部ブロック図

画像が破損しています:<

1. システムは 209MHz のクロック ソースを提供します。これは PSC (プリスケーラー) プリスケーラーによって分周され、分周値は 209 分周 (カスタム) です。

2. タイマ開始後、オートリロードカウンタARR(オートリロードレジスタ)の値がデクリメントカウンタCNT(カウンタ)に自動的にロードされます。

3. クロック信号がダウン カウンタを駆動し、1 クロック サイクル内でカウンタの数値が 0 になるまで継続的に 1 ずつ減分され、自動リロード カウンタ (ARR) の値が自動的にダウン カウンタにロードされます。そして次のクロックが開始されます。

4. キャプチャ/コンペア レジスタ CCR (キャプチャ/コンペア 1 レジスタ)

機能: 1. PWM 方形波を生成します。

                2. ダウンカウンタ(CNT)の値とキャプチャコンペアレジスタ(CCR)の値が等しい場合、レベルが反転します。

5. 分周の動作原理

CK_PSC: システムによって提供されるクロック ソース

CEN: イネーブル信号

タイマクロック = CK_CNT: カウンタクロック

カウンタレジスタ: カウンタレジスタ

更新イベント (UEV): 更新イベント

プリスケーラ制御レジスタ: プリスケーラ制御レジスタ

プリスケーラバッファ: 分周器バッファ

プリスケーラ カウンタ: 分周器カウンタ

TIMx_CR1 レジスタの ARPE の値は自動リロード カウンタのロードに影響します。=0、すぐにロード、=1、次のクロック サイクルでロード

6. TIM4レジスタを分析する

1. TIMx_CR1 レジスタを分析する

機能: レジスタ関連の操作を初期化します。

アドレス: 0x40002000 + 0x00 = 0x40002000

疑似コード:

        TIM4_CR1[7] = 1 ==== オートリロード プリロード レジスタ (ARR) イネーブルを設定

        TIM4_CR1[6:5] = 00 ==== エッジ整列モード (CNT はデクリメント モード、エッジ整列を使用)

        TIM4_CR1[4] = 1 ==== カウンタ CNT をカウントダウンに設定します

        TIM4_CR1[0] = 1 ==== カウンタ CNT イネーブルを設定

2. TIMx_CCMR1 レジスタを分析する

機能: コンペアキャプチャレジスタの設定

アドレス: 0x40002000 + 0x18 = 0x40002018

疑似動作: TIM4_CCMR1 [16][6:4] = 0110 ==== チャネル 1 のコンペアキャプチャモードを PWM モードに設定

TIM4_CCMR1 [3] = 1 ==== キャプチャ/コンペア レジスタのプリロード イネーブルを設定

TIM4_CCMR1 [1:0] = 00 ==== 出力チャンネルをチャンネル 1 に設定します

3. TIMx_CCER レジスタを分析する

機能: コンペアキャプチャレジスタ(CCR)のデフォルトの出力極性を設定します。

アドレス: 0x40002000 + 0x20 = 0x40002020

疑似コード: TIM4_CCER [3][1] = 00 / 01 ==== コンペア キャプチャ レジスタを設定、デフォルトの出力極性 High/Low レベル (カスタム)

TIM_CCER [0] = 1 ==== コンペアキャプチャレジスタ出力イネーブルを設定

4. TIMx_PSC レジスタを分析する

機能: システムクロックの分周値を設定します。

アドレス: 0x40002000 + 0x28 = 0x40002028

疑似コード: TIM4_PSC = 209 - 1 (カスタム)

5. TIMx_ARR レジスタを分析する

役割: 自動リロードカウンター (ARR) に値を設定します。

アドレス: 0x40002000 + 0x2C = 0x4000202C

疑似コード: TIM4_ARR = 1000 (カスタム)

6. TIMx_CCR1 レジスタを分析する

役割: キャプチャコンパレータ(CCR)の値を設定します。

アドレス: 0x40002000 + 0x34 = 0x40002034

疑似コード: TIM4_CCR1 = 300 (カスタム)

6、ファン、モーター

ファンとモーターは、ネットワーク番号、チャネル、および対応するピン番号に応じてレジスタ内の値を変更できます。

もう 1 つは、モーターは CR1 レジスタのエッジ整列モードとダウンカウント モードを設定する必要がありません。

ファンとモーター用のもう 1 つのレジスタ BDTR

TIMx_BDTR

機能: メイン出力イネーブル

アドレス: 0x40002000 + 0x44 = 0x40002044

疑似コード: TIMx_BDTR[15] = 1 (x にはネットワークに従って番号が付けられます)

おすすめ

転載: blog.csdn.net/MaGuangming001/article/details/132500045
おすすめ