STM32G4 – LPUART
低電力ユニバーサル非同期レシーバ/トランスミッタ･インタフェース

1.0版

こんにちは。STM32低電力ユニバーサル非同期レシーバ/トランスミッタインタフェースのプレゼンテーションへようこそ。ここでは、シリアル通信に広く使用されている、このインタフェースの主な機能について説明します。

1

概要

2

• LPUART（Low Power Universal AsynchronousReceiver/Transmitter）
低電力ユニバーサル非同期受信/送信機

STM32G4• 低速32.768kHzの外部オシレータ（LSE）使用時、9600ボーでフルUART通信
STOPモードからのウェイクアップ機能• 他のクロックソースで、より高いボーレートも可能
Tx

LPUART
Rx

アプリケーション側の利点• デバイス間の安価な通信リンク• 数本のピンしか必要としないシンプルなハードウェア• 低電力のSTOPモードからウェイクアップ• 送受信FIFO STOPモードでの送受信が可能

低電力ユニバーサル非同期レシーバは、LPUARTが低速の外部32.768kHzオシレータ（LSE）を使用してクロック供給されているとき、9600ボーでのフルUART通信を提供します。
LSEクロックとは別のクロックソースによってクロック供給すると、さらに高いボーレートを達成できます。
アプリケーションは、少数のピンしか必要としない容易で安価なデバイス間の接続を利用できます。さらに、LPUARTペリフェラルは、低電力モードで機能します。送受信FIFOを備えているため、STOPモードでの送受信が可能です。

2

主な機能

3

• 完全にプログラム可能なシリアル･インタフェース• データは、7、8、または9ビット
•
•
•
•
•

パリティ：偶数、奇数、パリティなし
ストップビット1ビットまたは2ビット
データ順をプログラム可能（MSBファースト/LSBファースト）
送信と受信の信号極性をプログラム可能
プログラム可能なボーレート･ジェネレータ

• データ送信および受信用の2つの内部FIFO• RS-232およびRS-485ハードウェア･フロー制御をサポート

LPUARTは完全にプログラム可能なシリアルインタフェースであり、データ長、自動的に生成およびチェックされるパリティ、ストップビットの数、データ順、送受信の信号極性、ボーレートジェネレータなどの機能を設定できます。
LPUARTはFIFOモードで動作でき、送信FIFOと受信FIFOを備えています。
RS-232およびRS-485ハードウェアフロー制御オプションをサポートします。

3

主な機能（続き）

4• デュアル･クロック･ドメイン設定可能：• UARTがSTOPモードからのウェイクアップを駆動• PCLKに依存しない便利なボーレート･プログラミング• マルチプロセッサ通信• 単線半二重通信• 最大ボーレートは次のとおり• lpuart_ker_ckがLSE32.768kHzの場合は9600ボー• lpuart_ker_ckが100MHzの場合は33.3メガボー

LPUARTはデュアルクロックドメインをサポートするため、STOPモードからのウェイクアップと、ペリフェラルクロックに依存しないボーレートプログラミングが可能です。
マルチプロセッサモードにより、LPUARTはアドレス指定されていないときにはアイドル状態のままです。
全二重通信のほかに、単線半二重モードもサポートします。
最大ボーレートは、クロックソースがLSEの場合は9600bps、lpuart_ker_ckクロックが100MHzの場合は33.3Mpbsです。

4

STM32G4 USART/UART/LPUART機能USART1/2/3

UART4/5

LPUART

モデムのハードウェア･フロー制御

xxx

マルチプロセッサ通信xxx

同期モード（スレーブ/マスタ）x--

USART機能

スマートカード･モード

x--

単線半二重通信xx

x

IrDA SIR ENDEC

xx-

LINモードxx-

デュアル･クロック･ドメインとSTOPモードからのウェイクアップ

xxx

レシーバ･タイムアウト

xx-

Modbus通信xx-

自動ボーレート検出xx-

ドライバの有効xxx

7、8、9ビット

データ長
TX/RX FIFO
TX/RX FIFOサイズ（バイト）

5xxx

8

STM32G4デバイスは、1つのLPUARTを内蔵します。
USARTと比較して、LPUARTは同期モード、スマートカードモード、IrDAモード、およびLINモードをサポートしていません。
レシーバタイムアウト、Modbus通信、自動ボーレート検出機能もサポートしていません。

5ブロック図6

RCC_CCIPRSYSCLK
HSI16

lpuart_ker_ck

LSE

LPUART_PSC
1-256

lpuart_ker_ck_pres

LPUART_BRR
768-65536

データコントロール
&FIFO

Tx
Rx

PCLK

ハードウェアフローコントロール

lpuart_pclk

nRTS/DE

nCTS

レジスタ

APBバス

これはLPUARTブロック図です。
LPUARTクロック（lpuart_ker_ck）は、ペリフェラルクロック（APBクロック）、システムクロック、高速内部RCオシレータ（HSI16）、低速外部32.768kHzクリスタルオシレータ（LSE）など、複数のソースから選択できます。
LPUARTクロックソースは、1～256の範囲のLPUART_PSCレジス
タでプログラム可能な係数で分周されます。
TxおよびRxピンは、データ送信とデータ受信に使用されます。
nCTSおよびnRTSピンは、RS-232ハードウェアフロー制御に使用されます。
ドライバイネーブル（DE）信号は、nRTSと同じI/Oで使用でき、RS-485モードで使用されます。

6

デュアル･クロック･ドメイン

7

PCLK再プログラミングから独立したボーレート･プログラミング
lpuart_ker_ckクロック･ドメイン
Rxlpuart_ker_ck

ボーレート
ジェネレータTx
Rxシフトレジスタ

RxFIFOまたはバッファTxシフトレジスタ

LPUARTレジスタ

nCTS

TxFIFOまたはバッファ

APBスレーブ
インタフェース
lpuart_pclk

nRTS/DE

HW フロー
コントロール

APB

IRQ
インタフェース

lpuart_it

DMA
インタフェース

lpuart_tx_dma

lpuart_wkup

lpuart_rx_dma

lpuart_pclkクロックドメイン

LPUARTは、柔軟性の高いクロック制御スキームを備えています。
レジスタはAPBバスを介してアクセスされ、カーネルはAPBクロッ
クから独立したlpuart_ker_ck（プリスケールされているか、または、クロックされていない）でクロックされます。
あるクロック・ドメインからもう一方のクロック・ドメインにデータを渡すために、8データFIFOが使用されるか、シングル・データ・バッファが使用されます。
LPUARTブロックは、メモリバッファとの間でデータを転送するDMA要求に依存できるAPBスレーブです。
TXピンとRXピンの機能を交換できます。これにより、別のUARTとの有線接続の場合に動作します。

7データフォーマット

8

サポートされるデータ長：7、8、および9ビット
スタート･ビット可能なパリティ･ビット

ストップ･ビット（1または2）

7ビットデータb0 b1 b2 b3 b4 b5 b6
スタート･ビット可能なパリティ･ビット

ストップ･ビット（1または2）

8ビットデータb0 b1 b2 b3 b4 b5 b6 b7
スタート･ビット可能なパリティ･ビット

ストップ･ビット（1または2）

9ビットデータb0 b1 b2 b3 b4 b5 b6 b7 b8

フレームフォーマットは、一連のデータビットと同期のためのビットに加えて、オプションでエラーチェックのためのパリティビットで構成されます。
フレームはスタートビット1ビット（S）で始まり、ラインは1ビット周期だけローに駆動されます。
これがフレームの開始を通知し、同期のために使用されます。
データ長は、パリティビットを含めた場合、9、8、または7ビットで設定できます。
最後に、1または2ビットのストップビットがあり、ここでラインはハイに駆動されて、フレームの終了を示します。

8

アイドル/ブレーク･キャラクタ
スタート･ビット標準フレーム可能なパリティ･ビット

ストップ･ビット9

次のスタート･ビット

b0 b1 b2 b3 b4 b5 b6 b7
スタート･ビットアイドル･キャラクタ

2ストップ･ビット
ブレーク･キャラクタ

前のスライドでは、標準的なフレームを説明しました。このスライドは、1ビットのストップビットで構成された8ビットデータフレームの例を示しています。
アイドルキャラクタは、すべてが「1」のフレームとして解釈されます。
「1」の数にはストップビットの数も含まれます。
ブレークキャラクタは、フレーム周期中、すべて「0」を受信することと解釈されます。
ブレークフレームの終わりに、2ストップビットが挿入されます。

9

全二重/半二重モード

10

全二重：二線
半二重：単線
LPUART1• LPUART全二重通信• TxおよびRxラインが他方のインタフェースのRxおよびTxラインとそれぞれ接続

LPUART2

Tx

Rx

Rx

Tx
全二重• LPUART単線半二重プロトコル• Txピンは送信と受信の両方に使用

LPUART1

R = 10 KΩ

• TxラインとRxラインが内部接続

VDD

Tx

LPUART2
Tx

半二重

LPUARTは全二重通信をサポートしています。TxおよびRxラインが他方のインタフェースのRxおよびTxラインとそれぞれ接続されます。
LPUARTは、単線半二重のプロトコルに従うように設定することもでき、TxおよびRxラインは内部接続されます。この通信モードでは、Txピンだけが送信と受信の両方に使用されます。データが送信されないときには、Txピンは常に解放されます。したがって、アイドルまたは受信状態では、標準I/Oとして機能します。この用途では、I/Oは、代替機能のオープンドレインモードのTxで、外部プルアップレジスタで設定する必要があります。

10RS-232ハードウェア・フロー制御

11

データアンダーラン/オーバーランを避けるためのハードウェア・ハンドシェイク• RS-232ハードウェア・フロー制御• nRTS（Request to Send）出力のアサート
は、レシーバがデータを受け入れる準備ができたことを示す

LPUART1
Tx
Tx回路• nCTS（Clear to Send）入力のアサートは、トランスミッタが通信を続行できることを示す• 特に半二重システムで有用

nCTS
Rx

Rx回路

nRTS

LPUART2
RxnRTS

Rx回路

Tx
nCTS

Tx回路

RS-232規格では、nCTS入力とnRTS出力を使用することによって、2つのデバイス間のシリアルデータフローを制御できます。
この2つのラインにより、レシーバとトランスミッタは互いに状態をアラートできます。
このスライドは、このモードで2つのデバイスを接続する方法を示しています。
このアイデアは、半二重通信の場合の欠落またはデータの衝突を防止します。
両方の信号がアクティブローです。

11

RS-485ハードウェア・フロー制御

12

ハードウェア・ハンドシェイク• マスタが方向信号を生成してトランシーバ（物理層（PHY））を制御する必要がある半二重システムで有用• この信号は物理層に送信または受信モードで動作しなければならないかどうかを通知• DE（Driver Enable）ピンを使用して、外部RS-485バスドライバを有効化• DEおよびnRTS信号は、同じピンで使用可能

RS-485のようなシリアル半二重通信プロトコルでは、マスタは方向信号を生成してトランシーバ（物理層）を制御する必要があります。
この信号は物理層に送信または受信モードで動作しなければならないかどうかを通知します。
RS-485モードでは、外部トランシーバ制御を有効にするために、制御ライン「ドライバイネーブル」が使用されます。
DE制御ラインはnRTSとピンを共有します。

12

マルチプロセッサ通信

13

複数のデバイス間の通信• マルチプロセッサ通信では、目的のメッセージ受信者だけがメッセージを積極的に受信は禁止• アドレス指定されていないデバイスをミュート・モードにすることが可能• ミュート・モードを制御する2つの方法• アイドルライン検出• アドレスマーク検出

複数のプロセッサ間の通信を単純化するために、LPUARTは特殊なマルチプロセッサモードをサポートします。
マルチプロセッサ通信では、目的のメッセージ受信者だけがメッセージを積極的に受信することが望ましいです。
アドレス指定されていないデバイスをミュートモードにするには、2つの方法があります。
アイドルラインまたはアドレスマークです。
LPUARTがミュートモードを有効または無効にするには、2つの方法のいずれかを使用します。
アイドルライン検出

アドレスマーク検出

13

FIFO

14

STOPモードでも送受信• FIFOモードは、ソフトウェアによって有効/無効化が可能• 送信FIFO（TXFIFO）と受信FIFO（RXFIFO）• TXFIFOとRXFIFOのサイズは16データ・ビット• FIFOはカーネルクロックドメインにあるSTOPモードでも送受信可能• TXFIFOとRXFIFOの閾値

LPUARTは、ソフトウェアによって有効化／無効化されるFIFOモードで動作できます。デフォルトでは無効です。
LPUARTは送信FIFO（TXFIFO）と受信FIFO（RXFIFO）を備え、それぞれ8データの深さです。
TXFIFOは9ビット幅です。RXFIFOのデフォルト幅は12ビットです。
この理由は、レシーバはFIFOにデータを格納するだけでなく、各キャラクタに伴うエラーフラグ（パリティエラー、ノイズエラー、およびフレーミングエラーフラグ）も格納するためです。
TXFIFOとRXFIFOがカーネルクロックによってクロック供給される
場合、STOPモードでもデータの送信と受信が可能です。
TXFIFOとRXFIFOの閾値を設定することができ、主にSTOPモードからのウェイクアップ時のアンダーラン／オーバーラン問題を回避するために使用されます。

14

STOPモードからのウェイクアップ

15• LPUARTは、LPUARTクロックソースが以下のとき、MCUをSTOPモードからウェイクアップ可能• 高速内蔵RCオシレータ（HSI）• 低速外付け32.768kHzクリスタル・オシレータ（LSE）• ウェイクアップのソースは以下のいずれか：• 以下によってトリガされる特定のウェイクアップ・イベント• スタート・ビット• アドレス一致• 受信データ• FIFO管理が無効なときの標準RXNE割込み• FIFO管理が有効な場合にFIFOイベントが中断• RXFIFOフル、TXFIFOエンプティ、またはRXFIFO/TXFIFOがプログラムされた閾値に達したとき

LPUARTは、LPUARTクロックソースがHSIまたはLSEクロックのとき、MCUをSTOPモードからウェイクアップできます。
ウェイクアップのソースは以下のいずれかです。


スタートビットまたはアドレス一致または受信データによってトリガされる特定のウェイクアップイベント
FIFO管理が無効なときのRXNE割込み
FIFO管理が有効なときのFIFOイベント割込み

15

割込み
割込みイベント16

説明

送信データ・レジスタ・エンプティ

送信データ・レジスタが空であり、書込み準備ができているときにセット送信完了

データ送信が完了し、データレジスタとシフトレジスタの両方が空のときにセットCTS

nCTS入力がトグルしたときにセット

受信データ・レジスタ・ノットエンプ
ティ

受信データ・レジスタにデータがあり、読出し準備ができているときにセットアイドルライン

アイドルラインが検出されたときにセットキャラクタ一致

受信データがプログラムされたアドレスに一致したときにセットSTOPモードからのウェイクアップ

ウェイクアップ・イベント（スタートビットまたはアドレス一致または受信データ）が確認されたときにセット

この表は、割込みを生成するLPUARTイベントを示しています。

16

割込み
割込みイベント

17

説明

送信FIFOノットフル

送信FIFOがフルでないときにセット送信FIFOエンプティ

送信FIFOが空のときにセット送信FIFO閾値

プログラムされた閾値に達するとセット

受信FIFOノットエンプティ受信FIFOが空でないときにセット受信FIFOフル

受信FIFOがフルのときにセット受信FIFO閾値

プログラムされた閾値に達したときにセット

この表は、FIFO管理が有効なときのFIFOイベント割込みを示しています。

17

DMA

18

• DMAリクエストは以下によってトリガ• FIFO管理が無効なとき、送信データ・レジスタがエンプティおよび受信データ・レジスタがフル• FIFO管理が有効なとき、送信FIFOがフルでないおよび受信FIFOがエンプティでない

DMAリクエストは、FIFO管理が無効なときには、受信バッファノッ
トエンプティまたは送信バッファエンプティフラグがセットされたときに生成されます。
DMAリクエストは、FIFO管理が有効なときには、送信FIFOノットフルおよび受信FIFOノットエンプティフラグがセットされたときに生成されます。

18

エラー割込み
割込みイベント

説明

オーバーラン・エラー

オーバーラン・エラーが発生したときにセットパリティ・エラー

パリティ・エラーが発生したときにセット

フレーミング・エラー

同期外れまたは過剰ノイズが検出されたときにセットノイズ・エラー

受信フレームのスタート・ビットでノイズが検出されたときにセット

19

いくつかのエラーフラグもまた、表に示されているように、LPUARTによって生成されます。
オーバーラン、パリティ、およびフレーミングエラーフラグは、それぞれ対応するエラーが発生したときにセットされます。
ノイズエラーフラグは、受信フレームのスタートビットでノイズが検出されたときにセットされます。

19

低電力モード
モード

20

説明

RUN/低電力RUN

有効SLEEP/低電力
SLEEP

有効• ペリフェラル割込みによって、デバイスはSLEEPモードを終了

STOP0
STOP1

LPUARTレジスタの内容は保持• LPUARTクロックがHSIまたはLSEに設定されている場合、LPUARTはSTOPモードからMCUを起動可能

STANDBY
SHUTDOWN

パワーダウン状態• STANDBYまたはSHUTDOWNモード終了後にペリフェラルを再初期化する必要がある

LPUARTペリフェラルは、RUN、SLEEP、低電力モードでアクティブです。
LPUART割込みによって、デバイスはSLEEPモードと低電力SLEEPモードから復帰します。
LPUARTクロックがHSIまたはLSEに設定されている場合、LPUARTは、STOP0モードおよびSTOP1モードからMCUをウェイクアップできます。
USART受信はSTOPモードで機能し、スタート、アドレス一致または受信フレームイベントでウェイクアップ割込みを生成します。
STANDBYモードとSHUTDOWNモードでは、ペリフェラルはパワーダウン状態になり、STANDBYまたはSHUTDOWNモードからの復帰後に再初期化する必要があります。

20

関連ペリフェラル

21• LPUARTに関する以下のペリフェラル・トレーニングを参照してください。
• GPIO（オルタネート機能設定）• リセットおよびクロック・コントローラ（RCC）• 電源コントローラ（PWR）• 割込み（NVICおよびEXTI）• ダイレクト・メモリ・アクセス（DMA）コントローラ

これは、LPUARTに関連するペリフェラルのリストです。必要な場
合、詳細については、これらのペリフェラルトレーニングを参照してください。
GPIO（General Purpose Input/Output、汎用入出力）

リセットおよびクロックコントローラ

電源コントローラ



割込みコントローラダイレクトメモリアクセスコントローラ

21