USART support(usart.h)
ユニバーサル同期/非同期レシーバ/トランスミッタ(USART、または一般的なシリアルポート)のサポート
原文
ヘッダーファイル:libmaple/usart.h
関連ヘッダーファイル:stm32f1/include/series/usart.h
概要
ユニバーサル同期/非同期レシーバ/トランスミッタ(USART、または一般的にシリアルポート)をサポートしています。
データ型
■ struct usart_reg_map
USARTレジスタ・マップ・タイプ
__IO uint32 SR ステータス・レジスタ
__IO uint32 DR データレジスタ
__IO uint32 BRR ボーレート・レジスタ
__IO uint32 CR1 制御レジスタ1
__IO uint32 CR2 制御レジスタ2
__IO uint32 CR3 制御レジスタ3
__IO uint32 GTPR ガードタイム・プリスケーラ・レジスタ
■ struct usart_dev
SARTデバイスタイプ
usart_reg_map *regs レジスタ・マップ
ring_buffer *rb RXリングバッファ
ring_buffer *wb TXリングバッファ
uint32 max_baud 最大ボーレート
uint8 rx_buf[USART_RX_BUF_SIZE] rbが使用する実際のRXバッファ(このフィールドは、将来のリリースで削除されます)
uint8 tx_buf[USART_TX_BUF_SIZE] wbによって使用される実際のTXバッファ
rcc_clk_id clk_id RCCクロック情報
nvic_irq_num irq_num USART NVIC割り込み
デバイス
■ usart_dev * USART1 USART1デバイス
■ usart_dev * USART2 USART2デバイス
■ usart_dev * USART3 USART3デバイス
■ usart_dev * UART4 UART4 デバイス
■ usart_dev * UART5 UART5デバイス
API関数
■ void usart_init(usart_dev *dev)
シリアルポートを初期化します。
引数
dev :初期化するシリアルポート・デバイス
■ void usart_config_gpios_async(usart_dev *udev, struct gpio_dev *rx_dev, uint8 rx, struct gpio_dev *tx_dev, uint8 tx, unsigned flags)
USART TX / RXとして使用するためのGPIOの設定
引数
udev :使用するUSARTデバイス
rx_dev :RXピン(gpio_dev)
rx :rx_devのRXピンのビット
tx_dev :TXピン(gpio_dev)
tx :tx_devのTXピンのビット
flags :現在無視されている
■ void usart_set_baud_rate(usart_dev *dev, uint32 clock_speed, uint32 baud)
シリアルポートのボーレートを設定します。
引数
dev :設定するシリアルポート
clock_speed :クロック速度(MHz単位)
baud :送信/受信のボーレート
■ void usart_enable(usart_dev *dev)
シリアルポートを有効にします。
USARTはシングルバッファ送信モード、マルチバッファ受信モード、8n1でイネーブルされます。
シリアルポートは正しく動作するように構成されたボーレートが必要です。
引数
dev :有効にするシリアルポート
■ void usart_disable(usart_dev *dev)
シリアルポートをオフにします。
引数
dev :無効にするシリアルポート
■ static void usart_disable_all(void)
すべてのシリアルポートを無効にします。
■ void usart_foreach(void (*fn)(usart_dev *dev))
各USARTで関数を呼び出します。
引数
fn :呼び出す関数
■ uint32 usart_tx(usart_dev *dev, const uint8 *buf, uint32 len)
ノンブロッキングUSART送信
引数
dev :送信するシリアルポート
buf :送信するバッファ
len :送信する最大バイト数
戻り値
送信バイト数
■ uint32 usart_rx(usart_dev *dev, uint8 *buf, uint32 len)
ノンブロッキングUSART受信
引数
dev :受信するシリアルポート
buf :受信バッファ
len :受信する最大バイト数
戻り値
受信バイト数
■ void usart_putudec(usart_dev *dev, uint32 val)
符号なし整数を10進形式で指定されたシリアルポートに送信します。
この機能は、整数の数字が完全に送信されるまでブロックします。
引数
dev :送信するシリアルポート
val :送信する整数値
■ static void usart_putc(usart_dev* dev, uint8 byte)
シリアルポートで1文字送信します。
この機能は、文字が正常に送信されるまでブロックします。
引数
dev :送信するシリアルポート
byte :送信する文字
■ static void usart_putstr(usart_dev *dev, const char* str)
シリアルポートに文字列を送信します。
この関数は、strが完全に送信されるまでブロックします。
引数
dev :送信するシリアルポート
str :送信する文字列
■ static uint8 usart_getc(usart_dev *dev)
シリアルポートから1文字を読み込みます。
シリアルポートにデータがない場合は、この関数を呼び出すのは安全ではありません。
引数
dev :読み込むシリアルポート
戻り値
読み込んだバイトデータ
■ static int usart_peek(usart_dev *dev)
シリアルポートに着信しているデータを確認します。
データの取出しは行いません。
引数
dev :確認するシリアルポート
戻り値
読み込んだバイトデータ
■ static uint32 usart_data_available(usart_dev *dev)
シリアルポートのRXバッファ内のなデータ量を返します。
引数
dev :確認するシリアルポート
戻り値
RXバッファ内のバイト数
■ static void usart_reset_rx(usart_dev *dev)
シリアルポートのRXバッファの内容を破棄します。
引数
dev :バッファを空にするシリアルポート
■ static void usart_reset_tx(usart_dev *dev)
シリアルポートのTXバッファの内容を破棄します。
引数
dev :バッファを空にするシリアルポート
レジスタマップベースポインタ
USART1_BASE ((struct usart_reg_map*)0x40013800) USART1 レジスタマップベースポインタ
USART2_BASE ((struct usart_reg_map*)0x40004400) USART2 レジスタマップベースポインタ
USART3_BASE ((struct usart_reg_map*)0x40004800) USART3 レジスタマップベースポインタ
UART4_BASE ((struct usart_reg_map*)0x40004C00) UART4レジスタマップのベースポインタ
UART5_BASE ((struct usart_reg_map*)0x40005000) UART5レジスタマップのベースポインタ
レジスタのビット定義
ステータスレジスタ
ビット番号
USART_SR_CTS_BIT [9] (rc_w0)  CTS フラグ
USART_SR_LBD_BIT [8] (rc_w0) LIN ブレーク検出フラグ
USART_SR_TXE_BIT [7] (r) 送信データレジスタエンプティ
USART_SR_TC_BIT [6] (rc_w0) 送信完了
USART_SR_RXNE_BIT [5] (c_w0) リードデータレジスタノットエンプティ
USART_SR_IDLE_BIT [4] (r) アイドルライン検出
USART_SR_ORE_BIT [3] (r) オーバーランエラー
USART_SR_NE_BIT [2] (r) ノイズエラーフラグ
USART_SR_NF_BIT [2] (r) ノイズフラグ(USART_SR_NE_BITと同じ)
USART_SR_FE_BIT [1] (r) フレーミングエラー
USART_SR_PE_BIT [0] (r) パリティエラー
一部のシリーズ(STM32F2など)では、「ノイズエラー」の元の「NE」の代わりに「ノイズフラグ」に「NF」を使用しています。 ビットの意味は変わりませんが、回線にノイズがない場合はNFフラグを無効にすることができます。
設定値
USART_SR_CTS BIT(USART_SR_CTS_BIT) CTS フラグ
USART_SR_LBD BIT(USART_SR_LBD_BIT) LIN ブレーク検出フラグ
USART_SR_TXE BIT(USART_SR_TXE_BIT) 送信データレジスタエンプティ
USART_SR_TC BIT(USART_SR_TC_BIT) 送信完了
USART_SR_RXNE BIT(USART_SR_RXNE_BIT) リードデータレジスタノットエンプティ
USART_SR_IDLE BIT(USART_SR_IDLE_BIT) アイドルライン検出
USART_SR_ORE BIT(USART_SR_ORE_BIT) オーバーランエラー
USART_SR_NE BIT(USART_SR_NE_BIT) ノイズエラーフラグ
USART_SR_NF USART_SR_NE ノイズフラグ
USART_SR_FE BIT(USART_SR_FE_BIT) フレーミングエラー
USART_SR_PE BIT(USART_SR_PE_BIT) パリティエラー
データレジスタ
ビットのマスク
USART_DR_DR 0xFF データ値
ボーレートレジスタ
ビットのマスク
USART_BRR_DIV_MANTISSA (0xFFF << 4) USARTDIVの仮数
USART_BRR_DIV_FRACTION 0xF USARTDIVの分数
制御レジスタ1
ビット番号の定義
USART_CR1_UE_BIT [13] (rw) USART イネーブル
USART_CR1_M_BIT [12] (rw) ワード長
USART_CR1_WAKE_BIT [11] (rw) ウェークアップ (Wake-Up) 方法
USART_CR1_PCE_BIT [10] (rw) パリティ制御有効
USART_CR1_PS_BIT [9] (rw) パリティ選択
USART_CR1_PEIE_BIT [8] (rw) パリティ・エラー (PE) 割込みリクエスト許可
USART_CR1_TXEIE_BIT [7] (rw) 送信データ・レジスタ・エンプティ (TXE) 割込みリクエスト許可
USART_CR1_TCIE_BIT [6] (rw) 送信完了割込みリクエスト許可
USART_CR1_RXNEIE_BIT [5] (rw) 受信データ・レジスタ・データ有効 (RXNE) 割込みリクエスト許可
USART_CR1_IDLEIE_BIT [4] (rw) アイドル・ライン検出 (IDLE) 割込みリクエスト許可
USART_CR1_TE_BIT [3] (rw) 送信イネーブル
USART_CR1_RE_BIT [2] (rw) 受信イネーブル
USART_CR1_RWU_BIT [1] (rw) 受信回路ウェークアップ (Wake-Up)
USART_CR1_SBK_BIT [0] (rw) ブレーク送出
設定値
USART_CR1_UE USART イネーブル
USART_CR1_M ワード長
USART_CR1_WAKE ウェークアップ (Wake-Up) 方法
USART_CR1_PCE パリティ制御有効
USART_CR1_PS パリティ選択
USART_CR1_PEIE パリティ・エラー (PE) 割込みリクエスト許可
USART_CR1_TXEIE 送信データ・レジスタ・エンプティ (TXE) 割込みリクエスト許可
USART_CR1_TCIE 送信完了割込みリクエスト許可
USART_CR1_RXNEIE 受信データ・レジスタ・データ有効 (RXNE) 割込みリクエスト許可
USART_CR1_IDLEIE アイドル・ライン検出 (IDLE) 割込みリクエスト許可
USART_CR1_TE 送信イネーブル
USART_CR1_RE 受信イネーブル
USART_CR1_RWU 受信回路ウェークアップ (Wake-Up)
USART_CR1_SBK ブレーク送出
制御レジスタ2
ビット番号の定義
USART_CR2_LINEN_BIT [14] (rw) LIN モードイネーブル
USART_CR2_CLKEN_BIT [11] (rw) クロック・イネーブル
USART_CR2_CPOL_BIT [10] (rw) クロック極性
USART_CR2_CPHA_BIT [9] (rw) クロック位相
USART_CR2_LBCL_BIT [8] (rw) 最終ビットクロック
USART_CR2_LBDIE_BIT [6] (rw) LIN ブレーク検出割込みリクエスト許可
USART_CR2_LBDL_BIT [5] (rw) LIN ブレーク検出長
設定値
USART_CR2_LINEN BIT(USART_CR2_LINEN_BIT) LIN モードイネーブル・マスク
USART_CR2_STOP (0x3 << 12) STOP ビット・マスク
USART_CR2_STOP_BITS_1 (0x0 << 12) 1 STOP ビット
USART_CR2_STOP_BITS_POINT_5 (0x1 << 12) 0.5 STOP ビット(UART4, UART5では不可)
USART_CR2_STOP_BITS_2 (0x2 << 12) 2 STOP ビット
USART_CR2_STOP_BITS_1_POINT_5 (0x3 << 12) 1.5 STOP ビット(UART4, UART5では不可)
USART_CR2_CLKEN BIT(USART_CR2_CLKEN_BIT) クロック・イネーブル(UART4, UART5では不可)
USART_CR2_CPOL BIT(USART_CR2_CPOL_BIT) クロック極性(UART4, UART5では不可)
USART_CR2_CPOL_LOW (0x0 << USART_CR2_CLKEN_BIT) クロック極性: low
USART_CR2_CPOL_HIGH (0x1 << USART_CR2_CLKEN_BIT) クロック極性: high
USART_CR2_CPHA BIT(USART_CR2_CPHA_BIT) クロック位相(UART4, UART5では不可)
USART_CR2_CPHA_FIRST (0x0 << USART_CR2_CPHA_BIT) クロック位相: 最初のクロック遷移でデータサンプルを行う
USART_CR2_CPHA_SECOND (0x1 << USART_CR2_CPHA_BIT) クロック位相: 二番目のクロック遷移でデータサンプルを行う
USART_CR2_LBCL BIT(USART_CR2_LBCL_BIT) 最終ビットクロック(UART4, UART5では不可)
USART_CR2_LBDIE BIT(USART_CR2_LBDIE_BIT) LIN ブレーク検出割込みリクエスト許可
USART_CR2_LBDL BIT(USART_CR2_LBDL_BIT) LIN ブレーク検出長
USART_CR2_LBDL_10_BIT (0 << USART_CR2_LBDL_BIT) 10 ビットブレークを検出
USART_CR2_LBDL_11_BIT (1 << USART_CR2_LBDL_BIT) 11 ビットブレークを検出
USART_CR2_ADD 0xF USART ノードアドレス
制御レジスタ3
ビット番号の定義
USART_CR3_CTSIE_BIT [10] (rw) CTS 割込みリクエスト許可
USART_CR3_CTSE_BIT [9] (rw) CTS イネーブル
USART_CR3_RTSE_BIT [8] (rw) RTS イネーブル
USART_CR3_DMAT_BIT [7] (rw) 送信DMA 有効
USART_CR3_DMAR_BIT [6] (rw) 受信DMA 有効
USART_CR3_SCEN_BIT [5] (rw) スマートカード・モード・イネーブル
USART_CR3_NACK_BIT [4] (rw) スマートカード NACK イネーブル
USART_CR3_HDSEL_BIT [3] (rw) 半二重選択
USART_CR3_IRLP_BIT [2] (rw) IrDA 低電力モード
USART_CR3_IREN_BIT [1] (rw) IrDA モードイネーブル
USART_CR3_EIE_BIT [0] (rw) エラー割込みリクエスト許可
設定値
USART_CR3_CTSIE BIT(USART_CR3_CTSIE_BIT) CTS 割込みリクエスト許可(UART4, UART5では不可)
USART_CR3_CTSE BIT(USART_CR3_CTSE_BIT) CTS イネーブル(UART4, UART5では不可)
USART_CR3_RTSE BIT(USART_CR3_RTSE_BIT) RTS イネーブル(UART4, UART5では不可)
USART_CR3_DMAT BIT(USART_CR3_DMAT_BIT) 送信DMA 有効(UART5では不可)
USART_CR3_DMAR BIT(USART_CR3_DMAR_BIT) 受信DMA 有効(UART5では不可)
USART_CR3_SCEN BIT(USART_CR3_SCEN_BIT) スマートカード・モード・イネーブル(UART4, UART5では不可)
USART_CR3_NACK BIT(USART_CR3_NACK_BIT) スマートカード NACK イネーブル(UART4, UART5では不可)
USART_CR3_HDSEL BIT(USART_CR3_HDSEL_BIT) 半二重選択(設定すると、単線半二重モードが選択されます)
USART_CR3_IRLP BIT(USART_CR3_IRLP_BIT) IrDA 低電力モード
USART_CR3_IRLP_NORMAL (0U << USART_CR3_IRLP_BIT) IrDA モード:通常モード
USART_CR3_IRLP_LOW_POWER (1U << USART_CR3_IRLP_BIT) IrDA モード:低電力モード
USART_CR3_IREN BIT(USART_CR3_IREN_BIT) IrDA モードイネーブル
USART_CR3_EIE BIT(USART_CR3_EIE_BIT) エラー割込みリクエスト許可
ガードタイム/ プリスケーラ・レジスタ
ビットのマスク
USART_GTPR_GT (0xFF << 8)ガードタイム値・マスク (スマートカードモードで使用、 UART4, UART5では不可)
USART_GTPR_PSC 0xFF プリスケーラ値・マスク(USARTモードに応じて適用される。UART4, UART5では不可)
License and Attribution: Portions of this page were adapted from the Arduino Reference Documentation, which is released under a Creative Commons Attribution-ShareAlike 3.0 License.
このドキュメントはleafLabs, LLC.が執筆し、たま吉が翻訳・一部加筆修正したものです。
NAVER、ヤフオク等の営利目的の記事転用、リンク貼りは禁止です。
Arduino STM32 リファレンス 日本語版 に戻る