アットウィキロゴ

SCI使ってPCとシリアル通信

SCIでシリアル通信

RXには0~3、5~6までの計6つのSCIが搭載されている。
このうち一つを使用してPCから受けたデータをそのままPCに返してみるループバックプログラムを作成する。
ポートからの出力は3.3VなのでRS-232Cレベルに変換するIC(ADM3202など)を使用しなければならない。

main.c

void main(void)
{
 
        int i;
        CINIT;
        SYSTEM.SCKCR.BIT.ICK=0;  /*コアクロック96MHz*/
        SYSTEM.SCKCR.BIT.PCK=1;  /*周辺機器クロック PCLK=48MHz*/
 
         /* SCI5 設定開始 */
        SYSTEM.MSTPCRB.BIT.MSTPB26=0;	/* SCI5 wakeup */
        IEN(SCI5,RXI5)=1; /* 割り込み要求許可 */
        IPR(SCI5,RXI5)=10; /* 割り込み優先レベル */
        //SMR設定開始
        SCI5.SMR.BIT.CM=0;	/* SCI動作モード設定 1:クロック同期モード 0:調歩同期(非同期)モード */
        SCI5.SMR.BIT.CKS=0;	/* SCIクロック選択 0:1/1 1:1/4 2:1/16 3:1/64 */
        SCI5.SMR.BIT.CHR=0;	/* キャラクタ長選択 0:8bit 1:7bit */
        SCI5.SMR.BIT.STOP=0;	/* ストップビット長選択 0:1ストップビット 1:2ストップビット */
        SCI5.SMR.BIT.PE=0;	/* パリティ許可設定 0:パリティなし 1:パリティ付加・チェック */
        SCI5.SMR.BIT.PM=0;	/* パリティモード設定 0:偶数パリティ 1:奇数パリティ */
        /*SCIクロック設定*/
        SCI5.BRR=155;	/*ボーレート9600bps*/
        /*SCI受信許可*/
        for(i=0;i<800000;i++); /* ちょっと待つ */
        SCI5.SCR.BYTE=0xf0; /* 送受信開始・割り込み許可 */
        PORTC.ICR.BIT.B2=1; /* 入力バッファ設定 入力端子として使用の場合は1 */
        PORTC.DDR.BIT.B3=1; /* 出力端子設定 出力端子として使用の場合は1 */
         /* SCI5 設定終了 */
 
 
        while(1);
}

intprg.c

500行目前後~

// SCI5 RXI5
void Excep_SCI5_RXI5(void){
 
        SCI5.TDR = SCI5.RDR;  /* 受信データをそのまま送信する */
}
最終更新:2013年02月27日 19:58