【概要】
UART用ライブラリでは下記がサポートされています。
(1) バイトまたはワード単位の送受信
(ワードは9ビットモードの場合に使用する)
(2) バイト列またはワード列の送受信
(ワードは9ビットモードの場合に使用する)
(3) 割り込み制御用のマクロ
【関数詳細】
用意されているライブラリ関数は下表となります。
関数名 機 能 と 書 式 BusyUART1
BusyUART2UARTの送信ステータスを返す
1:ビシー 0:レディー (UxSTA<TRMT>ビットの内容)
【書式】 char BusyUART1(void);
char BusyUART2(void);CloseUART1
CloseUART2UARTをオフとする 割り込みフラグもクリアする
【書式】 char BusyUART1(void);
char BusyUART2(void);ConfigIntUART1
ConfigIntUART2UARTの割り込みを設定する
【書式】 void ConfigIntUART1(unsigned int config);
void ConfigIntUART2(unsigned int config);
configは下記の組み合わせとする
@受信割り込み UART_RX_INT_EN UART_RX_INT_DIS
A受信割り込み優先レベル
UART_RX_INT_PR0 UART_RX_INT_RP1 UART_RX_INT_RP2
UART_RX_INT_PR3 UART_RX_INT_RP4 UART_RX_INT_RP5
UART_RX_INT_PR6 UART_RX_INT_RP7
B送信割り込み UART_TX_INT_EN UART_TX_INT_DIS
C送信割り込み優先レベル
UART_TX_INT_PR0 UART_TX_INT_RP1 UART_TX_INT_RP2
UART_TX_INT_PR3 UART_TX_INT_RP4 UART_TX_INT_RP5
UART_TX_INT_PR6 UART_TX_INT_RP7
【例】
ConfigIntUART1(UART_RX_INT_EN & UART_RX_PR4
& UART_TX_INT_DIS);DataRdyUART1
DataRdyUART2UARTの受信ステータスを返す
1:受信バッファにデータあり 0:受信データなし
【書式】 char DataRdyUART1(void);OpenUART1
OpenUART2UARTの送受信モードの設定
【書式】
void OpenUART1(unsigned int config1, unsigned int config2,
unsigned int ubrg);
void OpenUART2(unsigned int config1, unsigned int config2,
unsigned int ubrg);
config.1は下記の組み合わせとする(UxMODEレジスタ)
@UARTのオンオフ UART_EN UART_DIS
Aアイドル時動作 UART_IDLE_CON UART_IDLE_STOP
BIrDAの指定 UART_IrDA_ENABLE UART_IrDA_DISABLE
Cモード指定 UART_MODE_SIMPLEX UART_MODE_FLOW
D代替ピン指定 UART_ATTRX_ALTTX UART_RX_TX
(データシート参照)
ECTS/RTS指定 UART_UEN_11 UART_UEN_10
UART_UEN_01 UART_UEN_00
Fウェイクアップ UART_EN_WAKE UART_DIS_WAKE
Gループバック UART_EN_LOOPBACK UART_DIS_LOOPBACK
H自動ボーレート UART_EN_ABAUD UART_DIS_ABAUD
I受信極性 UARTUXRX_IDLE_ZERO UART_UXRX_IDLE_ONE
JBRGH指定 UART_BRGH_FOUR UART_BRGH_SIXTEEN
Kパリティとビット数設定
UART_NO_PAR_9BIT UART_ODD_PAR_8BIT
UART_EVEN_PAR_8BIT UART_NO_PAR_8BIT
Lストップビット UART_2STOPBIT UART1_STOPBIT
config2は下記の組合せとする(UxSTAレジスタ)
@送信割り込みモード
UART_INT_TX_BUF_EMPTY UART_INT_TX_LAST_CH
UART_INT_TX
AIrDA極性
UART_IrDA_POL_INV_ONE UART_IrDA_POL_INV_ZERO
Bブレーク送信
UART_SYNC_BREAK_ENABLED UART_SYNC_BREAK_DISABLED
C送信許可禁止 UART_TX_ENABLE UART_TX_DISABLE
D受信割り込みモード選択
UART_INT_RX_BUF_FUL UART_INT_RX_3_4_FUL
UART_INT_RX_CHAR
Eアドレス検出有効化
UART_ADR_DETECT_EN UART_ADR_DETECT_DIS
Fオーバーランビットクリア UART_RX_OVERRUN_CLEAR
ubrgはボーレートにを決めるUxBRGレジスタの16ビット設定値
【例】
/// UART設定用パラメータ
unsigned int U1MODEvalue = UART_EN &
UART_IDLE_CON & UART_MODE_SIMPLEX
& UART_DIS_WAKE & UART_UEN_00 &
UART_DIS_LOOPBACK & UART_DIS_ABAUD
& UART_UXRX_IDLE_ONE & UART_BRGH_SIXTEEN
& UART_NO_PAR_8BIT & UART_1STOPBIT;
unsigned int U1STAvalue = UART_INT_TX
& UART_SYNC_BREAK_DISABLED
& UART_TX_ENABLE & UART_INT_RX_CHAR
& UART_ADR_DETECT_DIS & UART_RX_OVERRUN_CLEAR;
unsigned int Baud = 103; // 9600bps@16MHz
OpenUART1(U1MODEvalue, U1STAvalue, Baud);
ReadUART1
ReadUART2
getcUART1
getcUART2受信データをバッファから取り出して返す。9ビットモードの
ときは9ビット目も上位バイトに返す
【書式】 unsigned int ReadUART1(void);
unsigned int ReadUART2(void);WriteUART1
WriteUART2
putcUART1
putcUART2送信データを書き込む。9ビット目が使うときは上位バイトに
セットする
【書式】 void WriteUART1(unsigned int data);
void WriteUART2(unsigned int data);
dataは8ビットまたは9ビットの送信データgetsUART1
getsUART2指定したバイト数のデータを受信し指定バッファに格納する
【書式】
unsigned int getsUART1(unsigned int length,
unsigned int *buffer, unsigned int uart_data_wait);
lengthは受信するバイト数
bufferは格納バッファのポインタ
_data_waitは関数がリターンするまでの時間(19N-1サイクル)
戻り値 0:指定バイト数受信完了 0以外;受信未完了
putsUART1
putsUART2文字列を送信する
【書式】 void putsUART1(unsigned int *buffer);
void putsUART2(unsigned int *buffer);
bufferは文字列へのポインタ
割り込みの制御用には下記のマクロ命令が用意されています。
マクロ名 機 能 と 書 式 EnableIntU1RX
EnableIntU2RX
DisableIntU1RX
DisableIntU1RX受信割り込みの許可、禁止 EnableIntU1TX
EnableIntU1TX
DisableIntU1TX
DisableIntU1TX送信割り込みの許可、禁止 SetPriorityIntU1RX
SetPriorityIntU2RX受信割り込み優先レベル指定
【書式】 SetPriorityIntU1RX(priority);
priorityは下記のいずれか
UART_RX_INT_PR0 UART_RX_INT_PR1 UART_RX_INT_PR2
UART_RX_INT_PR3 UART_RX_INT_PR4 UART_RX_INT_PR5
UART_RX_INT_PR6 UART_RX_INT_PR7SetPriorityIntU1TX
SetPriorityIntU2TX送信割り込み優先レベル指定
【書式】 SetPriorityIntU1TX(priority);
priorityは下記のいずれか
UART_TX_INT_PR0 UART_TX_INT_PR1 UART_TX_INT_PR2
UART_TX_INT_PR3 UART_TX_INT_PR4 UART_TX_INT_PR5
UART_TX_INT_PR6 UART_TX_INT_PR7
【基本的な使い方】
UARTライブラリを使うためには下記作業が必要です。
(1) 下記ヘッダファイルをインクルードする
#include <uart.h>
(2) プロジェクトにPIC24Fのライブラリを追加登録する
【使用例1】
実際にUARTのライブラリを使った例は下記のようになります。
この例では、9600bpsの速度でパソコン等と通信し、文字aかAを受信
したときは英文字26文字を返送し、nかNを受信したときには数字を返送
します。
UARTの場合にはパラメータが非常に多いので、ライブラリを使うより直接
レジスタ操作で作成した方が簡単です。
また下記例では、文字列はchar型でしか定義できず、putsUART1関数
ではunsigned int型で扱っているためコンパイルでwarningメッセージが
出力されますが、上位バイトは無視されるので動作は正常に行われます。
また本来は受信後に受信誤りチェックをしなければならないのですが
わかりやすくするために省略しました。