5. 参考プログラムの処理手順
5.1 共通処理手順
5.1.2
端子機能初期化(pfc_init)
図
5.1.2端子機能初期化フロー
5.1.3
転送元,転送先アドレスの初期化
(memory_init)図
5.1.3転送先アドレスの初期化フロー
端子機能初期化 (pfc_init)
SCIF使用端子を設定 (PHCR)
END
PHCRにH’FFF0 を設定
転送元,転送先アドレスの初期化 (memory_init)
キャッシュ可能領域の初期化
キャッシュ不可領域の初期化
コマンドチェーン格納領域の初期化
END
5.1.4
転送結果データ表示(print_result,print_result_multi,print_result_hpb)
図
5.1.4転送結果 データ表示フロー
転送結果 データ表示 (***)
NO
YES
表示データが残っているか?
NO
YES
表示データ(1行分)が 残っているか?
NO
YES
表示する端数 データが存在するか?
NO
YES
表示する端数データが 残っているか?
xxxには
・転送結果 データ表示 = “1バイト (16進数)”
・転送結果 データ表示(ストライド&Gather) = “2文字(ASCIIコード)”
・転送結果 (HPB) = “1文字(ASCIIコード)”
が入ります xxxをSCIFに出力
(printf)
xxxをSCIFに出力 (printf)
END
xxxには
・転送結果 データ表示 = “1バイト (16進数)”
・転送結果 データ表示(ストライド&Gather) = “2文字(ASCIIコード)”
・転送結果 (HPB) = “1文字(ASCIIコード)”
が入ります
***には
print_result:転送結果 データ表示
print_result_multi:転送結果 データ表示(ストライド&Gather) print_result_hpb:転送結果(HPB)
が入ります
5.1.5 SCIF初期化(scif_init)
図
5.1.5 SCIF初期化フロー
SCIF初期化 (scif_init)
シリアルコントロールレジスタ (SCSCR)のクリア
FIFOコントロールレジスタ (SCFCR)の設定
シリアルステータスレジスタ (SCFSR)の設定
ラインステータスレジスタ (SCLSR)の設定
ビットレートレジスタ (SCBRR)の設定
NO
YES
1ビット期間経過した?
シリアルコントロールレジスタ (SCSCR)の設定
TIE,RIE,REを0クリア
TX,RXのFIFOクリア
BRK,DR,TRを0クリア
ORERを0クリア
ソースクロックをPφに設定 シリアルコントロールレジスタ
(SCSCR)の設定
115200bpsに設定
レシーブFIFOデータ数トリガ:1に設定 トランスミットFIFOデータ数トリガ:32に設定 TX, RXのFIFOをクリアしない設定
FIFOコントロールレジスタ (SCFCR)の設定
トランスミットイネーブル:1に設定 レシーブイネーブル:1に設定
END
5.1.6 SCIFデータ送信(scif_transmit_data)
図
5.1.6 SCIFデータ送信フロー
SCIFデータ送信 (scif_transmit_data)
転送データをSCFTDRに設定
TDFE,TENDを0クリア トランスミットFIFO データレジスタ
(SCFTDR)設定
NO
YES
SCFSR.TDFE = 1?
送信データ参照位置更新
NO
YES
SCFSR.TEND = 1?
シリアルステータスレジスタ (SCFSR)の設定
NO
YES
転送データが残っているか?
END
5.1.7 SCIF1
バイトデータ送信(scif_transmit_data_byte)
図
5.1.7 SCIF1バイトデータ送信フロー
SCIF1バイトデータ送信 (scif_transmit_data_byte)
転送データをSCFTDRに設定
TDFE,TENDを0クリア トランスミットFIFO データレジスタ
(SCFTDR)設定
NO
YES
SCFSR.TDFE = 1?
NO
YES
SCFSR.TEND = 1?
シリアルステータスレジスタ (SCFSR)の設定
END
5.1.8 SCIF printf(scif_printf)
図
5.1.8 SCIF printfフロー
printf (scif_printf)
※vastart,vsprintf,va_endはライブラリ関数です。
詳細は「SuperH™ RISC engine C/C++コンパイラ,アセンブラ,最適化リンケージエディタ コンパイラパッケージV.9.01 ユーザーズマニュアル」をご参照下さい
NO
YES
表示データは1kバイトより 大きいか?
END
可変個引数の初期処理 (va_start)
可変個引数の文字列処理 (vsprintf)
可変個引数の終了処理 (va_end)
SCIFデータ送信 (scif_transmit_data)
END
5.1.9 SCIF1
バイトデータ受信(scif_recieve_data_byte)
図
5.1.9 SCIF1バイトデータ受信フロー
SCIF1バイトデータ受信 (scif_receive_data_byte)
RDF,DRを0クリア NO
YES
SCFSR.ER = 1? or SCFSR.BRK = 1? or
SCFSR.DR = 1?
レシーブFIFOデータレジスタ (SCFRDR)をダミーリード
シリアルステータスレジスタ (SCFSR)を0クリア
ラインステータスレジスタ (SCLSR)を0クリア
NO
YES
SCFSR.RDF = 1?
受信バッファにレシーブFIFO データレジスタ(SCFRDR)のデータをリード
シリアルステータスレジスタ (SCFSR)を設定
END