OSDN Git Service

projects clean up 1
[pinoc/pinoc.git] / pinoc_hew / pinoc_hew / 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 {  //\93à\95\94\83N\83\8d\83b\83N20MHz
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 {  //\93à\95\94\83N\83\8d\83b\83N25MHz
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=\92²\95à\93¯\8aú 1=\83N\83\8d\83b\83N\93¯\8aú
63                         u1 CHR          :1;             // 0=8bit data 1=7bit data
64                         u1 PE           :1;             // 0=\83p\83\8a\83e\83B\82È\82µ 1=\83p\83\8a\83e\83B\82 \82è
65                         u1 OE           :1;             // 0=\8bô\90\94\83p\83\8a\83e\83B 1=\8aï\90\94\83p\83\8a\83e\83B
66                         u1 STOP         :1;             // 0=\83X\83g\83b\83v\83r\83b\83g\92·1bit 1=\83X\83g\83b\83v\83r\83b\83g\92·2bit
67                         u1 MP           :1;             // 0=\83V\83\93\83O\83\8b\83v\83\8d\83Z\83b\83T 1=\83}\83\8b\83`\83v\83\8d\83Z\83b\83T
68                         u1 CKS1         :1;             // \83N\83\8d\83b\83N\83Z\83\8c\83N\83g
69                         u1 CKS0         :1;             // \83N\83\8d\83b\83N\83Z\83\8c\83N\83g
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;             // \91\97\90M\8a®\97¹\8e\9e\8a\84\82è\8d\9e\82Ý 0=TXI\8bÖ\8e~ 1=TXI\8b\96\89Â
87                         u1 RIE          :1;             // \8eó\90M\8a®\97¹\8e\9e\8a\84\82è\8d\9e\82Ý 0=RXI\8bÖ\8e~ 1=RXI\8b\96\89Â
88                         u1 TE           :1;             // 0=\91\97\90M\8bÖ\8e~ 1=\91\97\90M\8b\96\89Â
89                         u1 RE           :1;             // 0=\8eó\90M\8bÖ\8e~ 1=\8eó\90M\8b\96\89Â
90                         u1 MPIE         :1;             // \83}\83\8b\83`\83v\83\8d\83Z\83b\83T\8a\84\82è\8d\9e\82Ý 0=\8bÖ\8e~ 1=\8b\96\89Â
91                         u1 TEIE         :1;             // \91\97\90M\8fI\97¹\8a\84\82è\8d\9e\82Ý 0=\8bÖ\8e~ 1=\8b\96\89Â
92                         u1 CKE1         :1;             // 0=\93à\95\94\83N\83\8d\83b\83N(\92²\95à\93¯\8aú) 1=\8aO\95\94\83N\83\8d\83b\83N(\83N\83\8d\83b\83N\93¯\8aú\8e®)
93                         u1 CKE0         :1;             // CKE1=0,0=SCI \82Í\81ASCK \92[\8eq\82ð\8eg\97p\82µ\82Ü\82¹\82ñ CKE1=1,0=\83r\83b\83g\83\8c\81[\83g\82Æ\93¯\82\8eü\94g\90\94\82Ì\83N\83\8d\83b\83N\82ð\8fo\97Í
94                 }BIT;
95         }SCR;
96
97         u1 TDR;
98
99         union
100         {
101                 u1 BYTE;
102                 struct
103                 {
104                         u1 TDRE         :1;             // 0=TDR\82É\97L\8cø\82È\91\97\90M\83f\81[\83^\82ª\83\89\83C\83g\82³\82ê\82Ä\82¢\82é 1=TDR\82É\97L\8cø\82È\91\97\90M\83f\81[\83^\82ª\82È\82¢
105                                                                 // \81m\83N\83\8a\83A\8fð\8c\8f\81nTDRE=1 \82Ì\8fó\91Ô\82ð\83\8a\81[\83h\82µ\82½\8cã\81A0 \82ð\83\89\83C\83g\82µ\82½\82Æ\82«, DMAC \82ÅTDR \82Ö\83f\81[\83^\82ð\83\89\83C\83g\82µ\82½\82Æ\82«
106                                                                 // \81m\83Z\83b\83g\8fð\8c\8f\81nTDR \82©\82çTSR \82É\83f\81[\83^\93]\91\97\82ª\8ds\82í\82ê\82ÄTDR \82É\83f\81[\83^\83\89\83C\83g\82ª\89Â\94\\82É\82È\82Á\82½\82Æ\82«, SCR \82ÌTE \83r\83b\83g\82ª0 \82Ì\82Æ\82«, \83\8a\83Z\83b\83g\81A\82Ü\82½\82Í\83X\83^\83\93\83o\83C\83\82\81[\83h\8e\9e
107                         u1 RDRF         :1;             // 0=RDR\82É\8eó\90M\83f\81[\83^\82ª\8ai\94[\82³\82ê\82Ä\82¢\82È\82¢ 1=RDR\82É\8eó\90M\83f\81[\83^\82ª\8ai\94[\82³\82ê\82Ä\82¢\82é
108                                                                 // \81m\83N\83\8a\83A\8fð\8c\8f\81nDMAC\82ÅRDR \82Ì\83f\81[\83^\82ð\83\8a\81[\83h\82µ\82½\82Æ\82«, RDRF=1 \82Ì\8fó\91Ô\82ð\83\8a\81[\83h\82µ\82½\8cã\81A0 \82ð\83\89\83C\83g\82µ\82½\82Æ\82«, \83\8a\83Z\83b\83g\81A\82Ü\82½\82Í\83X\83^\83\93\83o\83C\83\82\81[\83h\8e\9e
109                                                                 // \81m\83Z\83b\83g\8fð\8c\8f\81n\83V\83\8a\83A\83\8b\8eó\90M\82ª\90³\8fí\8fI\97¹\82µ\81ARSR \82©\82çRDR \82Ö\8eó\90M\83f\81[\83^\82ª\93]\91\97\82³\82ê\82½\82Æ\82«
110                         u1 ORER         :1;             // 0=\8eó\90M\92\86\81A\82Ü\82½\82Í\90³\8fí\82É\8eó\90M\82ð\8a®\97¹\82µ\82½ 1=\8eó\90M\8e\9e\82É\83I\81[\83o\83\89\83\93\83G\83\89\81[\82ª\94­\90\82µ\82½
111                         u1 FER_ERS      :1;             // 0=\8eó\90M\92\86\81A\82Ü\82½\82Í\90³\8fí\82É\8eó\90M\82ð\8a®\97¹\82µ\82½ 1=\8eó\90M\8e\9e\82É\83t\83\8c\81[\83~\83\93\83O\83G\83\89\81[\82ª\94­\90\82µ\82½
112                         u1 PER          :1;             // 0=\8eó\90M\92\86\81A\82Ü\82½\82Í\90³\8fí\82É\8eó\90M\82ð\8a®\97¹\82µ\82½ 1=\8eó\90M\8e\9e\82É\83p\83\8a\83e\83B\83G\83\89\81[\82ª\94­\90\82µ\82½
113                         u1 TEND         :1;             // 0=\91\97\90M\92\86\82Å\82 \82é 1=\91\97\90M\82ð\8fI\97¹\82µ\82½
114                         u1 MPB          :1;             // \83}\83\8b\83`\83v\83\8d\83Z\83b\83T\8aÖ\98A
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 // \83V\83\8a\83A\83\8b\83\82\81[\83h\83\8c\83W\83X\83^\81iSMR)
151 #define BRR0    0xFFFFB1 // \83r\83b\83g\83\8c\81[\83g\83\8c\83W\83X\83^\81iBRR\81j
152 #define SCR0    0xFFFFB2 // \83V\83\8a\83A\83\8b\83R\83\93\83g\83\8d\81[\83\8b\83\8c\83W\83X\83^\81iSCR\81j
153 #define TDR0    0xFFFFB3 // \83g\83\89\83\93\83X\83~\83b\83g\83f\81[\83^\83\8c\83W\83X\83^\81iTDR)          \91\97\90M\83f\81[\83^
154 #define SSR0    0xFFFFB4 // \83V\83\8a\83A\83\8b\83X\83e\81[\83^\83X\83\8c\83W\83X\83^\81iSSR\81j
155 #define RDR0    0xFFFFB5 // \83\8c\83V\81[\83u\83V\83t\83g\83\8c\83W\83X\83^\81iRSR\81j                       \8eó\90M\83f\81[\83^
156 #define SCMR0   0xFFFFB6 // \83X\83}\81[\83g\83J\81[\83h\83\82\81[\83h\83\8c\83W\83X\83^(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         stdio\83\89\83C\83u\83\89\83\8a\82©\82ç\82Ì\8eQ\8fÆ
180 ********************************************************************************/
181 void charput(char c);
182 char charget();
183
184 /********************************************************************************
185         \83|\81[\83\8a\83\93\83O
186 ********************************************************************************/
187 void sci_init(SCI_NO no, BitRate_type_t type);
188 void sci_write(SCI_NO no, char c);
189 void sci_write_str(SCI_NO no,const char* _Str);
190 void sci_read(SCI_NO no, char* buff, int size);
191 char sci_read_byte(SCI_NO no);
192 int sci_read_pol(SCI_NO no);
193
194 /********************************************************************************
195         \8a\84\82è\8d\9e\82Ý
196 ********************************************************************************/
197 char sci_read_byte_intr(SCI_NO no);
198 void sci_write_intr_enable(SCI_NO no);
199 void sci_write_intr_disable(SCI_NO no);
200 void sci_read_intr_enable(SCI_NO no);
201 void sci_read_intr_disable(SCI_NO no);
202
203 #ifdef __cplusplus
204 }
205 #endif
206
207 #endif /* SCI_H_ */