OSDN Git Service

projects clean up 1
[pinoc/pinoc.git] / test / xmodem_test / xmodem_test / 3069f_sci.h
1 /*
2  * sci.h
3  *
4  *  Created on: 2010/11/27
5  *      Author: pino
6  */
7
8 #ifndef _SCI_H_
9 #define _SCI_H_
10
11 typedef unsigned char u1;
12 typedef unsigned int short u2;
13
14 #define BIT_CTL
15 #define C20MHZ 1
16 #define C25MHZ 0
17
18 #ifndef BIT_CTL
19 #define CKS0    (1 << 0)
20 #define CKS1    (1 << 1)
21 #define MP              (1 << 2)
22 #define STOP    (1 << 3)
23 #define OE              (1 << 4)
24 #define PE              (1 << 5)
25 #define CHR     (1 << 6)
26 #define CA              (1 << 7)
27 #define SHIFT_CTL
28
29 #else
30
31 #define CKS_1C  0x00
32 #define CKS_4C  0x01
33 #define CKS_16C 0x02
34 #define CKS_64C 0x03
35 #endif
36
37 #if C20MHZ
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
43 }BitRate_type_t;
44 #endif
45
46 #if C25MHZ
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
52 }BitRate_type_t;
53 #endif
54
55 struct SCI
56 {
57         union
58         {
59                 u1 BYTE;
60                 struct
61                 {
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;             // クロックセレクト
70                 }BIT;
71
72                 struct
73                 {
74                         u1 reserve      :6;
75                         u1 CKS          :2;
76                 }TEST;
77         }SMR;
78
79         u1 BRR;
80
81         union
82         {
83                 u1 BYTE;
84                 struct
85                 {
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=ビットレートと同じ周波数のクロックを出力
94                 }BIT;
95         }SCR;
96
97         u1 TDR;
98
99         union
100         {
101                 u1 BYTE;
102                 struct
103                 {
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;             // マルチプロセッサ関連
115                         u1 MPBT         :1;             //      "
116                 }BIT;
117         }SSR;
118
119         u1 RDR;
120
121         union
122         {
123                 u1 BYTE;
124                 struct
125                 {
126                         u1                      :4;
127                         u1 SDIR         :1;
128                         u1 SINV         :1;
129                         u1                      :1;
130                         u1 SMIF         :1;
131                 }BIT;
132         }SCMR;
133 };
134
135 //typedef int SCI_NO;
136 //#define SCI_NO_0 0
137 //#define SCI_NO_1 1
138 //#define SCI_NO_2 2
139
140 typedef enum {
141         SCI_NO_0 = 0,
142         SCI_NO_1,
143         SCI_NO_2
144 }SCI_NO;
145
146 #define SCI0A ((volatile struct SCI*)0xFFFFB0)
147 #define SCI1A ((volatile struct SCI*)0xFFFFB8)
148 #define SCI2A ((volatile struct SCI*)0xFFFFC0)
149
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)
157
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
165
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
173
174 #ifdef __cplusplus
175 extern "C"{
176 #endif
177
178 /********************************************************************************
179         ポーリング
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);
187
188 /********************************************************************************
189         割り込み
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);
196
197 #ifdef __cplusplus
198 }
199 #endif
200
201 #endif /* SCI_H_ */