OSDN Git Service

projects clean up 1
[pinoc/pinoc.git] / test / Standart_startup / lib / 3069 / 3069f_sci.h
diff --git a/test/Standart_startup/lib/3069/3069f_sci.h b/test/Standart_startup/lib/3069/3069f_sci.h
new file mode 100644 (file)
index 0000000..8fbe752
--- /dev/null
@@ -0,0 +1,193 @@
+/*
+ * sci.h
+ *
+ *  Created on: 2010/11/27
+ *      Author: pino
+ */
+
+#ifndef _SCI_H_
+#define _SCI_H_
+
+typedef unsigned char u1;
+typedef unsigned int short u2;
+
+#define BIT_CTL
+#define C20MHZ 1
+#define C25MHZ 0
+
+#ifndef BIT_CTL
+#define CKS0   (1 << 0)
+#define CKS1   (1 << 1)
+#define MP             (1 << 2)
+#define STOP   (1 << 3)
+#define OE             (1 << 4)
+#define PE             (1 << 5)
+#define CHR    (1 << 6)
+#define CA             (1 << 7)
+#define SHIFT_CTL
+
+#else
+
+#define CKS_1C 0x00
+#define CKS_4C 0x01
+#define CKS_16C        0x02
+#define CKS_64C        0x03
+#endif
+
+#if C20MHZ
+typedef enum { //内部クロック20MHz
+       BitRate_type_br4800  = 129,             // CKS=00
+       BitRate_type_br9600  = 64,              // CKS=00
+       BitRate_type_br19200 = 32,              // CKS=00
+       BitRate_type_br38400 = 15               // CKS=00
+}BitRate_type_t;
+#endif
+
+#if C25MHZ
+enum {         //内部クロック25MHz
+  br4800  = 162,               // CKS=00
+  br9600  = 80,                // CKS=00
+  br19200 = 40,                // CKS=00
+  br38400 = 19         // CKS=00
+}BitRate;
+#endif
+
+struct SCI
+{
+       union
+       {
+               u1 BYTE;
+               struct
+               {
+                       u1 CA           :1;             // 0=調歩同期 1=クロック同期
+                       u1 CHR          :1;             // 0=8bit data 1=7bit data
+                       u1 PE           :1;             // 0=パリティなし 1=パリティあり
+                       u1 OE           :1;             // 0=偶数パリティ 1=奇数パリティ
+                       u1 STOP         :1;             // 0=ストップビット長1bit 1=ストップビット長2bit
+                       u1 MP           :1;             // 0=シングルプロセッサ 1=マルチプロセッサ
+                       u1 CKS1         :1;             // クロックセレクト
+                       u1 CKS0         :1;             // クロックセレクト
+               }BIT;
+
+               struct
+               {
+                       u1                      :6;
+                       u1 CKS          :2;
+               };
+       }SMR;
+
+       u1 BRR;
+
+       union
+       {
+               u1 BYTE;
+               struct
+               {
+                       u1 TIE          :1;             // 送信完了時割り込み 0=TXI禁止 1=TXI許可
+                       u1 RIE          :1;             // 受信完了時割り込み 0=RXI禁止 1=RXI許可
+                       u1 TE           :1;             // 0=送信禁止 1=送信許可
+                       u1 RE           :1;             // 0=受信禁止 1=受信許可
+                       u1 MPIE         :1;             // マルチプロセッサ割り込み 0=禁止 1=許可
+                       u1 TEIE         :1;             // 送信終了割り込み 0=禁止 1=許可
+                       u1 CKE1         :1;             // 0=内部クロック(調歩同期) 1=外部クロック(クロック同期式)
+                       u1 CKE0         :1;             // CKE1=0,0=SCI は、SCK 端子を使用しません CKE1=1,0=ビットレートと同じ周波数のクロックを出力
+               }BIT;
+       }SCR;
+
+       u1 TDR;
+
+       union
+       {
+               u1 BYTE;
+               struct
+               {
+                       u1 TDRE         :1;             // 0=TDRに有効な送信データがライトされている 1=TDRに有効な送信データがない
+                                                               // [クリア条件]TDRE=1 の状態をリードした後、0 をライトしたとき, DMAC でTDR へデータをライトしたとき
+                                                               // [セット条件]TDR からTSR にデータ転送が行われてTDR にデータライトが可能になったとき, SCR のTE ビットが0 のとき, リセット、またはスタンバイモード時
+                       u1 RDRF         :1;             // 0=RDRに受信データが格納されていない 1=RDRに受信データが格納されている
+                                                               // [クリア条件]DMACでRDR のデータをリードしたとき, RDRF=1 の状態をリードした後、0 をライトしたとき, リセット、またはスタンバイモード時
+                                                               // [セット条件]シリアル受信が正常終了し、RSR からRDR へ受信データが転送されたとき
+                       u1 ORER         :1;             // 0=受信中、または正常に受信を完了した 1=受信時にオーバランエラーが発生した
+                       u1 FER_ERS      :1;             // 0=受信中、または正常に受信を完了した 1=受信時にフレーミングエラーが発生した
+                       u1 PER          :1;             // 0=受信中、または正常に受信を完了した 1=受信時にパリティエラーが発生した
+                       u1 TEND         :1;             // 0=送信中である 1=送信を終了した
+                       u1 MPB          :1;             // マルチプロセッサ関連
+                       u1 MPBT         :1;             //      "
+               }BIT;
+       }SSR;
+
+       u1 RDR;
+
+       union
+       {
+               u1 BYTE;
+               struct
+               {
+                       u1                      :4;
+                       u1 SDIR         :1;
+                       u1 SINV         :1;
+                       u1                      :1;
+                       u1 SMIF         :1;
+               }BIT;
+       }SCMR;
+};
+
+//typedef int SCI_NO;
+//#define SCI_NO_0 0
+//#define SCI_NO_1 1
+//#define SCI_NO_2 2
+
+typedef enum {
+       SCI_NO_0 = 0,
+       SCI_NO_1,
+       SCI_NO_2
+}SCI_NO;
+
+#define SCI0A ((volatile struct SCI*)0xFFFFB0)
+#define SCI1A ((volatile struct SCI*)0xFFFFB8)
+#define SCI2A ((volatile struct SCI*)0xFFFFC0)
+
+#define SMR0   0xFFFFB0 // シリアルモードレジスタ(SMR)
+#define BRR0   0xFFFFB1 // ビットレートレジスタ(BRR)
+#define SCR0   0xFFFFB2 // シリアルコントロールレジスタ(SCR)
+#define TDR0   0xFFFFB3 // トランスミットデータレジスタ(TDR)           送信データ
+#define SSR0   0xFFFFB4 // シリアルステータスレジスタ(SSR)
+#define RDR0   0xFFFFB5 // レシーブシフトレジスタ(RSR)                  受信データ
+#define SCMR0  0xFFFFB6 // スマートカードモードレジスタ(SCMR)
+
+#define SMR1   0xFFFFB8
+#define BRR1   0xFFFFB9
+#define SCR1   0xFFFFBa
+#define TDR1   0xFFFFBb
+#define SSR1   0xFFFFBc
+#define RDR1   0xFFFFBd
+#define SCMR1  0xFFFFBe
+
+#define SMR2   0xFFFFC0
+#define BRR2   0xFFFFC1
+#define SCR2   0xFFFFC2
+#define TDR2   0xFFFFC3
+#define SSR2   0xFFFFC4
+#define RDR2   0xFFFFC5
+#define SCMR2  0xFFFFC6
+
+/********************************************************************************
+       ポーリング
+********************************************************************************/
+void sci_init(SCI_NO no, BitRate_type_t type);
+void sci_write(SCI_NO no, char c);
+void sci_write_str(SCI_NO no,const char* _Str);
+void sci_read(SCI_NO no, char* buff, int size);
+char sci_read_byte(SCI_NO no);
+int sci_read_pol(SCI_NO no);
+
+/********************************************************************************
+       割り込み
+********************************************************************************/
+char sci_read_byte_intr(SCI_NO no);
+void sci_write_intr_enable(SCI_NO no);
+void sci_write_intr_disable(SCI_NO no);
+void sci_read_intr_enable(SCI_NO no);
+void sci_read_intr_disable(SCI_NO no);
+
+#endif /* SCI_H_ */