Tangwx

Tangwx

博客网站

01.STM32の基礎知識の概要

1 STM32 基礎知識の概要#

1.1 STM32 の紹介#

STM32 は ST 社が ARM Cortex-M コアを基に開発した 32 ビットマイクロコントローラです

MMicrocontrollerの意味です

STM32 は組み込み分野でよく使用され、例えばスマートカー、ドローン、ロボット、無線通信、IoT、産業制御、エンターテインメント電子製品などに利用されます

STM32 は機能が強力で、性能が優れており、オンチップリソースが豊富で、消費電力が低く、クラシックな組み込みマイクロコントローラです

image-20220809082441069

1.2 ARM の紹介#

ARM は ARM 社を指すだけでなく、ARM プロセッサコアも指します

ARM 社は世界をリードする半導体知的財産(IP)プロバイダーであり、全世界の 95% 以上のスマートフォンとタブレットが ARM アーキテクチャを採用しています

ARM 社は ARM コアを設計し、半導体メーカーがコア周辺回路を完成させ、チップを生産します

image-20220809083032037

image-20220809083101283

1.3 STM32F103C8T6 の紹介#

シリーズ:主流シリーズ STM32F1

コア:ARM Cortex-M3

主周波数:72MHz

RAM:20K(SRAM)

ROM:64K(Flash)

供給電圧:2.0~3.6V(標準 3.3V)

パッケージ:LQFP48

image-20220809084122792

1.4 オンチップリソース / 周辺機器(Peripheral)#

STM32 は FreeRTOS、UCOS などのオペレーティングシステムを追加できます。これらのオペレーティングシステムを使用する場合、SysTickがタスク切り替え機能のためのタイミングを提供する必要があります。

UARTは非同期シリアルポートを意味し、STM32USARTは非同期シリアルポートと同期シリアルポートの両方をサポートしていますが、非同期シリアルポートが比較的多く使用されます

英語略語名称英語略語名称
NVICネストベクタ割り込みコントローラCANCAN 通信
SysTickシステムティックタイマーUSBUSB 通信
RCCリセットとクロック制御RTCリアルタイムクロック
GPIO汎用 IO ポートCRCCRC チェック
AFIOマルチファンクション IO ポートPWR電源制御
EXTI外部割り込みBKPバックアップレジスタ
TIMタイマーIWDG独立ウォッチドッグ
ADCアナログ - デジタルコンバータWWDGウィンドウウォッチドッグ
DMAダイレクトメモリアクセスDACデジタル - アナログコンバータ
USART同期 / 非同期シリアル通信SDIOSD カードインターフェース
I2CI2C 通信FSMCフレキシブル静的メモリコントローラ
SPISPI 通信USB OTGUSB ホストインターフェース

1.5 チップ命名規則#

image-20220809084423056

1.6 システム構造#

Cortex-M3コアは 3 つのバスを引き出します。ICode命令バス、DCodeデータバス、Systemシステムバス

ICodeバスとDCodeバスは主にFlashフラッシュメモリを接続するために使用されます

Flashには私たちが書いたプログラムが保存されています

ICode命令バスはプログラム命令をロードするために使用されます

DCodeデータバスはデータをロードするために使用されます。例えば、定数やデバッグデータなどです

SystemシステムバスはSRAMFSMCに接続されています

SRAMはプログラム実行時の変数データを保存するために使用されます

AHBシステムバスは主要な周辺機器を接続するために使用されます。AHB はアドバンストハイパフォーマンスバスの略で、接続されるのは一般的に最も基本的または性能が高い周辺機器です。例えば、リセットとクロック制御などの最も基本的な回路、またSDIOAHBに接続されています

APB1APB2の 2 つの周辺バスがあります。APBはアドバンスト周辺バスの略で、一般的な周辺機器を接続するために使用されます。

AHBAPBのバスプロトコル、バス速度、データ転送形式の違いにより、中間に 2 つのブリッジを追加してデータの変換とキャッシュを行う必要があります。AHBの全体的な性能はAPBよりも高く、APB2の性能はAPB1の性能よりも高いです。APB2は一般的にAHBと同じ周波数で、どちらも 72MHz です。APB1は一般的に 36MHz です。したがって、APB2に接続されるのは一般的に周辺機器の中でやや重要な部分です。例えば、GPIOポートやいくつかの周辺機器の 1 号選手(USART1SPI1TIM1TIM8など)、TIM8TIM1は同様に高級タイマーであり、重要な周辺機器です。ADCEXTIAFIOAPB2に接続されています。他の 2、3、4、5 号周辺機器、DAC、PWR、BKP などのやや重要度が低い周辺機器はAPB1に割り当てられます。もちろん、使用時には個人は一般的にAPB2APB1の性能差を感じることはなく、どの周辺機器がどのバスに接続されているかを知っていれば十分です

DMAは CPU の小さな秘書のように機能します。例えば、大量のデータを移動させる作業は、CPU にやらせるのは時間の無駄です。DMAは主にこれらの単純で繰り返し行う必要がある作業を行います。DMADMAバスを介してバスマトリックスに接続され、CPU と同じバス制御権を持ち、これらの周辺機器にアクセスします。データをDMAで移動する必要があるとき、周辺機器はリクエストラインを介してDMAリクエストを送信し、DMAはバス制御権を取得し、データにアクセスして転送します。このプロセス全体に CPU の参加は必要なく、CPU の時間を他の作業に使うことができます

image-20220809084538311

1.7 ピン定義#

赤色は電源関連のピンです

青色は最小システム関連のピンです

緑色は IO ポート、機能ポートなどのピンです

Sタイプは電源を表します

Iタイプは入力を表します

Oタイプは出力を表します

IOタイプは入力出力を表します

FTはこのピンが5Vの電圧に耐えられることを示し、FTがないものは3.3Vの電圧にしか耐えられません

STM32内部は分割電源方式を採用しており、電源ピンが多く、使用時にはVSSはすべてGNDに接続し、VDDはすべて3.3Vに接続します

STM32SWDJTAGの 2 つのデバッグ方式をサポートしています

SWDは 2 本の線が必要で、それぞれSWDIOSWCLKです

JTAGは 5 本の線が必要で、それぞれJTMSJTCKJTDIJTDONJTRSTです

STLINKSWD方式を使用してデバッグプログラムをダウンロードするため、PA13PA14の 2 つのIOポートのみを占有します

SWD方式でダウンロードする際、PA15PB3PB4は通常のIOポートとして使用するために切り替えることができますが、プログラム内で設定する必要があります。設定しない場合、デフォルトでは IO ポートとして使用されません

image-20220810080019866

image-20220811092650888

ピン番号ピン名ピン定義主機能
1VBAT予備バッテリー供給ピン。このピンには 3V バッテリーを外付けでき、システム電源が切れたとき、予備バッテリーが内部の RTC クロックとバックアップレジスタに電源を供給しますVBAT
2PC13-TAMPER-RTCI/O ポートまたは侵入検知または RTC。IO ポートはプログラムに応じて高低レベルを出力または読み取ることができ、侵入検知はセキュリティ機能に使用でき、RTC は RTC キャリブレーションクロック、RTC アラームパルスまたは秒パルスを出力するために使用できますPC13
3、4PC14-OSC32_IN/PC15-OSC32_OUTIO ポートまたは 32.768KHz の RTC クリスタルを接続PC14/PC15
5、6OSC_IN/OSC_OUTシステムの主クリスタルを接続します。一般的には 8MHz で、チップ内部には位相同期回路があり、この 8MHz の周波数を倍増して最終的に 72MHz の周波数を生成し、システムの主クロックとして使用しますOSC_IN/OSC_OUT
7NRSTシステムリセットピン。N は低レベルリセットを示しますNRST
8,9VSSA/VDDA内部アナログ部分の電源。例えば ADC、RC オシレータなど。VSS は負極が GND に接続され、VDD は正極が 3.3V に接続されますVSSA/VDDA
10PA0-WKUPIO ポート兼 WKUP 機能。待機モードの STM32 をウェイクアップできますPA0
11-19PA1、PA2、PA3、PA4、PA5、PA6、PA7、PB0、PB1IO ポートPA1-PB1
20PB2IO ポートまたは BOOT1 ピン。BOOT ピンは起動モードを設定するために使用されますPB2/BOOT1
21,22PB10、PB11IO ポートPB10,PB11
23,24VSS_1/VDD_1システム主電源口。VSS は負極、VDD は正極VSS_1/VDD_1
25-33PB12、PB13、PB14、PB15、PA8、PA9、PA10、PA11、PA12IO ポートPB12、PB13、PB14、PB15、PA8、PA9、PA10、PA11、PA12
34PA13IO ポートまたはデバッグポートJTMS/SWDIO
35,36VSS_2/VDD_2システム主電源口。VSS は負極、VDD は正極VSS_2/VDD_2
37-40PA14/PA15/PB3/PB4IO ポートまたはデバッグポート(デバッグとプログラムダウンロード用)JTCK_SWCLK/JTDI/JTDO/NJTRST
41-43PB5/PB6/PB7IO ポートPB5/PB6/PB7
44BOOT0BOOT1 と同様に起動設定に使用されますBOOT0
45,46PB8/PB9IO ポートPB8/PB9
47,48VSS_3/VDD_3システム主電源口。VSS は負極、VDD は正極VSS_3/VDD_3

1.8 起動設定#

起動設定の目的はプログラムの実行開始位置を指定することです。一般的にプログラムはフラッシュプログラムストレージから実行されますが、特定の状況下ではプログラムを他の場所から実行させて特別な機能を達成することもできます

BOOT1=0 BOOT0=1 モードはシリアルポートダウンロード用で、システムメモリにはSTM32内の一部のBootLoaderプログラムが保存されています。BootLoaderプログラムの役割はシリアルポートからデータを受信し、それを主フラッシュメモリに書き込むことです。これにより、シリアルポートを使用してプログラムをダウンロードできるようになります。一般的に、シリアルポートでプログラムをダウンロードする必要があるときは、このモードに設定します

BOOT0=0 の起動モードは主フラッシュストレージモードで、主フラッシュストレージが起動領域として選択され、この時フラッシュメモリ内のプログラムが正常に実行されます。このモードは最も一般的なモードで、通常はこの設定が使用されます

BOOT1=1 BOOT0=1 の設定はSRAM起動で、このモードは主にプログラムデバッグに使用され、現段階ではあまり使用されていません

BOOTピンの値は電源投入リセットの瞬間に有効で、その後は自由に設定できます

image-20220809084630785

1.9 最小システム回路#

OSC32は 32.768KHz クリスタルを意味し、32768 は 2 の 15 乗です。内部 RTC 回路は 2 の 15 乗で分周することで 1 秒の時間信号を生成できます。

image-20220809084704647

RTCクリスタルは 32.768KHz クリスタルです

img

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。