14
1 STM32L_UART1 の説明 V004 2014/03/30 STM32L-Discovery の UART 1 の送受信を行うプログラムです。 無料の開発ツール Atollic TrueSTUDIO for ARM Lite(試用版) で作成したプロジェクトです。 プログラムの開始番地は 0x08000000 です。デバッグが可能です。 PC アプリケーションの Access_SerialPort を使用して UART(非同期シリアル通信)送受信の試験を行うことができます。 目次 1. UART について.................................................................................................................................................................................................................................................. 2 2. UART に使用する信号.................................................................................................................................................................................................................................. 2 3. プログラム実行時の動作と確認............................................................................................................................................................................................................... 4 3.1. 実行時の動作 ........................................................................................................................................................................................................................................ 4 3.2. 動作確認.................................................................................................................................................................................................................................................. 4 1) Access_SerialPort アプリケーションの起動画面.................................................................................................................................................................... 4 2) COM ポートと通信速度の選択 ......................................................................................................................................................................................................... 5 3) 送信データのエコーバック................................................................................................................................................................................................................. 7 4) 基板上の LED LD4(青)の点灯/消灯 ....................................................................................................................................................................................... 8 4. プロジェクトの構成............................................................................................................................................................................................................................................ 9 4.1. 独自に追加したソースフォルダ.................................................................................................................................................................................................... 9 4.2. ソースフォルダ src のファイル...................................................................................................................................................................................................10 5. 主なモジュールの説明..............................................................................................................................................................................................................................10 5.1. HandleTIM..............................................................................................................................................................................................................................................10 5.2. HandleUART.........................................................................................................................................................................................................................................11 5.3. main.c........................................................................................................................................................................................................................................................11 5.4. UserPrograms.....................................................................................................................................................................................................................................11 5.5. CommunicateHOST..........................................................................................................................................................................................................................12

STM32L-Discovery Atollic TrueSTUDIO for ARM Lite( UART(tri-s.world.coocan.jp/tri_S_Micro/Explain_STM32L/Explain_STM32L_UART1.pdfSTM32L-DiscoveryのUART 1の送受信を行うプログラムです。

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: STM32L-Discovery Atollic TrueSTUDIO for ARM Lite( UART(tri-s.world.coocan.jp/tri_S_Micro/Explain_STM32L/Explain_STM32L_UART1.pdfSTM32L-DiscoveryのUART 1の送受信を行うプログラムです。

1

STM32L_UART1の説明 V004 2014/03/30

STM32L-Discoveryの UART 1の送受信を行うプログラムです。

無料の開発ツール Atollic TrueSTUDIO for ARM Lite(試用版) で作成したプロジェクトです。

プログラムの開始番地は 0x08000000 です。デバッグが可能です。

PCアプリケーションのAccess_SerialPortを使用して UART(非同期シリアル通信)送受信の試験を行うことができます。

目次

1. UARTについて .................................................................................................................................................................................................................................................. 2

2. UARTに使用する信号 .................................................................................................................................................................................................................................. 2

3. プログラム実行時の動作と確認 ............................................................................................................................................................................................................... 4

3.1. 実行時の動作 ........................................................................................................................................................................................................................................ 4

3.2. 動作確認 .................................................................................................................................................................................................................................................. 4

1) Access_SerialPortアプリケーションの起動画面 .................................................................................................................................................................... 4

2) COMポートと通信速度の選択 ......................................................................................................................................................................................................... 5

3) 送信データのエコーバック ................................................................................................................................................................................................................. 7

4) 基板上の LED LD4(青)の点灯/消灯 ....................................................................................................................................................................................... 8

4. プロジェクトの構成 ............................................................................................................................................................................................................................................ 9

4.1. 独自に追加したソースフォルダ .................................................................................................................................................................................................... 9

4.2. ソースフォルダ srcのファイル................................................................................................................................................................................................... 10

5. 主なモジュールの説明 .............................................................................................................................................................................................................................. 10

5.1. HandleTIM .............................................................................................................................................................................................................................................. 10

5.2. HandleUART ......................................................................................................................................................................................................................................... 11

5.3. main.c ........................................................................................................................................................................................................................................................ 11

5.4. UserPrograms ..................................................................................................................................................................................................................................... 11

5.5. CommunicateHOST .......................................................................................................................................................................................................................... 12

Page 2: STM32L-Discovery Atollic TrueSTUDIO for ARM Lite( UART(tri-s.world.coocan.jp/tri_S_Micro/Explain_STM32L/Explain_STM32L_UART1.pdfSTM32L-DiscoveryのUART 1の送受信を行うプログラムです。

2

1. UARTについて

UARTは Universal Asynchronous Receiver Transmitter の頭文字をとったもので、非同期シリアル通信と呼ばれます。

シリアル通信とは、一本の信号線でデータをやりとりするために1bitずつデータを送出することをいいます。

データを受け渡すために、送信側が、1bitずつ送り出し、受信側が 1bitずつ取り込みます。

通常、UARTという場合、送受信のために、送信と受信に一本ずつ信号線を使用します。

また、送受信する機器同士の GND を接続します。というわけで、信号線は、最低 3本 接続することになります。

詳しくは、「UART(非同期シリアル通信)の説明」 をご覧ください。

2. UARTに使用する信号

STM32L-Discoveryの UART(非同期シリアル通信)に使用する信号と接続相手との接続は以下の通りです。

1) UART1 接続信号表

STM32L-Discoveryの UART信号

番号 CPU機能名 CPU信号名 基板コネクタピン番号 方向 接続相手の

信号名

D-SUB 9S

ストレート接続

1 USART1_TX PA9 P2-22 --- > RxD 2

2 USART1_RX PA10 P2-21 < --- TxD 3

3 GND GND P1-2, P1-9, P1-28

P2-2, P2-5, P2-28

< --- > GND 5

2) RS232C ドライバ接続例

この例ではDSUB-9SにはTxD, RxD, GNDの3本の信号以外は接続されません。

Page 3: STM32L-Discovery Atollic TrueSTUDIO for ARM Lite( UART(tri-s.world.coocan.jp/tri_S_Micro/Explain_STM32L/Explain_STM32L_UART1.pdfSTM32L-DiscoveryのUART 1の送受信を行うプログラムです。

3

3) PCとの接続例

PCとの接続は以下のようになります。

RS232C ドライバとDSUB-9Sとの接続は以下の通りです。

RS232C ドライバ DSUB-9S

1 RS1_TxD --- > 2 RxD

2 RS1_RxD < --- 3 TxD

3 GND < --- > 5 GND

RS232C

ドライバ DSUB-9S

PC

RS232C変換ケーブル

STM32L-Discovery

図2. 3)

USBポート

USBケーブル : 電源供給 および ST-LINKのため A

MiniB

Page 4: STM32L-Discovery Atollic TrueSTUDIO for ARM Lite( UART(tri-s.world.coocan.jp/tri_S_Micro/Explain_STM32L/Explain_STM32L_UART1.pdfSTM32L-DiscoveryのUART 1の送受信を行うプログラムです。

4

3. プログラム実行時の動作と確認

3.1. 実行時の動作

1) プログラムを実行すると基板上の LED LD3(緑)が 1秒点灯、2秒消灯 で点滅します。

2) UART1ポートで LED0 ON/OFFコマンド以外のデータを受信するとエコーバックします。

3) UART1ポートで LED0 ON/OFFコマンドを受信すると、基板上の LED LD4(青)の点灯/消灯を行います。

3.2. 動作確認

UART(非同期シリアル通信)のツール Access_SerialPortアプリケーションを使用して、CPU基板の送受信の確認、

および コマンド文字列を送信して基板上の LED LD4(青)の点灯/消灯を行います。

1) Access_SerialPortアプリケーションの起動画面

まず、PCと STM32L-DiscoveryとをRS232Cインターフェースで接続してください。

Access_SerialPortアプリケーションを起動すると以下のダイアログが表示されます。

Page 5: STM32L-Discovery Atollic TrueSTUDIO for ARM Lite( UART(tri-s.world.coocan.jp/tri_S_Micro/Explain_STM32L/Explain_STM32L_UART1.pdfSTM32L-DiscoveryのUART 1の送受信を行うプログラムです。

5

2) COMポートと通信速度の選択

COM選択のComboBoxでCOMを選択します。

確認のメッセージが表示されるので、よい場合は [はい(Y)] ボタンをクリックします。

次ページに続く

Page 6: STM32L-Discovery Atollic TrueSTUDIO for ARM Lite( UART(tri-s.world.coocan.jp/tri_S_Micro/Explain_STM32L/Explain_STM32L_UART1.pdfSTM32L-DiscoveryのUART 1の送受信を行うプログラムです。

6

この例では、”COM4に設定しました。” とメッセージが表示されています。

通信速度は 9600bpsでよいのでこのままにしておきます。

次ページに続く

Page 7: STM32L-Discovery Atollic TrueSTUDIO for ARM Lite( UART(tri-s.world.coocan.jp/tri_S_Micro/Explain_STM32L/Explain_STM32L_UART1.pdfSTM32L-DiscoveryのUART 1の送受信を行うプログラムです。

7

3) 送信データのエコーバック

送信データのTextBoxにASCII文字列を入力して、[送信] ボタンをクリックすると、CPU基板にデータが送信されます。

CPU基板はデータを受信して、そのデータをそのまま PCに送信します。

PCが受信したデータは受信データの部分に表示されます。

上記の例では、送信データに “How are you?” と入力して [送信] ボタンをクリックした結果、エコーバックのデータが

受信データの欄に表示されています。

次ページに続く

Page 8: STM32L-Discovery Atollic TrueSTUDIO for ARM Lite( UART(tri-s.world.coocan.jp/tri_S_Micro/Explain_STM32L/Explain_STM32L_UART1.pdfSTM32L-DiscoveryのUART 1の送受信を行うプログラムです。

8

4) 基板上の LED LD4(青)の点灯/消灯

基板上の LED LD4(青)を点灯/消灯するコマンドは以下のようになります。

a) 点灯

“LED0 ON”

b) 消灯

“LED0 OFF”

上記の例では、”LED0 ON” を入力して [送信] ボタンをクリックした結果、STM32L-Discoveryは LD4(青)を点灯して、

”OK : LED0 ON” を応答データとして送信しました。

LD4(青)を消灯したい場合は、”LED0 OFF” を送信します。

Page 9: STM32L-Discovery Atollic TrueSTUDIO for ARM Lite( UART(tri-s.world.coocan.jp/tri_S_Micro/Explain_STM32L/Explain_STM32L_UART1.pdfSTM32L-DiscoveryのUART 1の送受信を行うプログラムです。

9

4. プロジェクトの構成

プロジェクトを開いて、左側のプロジェクト・エクスプローラーを開いた状態です。

4.1. 独自に追加したソースフォルダ

独自に追加したソースフォルダについて簡単に説明します。

1) CommonModules

共通処理を記述しています。

2) CommunicateHOST

UARTの通信処理を記述しています。LED点灯/消灯のコマンドを受信して処理を行います。

コマンド以外のデータを受信した場合はそのままデータを折り返し送信します。

3) Handles

Peripheralの設定などを行っています。

a) HandleTIM.h HandleTIM.c

タイマ割り込みを使用するために、タイマの初期設定を記述しています。

b) HandleUART.h HandleUART.c

UARTの初期設定と送受信の処理を記述しています。

4) UserPrograms

a) Status LED に使用している I/O の初期設定と点滅処理を記述しています。

b) LED0(LD3)の初期設定を記述しています。

Page 10: STM32L-Discovery Atollic TrueSTUDIO for ARM Lite( UART(tri-s.world.coocan.jp/tri_S_Micro/Explain_STM32L/Explain_STM32L_UART1.pdfSTM32L-DiscoveryのUART 1の送受信を行うプログラムです。

10

4.2. ソースフォルダ srcのファイル

フォルダ srcの中の特に重要なファイルについて説明します。

1) main.c

mainモジュールが記述されています。プログラムはここから開始します。

I/Oと UARTの初期設定と UARTの送受信モジュールの呼び出しを記述しています。

2) stm32f4xx_it.c

割り込み処理を記述しています。

このプロジェクトでは、Timer2割り込みと UART1の割り込み処理を記述しています。

5. 主なモジュールの説明

5.1. HandleTIM

1) Timer2初期化

//------------------------------------------------------------------------------

// Timer2初期化

//------------------------------------------------------------------------------

//引数 :

// uint16_t uint16_TIM_Pulse1 : Timer2 CH1 インターバル

// uint16_t uint16_TIM_Pulse2 : Timer2 CH2 インターバル

// uint16_t uint16_TIM_Pulse3 : Timer2 CH3 インターバル

// uint16_t uint16_TIM_Pulse4 : Timer2 CH4 インターバル

//------------------------------------------------------------------------------

void InitializeTimer2(__IO uint16_t uint16_TIM_Pulse1, __IO uint16_t uint16_TIM_Pulse2,

__IO uint16_t uint16_TIM_Pulse3, __IO uint16_t uint16_TIM_Pulse4);

2) Timer2割り込み禁止

//Timer2割り込み禁止

void DisableIrqTim2(void);

3) Timer2割り込み許可

//Timer2割り込み許可

void EnableIrqTim2(void);

Page 11: STM32L-Discovery Atollic TrueSTUDIO for ARM Lite( UART(tri-s.world.coocan.jp/tri_S_Micro/Explain_STM32L/Explain_STM32L_UART1.pdfSTM32L-DiscoveryのUART 1の送受信を行うプログラムです。

11

5.2. HandleUART

1) UARTの初期化

//UART1初期化

void InitializeUART1(uint32_t uint32_BaudRate);

5.3. main.c

1) 使用するクロックの初期化

void RCC_Configuration(void);

2) I/Oの初期化

void Init_GPIOs(void);

5.4. UserPrograms

1) LEDに使用する I/Oの初期化

// Status LEDポート初期化

void InitializePortStatusLED(void);

// LED0ポート初期化

void InitializePortLED0(void);

2) StatusLEDの点滅

点滅一回の処理

//----------------------------------------------------------------

// Status LED点滅 : 点灯/消灯 切り替え

//----------------------------------------------------------------

// Timer2割り込み内でGLB_uint16_BlinkTimerStatusLEDをデクリメントする。

// GLB_uint16_BlinkTimerStatusLEDが0になった時、呼び出される。

//----------------------------------------------------------------

// 点灯/消灯 を切り替えると同時に 点灯時間/消灯時間 をセットする。

//----------------------------------------------------------------

//引数 :

// uint16_t uint16_TimeON : 点灯時間

// uint16_t uint16_TimeOFF : 消灯時間

//----------------------------------------------------------------

void BlinkStatusLED(uint16_t uint16_TimeON, uint16_t uint16_TimeOFF);

Page 12: STM32L-Discovery Atollic TrueSTUDIO for ARM Lite( UART(tri-s.world.coocan.jp/tri_S_Micro/Explain_STM32L/Explain_STM32L_UART1.pdfSTM32L-DiscoveryのUART 1の送受信を行うプログラムです。

12

5.5. CommunicateHOST

1) UARTの初期化

//-----------------------------------------------------------

// HOST通信パラメータ初期化

//-----------------------------------------------------------

//引数 :

// uint32_t uint32_BaudRate : 通信速度

//-----------------------------------------------------------

void InitializeCommunicateHOST(uint32_t uint32_BaudRate)

{

//-----------------------------------------------------------

//UART1 パラメータ初期化

//-----------------------------------------------------------

defHostReceiveTimeOut = -1; //TimeOut OFF

defHostReceiveEndTime = -1; //Initialize EndTime

defHostRxDelimiter = (uint8_t)0;

//Set Value for TimeOut

defHostReceiveTimeOutVal = -1; //TimeOutなし

//Set Value for EndTime

defHostReceiveEndTimeVal = 50; //受信終了タイマ 50mSec

defHostReadPointer = 0;

defHostWritePointer = 0;

//----------------------------------

//UART1初期化 : 通信速度設定

//----------------------------------

InitializeUART1(uint32_BaudRate);

}

2) HOST通信処理

受信処理を行い、受信コマンドを処理して応答データを送信します。

//------------------------------------------------------------

// HOST通信処理

//------------------------------------------------------------

//戻り値 :

// -1 : 処理中

// 0 : 終了

//------------------------------------------------------------

int16_t CommunicateHOST(void);

Page 13: STM32L-Discovery Atollic TrueSTUDIO for ARM Lite( UART(tri-s.world.coocan.jp/tri_S_Micro/Explain_STM32L/Explain_STM32L_UART1.pdfSTM32L-DiscoveryのUART 1の送受信を行うプログラムです。

13

3) UART送信処理

送信バッファにセットされたデータを指定された byte数だけ送信します。

//--------------------------------------------------------------------

// UART 送信処理

//--------------------------------------------------------------------

//引数 :

// uint16_t uint16_SendLength : 送信データ数

// uint8_t *puint8_Data : 送信データのポインタ

//--------------------------------------------------------------------

void SendUART(uint16_t uint16_SendLength);

4) UART受信処理

受信の有無を判定して、受信があった場合、受信データをBufferにセットします。

//--------------------------------------------------------------------

// UART 受信処理

//--------------------------------------------------------------------

//引数 :

// uint8_t *puint8_ReceiveBuffer : 受信データを格納するBufferのポインタ

//戻り値 :

// -1 : 受信なし

// 0 : Error

// 1以上 : 受信byte数

//--------------------------------------------------------------------

int16_t ReceiveUART(uint8_t *puint8_ReceiveBuffer);

5) HOSTコマンドの実行

受信コマンドを判定してそれぞれの処理を行います。

//------------------------------------------------------------------------------------

// HOSTコマンドを実行する。

//------------------------------------------------------------------------------------

//引数 :

// uint16_t uint16_ReceiveLength : 受信データ数

// uint8_t *puint8_ReceiveData : 受信データが格納されているBufferのポインタ

// uint8_t *puint8_SendData : 応答送信データを格納するBufferのポインタ

//戻り値 : 応答送信データ数

//------------------------------------------------------------------------------------

uint16_t ExecuteCommandHOST(uint16_t uint16_ReceiveLength, uint8_t *puint8_ReceiveData,

uint8_t *puint8_SendData);

Page 14: STM32L-Discovery Atollic TrueSTUDIO for ARM Lite( UART(tri-s.world.coocan.jp/tri_S_Micro/Explain_STM32L/Explain_STM32L_UART1.pdfSTM32L-DiscoveryのUART 1の送受信を行うプログラムです。

14

改訂履歴

V001 2014/02/05 初版

V002 2014/03/09 誤記訂正

V003 2014/03/26 誤記訂正

V004 2014/03/30 説明追加