4 * Created on: 2010/11/27
11 typedef unsigned char u1;
12 typedef unsigned int short u2;
38 typedef enum { //内部クロック20MHz
39 BitRate_type_br4800 = 129, // CKS=00
40 BitRate_type_br9600 = 64, // CKS=00
41 BitRate_type_br19200 = 32, // CKS=00
42 BitRate_type_br38400 = 15 // CKS=00
47 typedef enum { //内部クロック25MHz
48 BitRate_type_br4800 = 162, // CKS=00
49 BitRate_type_br9600 = 80, // CKS=00
50 BitRate_type_br19200 = 40, // CKS=00
51 BitRate_type_br38400 = 19 // CKS=00
62 u1 CA :1; // 0=調歩同期 1=クロック同期
63 u1 CHR :1; // 0=8bit data 1=7bit data
64 u1 PE :1; // 0=パリティなし 1=パリティあり
65 u1 OE :1; // 0=偶数パリティ 1=奇数パリティ
66 u1 STOP :1; // 0=ストップビット長1bit 1=ストップビット長2bit
67 u1 MP :1; // 0=シングルプロセッサ 1=マルチプロセッサ
68 u1 CKS1 :1; // クロックセレクト
69 u1 CKS0 :1; // クロックセレクト
86 u1 TIE :1; // 送信完了時割り込み 0=TXI禁止 1=TXI許可
87 u1 RIE :1; // 受信完了時割り込み 0=RXI禁止 1=RXI許可
88 u1 TE :1; // 0=送信禁止 1=送信許可
89 u1 RE :1; // 0=受信禁止 1=受信許可
90 u1 MPIE :1; // マルチプロセッサ割り込み 0=禁止 1=許可
91 u1 TEIE :1; // 送信終了割り込み 0=禁止 1=許可
92 u1 CKE1 :1; // 0=内部クロック(調歩同期) 1=外部クロック(クロック同期式)
93 u1 CKE0 :1; // CKE1=0,0=SCI は、SCK 端子を使用しません CKE1=1,0=ビットレートと同じ周波数のクロックを出力
104 u1 TDRE :1; // 0=TDRに有効な送信データがライトされている 1=TDRに有効な送信データがない
105 // [クリア条件]TDRE=1 の状態をリードした後、0 をライトしたとき, DMAC でTDR へデータをライトしたとき
106 // [セット条件]TDR からTSR にデータ転送が行われてTDR にデータライトが可能になったとき, SCR のTE ビットが0 のとき, リセット、またはスタンバイモード時
107 u1 RDRF :1; // 0=RDRに受信データが格納されていない 1=RDRに受信データが格納されている
108 // [クリア条件]DMACでRDR のデータをリードしたとき, RDRF=1 の状態をリードした後、0 をライトしたとき, リセット、またはスタンバイモード時
109 // [セット条件]シリアル受信が正常終了し、RSR からRDR へ受信データが転送されたとき
110 u1 ORER :1; // 0=受信中、または正常に受信を完了した 1=受信時にオーバランエラーが発生した
111 u1 FER_ERS :1; // 0=受信中、または正常に受信を完了した 1=受信時にフレーミングエラーが発生した
112 u1 PER :1; // 0=受信中、または正常に受信を完了した 1=受信時にパリティエラーが発生した
113 u1 TEND :1; // 0=送信中である 1=送信を終了した
114 u1 MPB :1; // マルチプロセッサ関連
135 //typedef int SCI_NO;
146 #define SCI0A ((volatile struct SCI*)0xFFFFB0)
147 #define SCI1A ((volatile struct SCI*)0xFFFFB8)
148 #define SCI2A ((volatile struct SCI*)0xFFFFC0)
150 #define SMR0 0xFFFFB0 // シリアルモードレジスタ(SMR)
151 #define BRR0 0xFFFFB1 // ビットレートレジスタ(BRR)
152 #define SCR0 0xFFFFB2 // シリアルコントロールレジスタ(SCR)
153 #define TDR0 0xFFFFB3 // トランスミットデータレジスタ(TDR) 送信データ
154 #define SSR0 0xFFFFB4 // シリアルステータスレジスタ(SSR)
155 #define RDR0 0xFFFFB5 // レシーブシフトレジスタ(RSR) 受信データ
156 #define SCMR0 0xFFFFB6 // スマートカードモードレジスタ(SCMR)
158 #define SMR1 0xFFFFB8
159 #define BRR1 0xFFFFB9
160 #define SCR1 0xFFFFBa
161 #define TDR1 0xFFFFBb
162 #define SSR1 0xFFFFBc
163 #define RDR1 0xFFFFBd
164 #define SCMR1 0xFFFFBe
166 #define SMR2 0xFFFFC0
167 #define BRR2 0xFFFFC1
168 #define SCR2 0xFFFFC2
169 #define TDR2 0xFFFFC3
170 #define SSR2 0xFFFFC4
171 #define RDR2 0xFFFFC5
172 #define SCMR2 0xFFFFC6
178 /********************************************************************************
180 ********************************************************************************/
181 void sci_init(SCI_NO no, BitRate_type_t type);
182 void sci_write(SCI_NO no, char c);
183 void sci_write_str(SCI_NO no,const char* _Str);
184 void sci_read(SCI_NO no, char* buff, int size);
185 char sci_read_byte(SCI_NO no);
186 int sci_read_pol(SCI_NO no);
188 /********************************************************************************
190 ********************************************************************************/
191 char sci_read_byte_intr(SCI_NO no);
192 void sci_write_intr_enable(SCI_NO no);
193 void sci_write_intr_disable(SCI_NO no);
194 void sci_read_intr_enable(SCI_NO no);
195 void sci_read_intr_disable(SCI_NO no);