Renesas Synergy™

FAQ 1006906 : 自動送受信機能付きシリアル(CSIA0)でデータを送信する方法がよく分かりません。

自動送受信機能付きシリアル(CSIA0)を用いて、マスタとしてデータを連続して送信する場合の手順は以下の様になります。

(1)CSIMA0レジスタのCSIAE0ビットをセットすることでCSIA0を動作許可状態にします。(これで、バッファRAMにアクセス可能に なります。)同時にCSIMA0レジスタのATE0ビットとMASTER0ビットをセットして、自動転送モードでのマスタ動作を設定します。

(2)TXEA0ビットをセットして送信可能状態にします。
(3)CSIS0レジスタでシリアルクロックを選択します。

(4)BRGCA0レジスタでシリアルクロックの分周比を設定し通信速度を指定します。

(5)ADTI0レジスタに送信インターバル時間を設定します。
(6)P142に1、P144の0をセットしてPM142,PM144を0にします。
(7)バッファRAMにFA00Hから順に送信したいデータを書き込みます。
(8)ADTP0レジスタに送信したいデータ数-1を設定します。

これで、自動送受信機能付きシリアルで自動送信を行う場合の必要な設定は完了しました。CSIT0レジスタのATSTA0ビットをセットすることで、自動送信処理が起動されます。
自動送信処理が起動すると、CSIS0レジスタのTSF0ビットをセットし、バッファRAMの先頭から順に読み出したデータを送信します。
ADTP0で指定されたデータを送信し終わると割り込み要求(INTACSI)を発生し、CSIS0レジスタのTSF0ビットをクリアします。

引き続き次のデータを送信したい場合には、新しいデータをバッファRAMにセットし、ADTP0レジスタへのデータ数の設定を行った後にCSIT0レジスタのATSTA0ビットをセットします。((7)からを繰り返します。)
送受信を行う際には、(2)でRXEA0ビットもセットし、(6)でPM143を1にセットします。
転送が完了すると、バッファRAMに受信したデータが格納されていますので、読み出します。
送信の場合のフローチャートとプログラム例を以下に示します。


以下にプログラム例を示します。この例ではフローチャートの初期設定をサブルーチンCSIAINITで、転送毎の処理をサブルーチンTXBLKで実現しています。TXDATAに準備した8バイトのデータを4バイトずつ2回に分けて送信する例です。

        CSEG
START:  MOVW  SP,#STACK
        CALL  !CSIAINIT                ; CSIA0の初期設定
        MOVW  HL,#TXDATA               ; 送信データの先頭を指す
        MOV   B,#4                     ; 転送データ数を設定
        CALL  !TXBLK                   ; 送信データの設定と転送起動
LOOP1:  BF    CSIS0.0,$LOOP1
LOOP2:  BT    CSIS0.0,$LOOP2           ; 転送完了(TSF0=0)を待つ
        CALL  !TXBLK                   ; 次の転送を起動
LOOP3:  BF    CSIS0.0,$LOOP3
LOOP4:  BT    CSIS0.0,$LOOP4
;
LOOP:   NOP                            ; 転送終了でのループ
        BR    $LOOP
;
;       CSIA0を使用するための初期設定
;
CSIAINIT:
        MOV    CSIMA0,#11011000B       ; 動作モ-ドの設定
        MOV    CSIS0,#01000000B        ; クロックソースを選択
        MOV    BRGCA0,#00000010B       ; ボーレートの設定
        MOV    ADTI0,#00000001B        ; インターバルの設定
        MOV    P14,#00000100B          ; ポートの設定
        MOV    PM14,#11101011B
        RET
TXBLK:
MOVW    DE,#0FA00H                     ; バッファRAMのアドレス設定
        PUSH   BC                      ; データ数のセーブ
TXLOOP:
        MOV    A,[HL]                  ; バッファRAMにデータセット
        MOV    [DE],A
        INCW   HL
        INCW   DE
        DBNZ   B,$TXLOOP
        POP    BC
        MOV    A,B
        DEC    A
        MOV    ADTP0,A                 ; 転送数の設定
        SET1   ATSTA0                  ; 転送スタート
        RET

TXDATA:
        DB     33H,55H,0AAH,0CCH
        DB     0FH,0F0H,66H,99H


適用製品

78K0/Kx2
他にご質問がございましたら、リクエストを送信してください