RXduino  1.20a
RXduinoマニュアル 最終更新日 平成26年6月29日
tkdn_sci.h
説明を見る。
1 /*******************************************************************************
2 * RXduinoライブラリ & 特電HAL
3 *
4 * このソフトウェアは特殊電子回路株式会社によって開発されたものです。
5 * 当社Webサイトを通じてダウンロードすることによって使用許諾されます。
6 * このファイルを第三者へ開示・再配布・貸与・譲渡することはできません。
7 * このソフトウェアはあるがままの状態で提供され、内容および動作についての保障はあ
8 * りません。弊社はファイルの内容および実行結果についていかなる責任も負いません。
9 * お客様は、お客様の製品開発のために当ソフトウェアのソースコードを自由に参照し、
10 * 引用していただくことができます。
11 * コンパイル・リンク後のオブジェクトファイル(ELF ファイルまたはMOT,SRECファイル)
12 * であって、デバッグ情報が削除されている場合は第三者に再配布することができます。
13 * (C) Copyright 2011-2014 TokushuDenshiKairo Inc. 特殊電子回路株式会社
14 * http://rx.tokudenkairo.co.jp/
15 *******************************************************************************/
16 
17 #ifndef __H_TKDN_SCI
18 #define __H_TKDN_SCI
19 /**************************************************************************/
25 #include "tkdn_hal.h"
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 #define SCI_TXINTERRUPT_NOTUSE 0
32 #define SCI_TXINTERRUPT_USE 1
33 
34 /*********************************************************************/
37 typedef enum {
48 } SCI_PORT;
49 
50 /*********************************************************************/
53 typedef enum {
57 } CRLFMODE;
58 
59 
60 //■■■■■■■■■■■■■■■■■■■■■■■■■
61 // ユーザがカスタマイズする場所
62 
63 #define SCI_BUFSIZE 256 // 受信・送信があるので実際にはこの2倍のメモリを使う
64  // 2^nの値を指定すること
65 
66 // SCI TX割り込みを使うならここを書き換える
67 #define SCI_TXINTERRUPT_MODE SCI_TXINTERRUPT_USE
68 
69 // カスタマイズはここまで
70 //■■■■■■■■■■■■■■■■■■■■■■■■■
71 
72 typedef struct sci_str
73 {
74  // 送受信バッファ
75  volatile char rxbuf[SCI_BUFSIZE];
76  volatile char txbuf[SCI_BUFSIZE];
77 
78  // 送受信バッファのポインタ
79  volatile int tx_rptr;
80  volatile int tx_wptr;
81  volatile int rx_rptr;
82  volatile int rx_wptr;
83 
84  volatile SCI_PORT port;
85  volatile CRLFMODE crlf_tx;
86  volatile CRLFMODE crlf_rx;
87 } sci_str;
88 
91 typedef struct sci_str sci_t;
92 
93 //各種関数
94 
95 /*********************************************************************/
103 SCI_PORT sci_init(SCI_PORT _port,int bps);
104 
105 /*********************************************************************/
109 SCI_PORT sci_getport(void);
110 
111 /*********************************************************************/
119 int sci_putc(char c);
120 
121 /*********************************************************************/
129 int sci_puts(const char *str);
130 
131 /*********************************************************************/
136 char sci_getc(void);
137 
138 /*********************************************************************/
149 char *sci_gets(char *s,int max);
150 
151 /*********************************************************************/
159 void sci_writedata(const unsigned char *data,int len);
160 
161 /*********************************************************************/
165 void sci_readdata(unsigned char *data,int len);
166 
167 /*********************************************************************/
171 int sci_rxcount(void);
172 
173 /*********************************************************************/
182 
183 /*********************************************************************/
189 char sci_peek(void);
190 
191 /*********************************************************************/
195 void sci_flush(void);
196 
197 
198 // 拡張版SCIルーチン
199 
200 // SCIの初期化
201 TKDN_HAL
202 void sci_init_ex(sci_t *sci,SCI_PORT _port,int bps);
203 
204 // SCIの使用ポートを取得
205 TKDN_HAL
206 SCI_PORT sci_getport_ex(sci_t *sci);
207 
208 // 1文字送信
209 // ※失敗(送信バッファFULL)したら0を返す
210 TKDN_HAL
211 int sci_putc_ex(sci_t *sci,char c);
212 
213 // 文字列送信
214 // ※失敗(送信バッファFULL)したら0を返す
215 TKDN_HAL
216 int sci_puts_ex(sci_t *sci,const char *str);
217 
218 // 1文字受信
219 // ※受信した文字がなければ\0を返す
220 TKDN_HAL
221 char sci_getc_ex(sci_t *sci);
222 
223 // 文字列受信
224 // 最大max文字受信する
225 // 最後にヌルターミネータをつけるが、最大文字数に達した場合はヌルターミネータはつけない
226 TKDN_HAL
227 char *sci_gets_ex(sci_t *sci,char *s,int max);
228 
229 // バイナリデータ送信
230 TKDN_HAL
231 void sci_writedata_ex(sci_t *sci,const unsigned char *data,int len);
232 
233 // バイナリデータ受信
234 // ※指定されたデータ量を受信するまで制御を返さない
235 TKDN_HAL
236 void sci_readdata_ex(sci_t *sci,unsigned char *data,int len);
237 
238 // 受信バッファに溜まっているデータ数を調べる
239 TKDN_HAL
240 int sci_rxcount_ex(sci_t *sci);
241 
242 // CRやLFの変換をSCIライブラリ内で行う
243 TKDN_HAL
244 void sci_convert_crlf_ex(sci_t *sci,CRLFMODE tx,CRLFMODE rx);
245 
246 // データを覗き見る
247 TKDN_HAL
248 char sci_peek_ex(sci_t *sci);
249 
250 // 送信データをフラッシュする
251 TKDN_HAL
252 void sci_flush_ex(sci_t *sci);
253 
254 //
255 TKDN_HAL
256 void sci_regist_default(sci_t *sci);
257 
258 #ifdef __cplusplus
259 }
260 #endif
261 
262 #endif // __H_TKDN_SCI
263 
SCI_PORT sci_init(SCI_PORT _port, int bps)
デフォルトのSCIポートを初期化する
SCI1 (ポートPF0,PF2,JTAGと兼用) を使う
Definition: tkdn_sci.h:43
char sci_peek(void)
デフォルトのSCIポートの受信データを覗き見る
void sci_writedata(const unsigned char *data, int len)
デフォルトのSCIポートにバイナリデータを送信する
int sci_rxcount(void)
デフォルトのSCIポートから受信したデータがバッファに溜まっている量を調べる
USB1 の仮想COMポートを使う ※ 未実装
Definition: tkdn_sci.h:41
int sci_puts(const char *str)
デフォルトのSCIポートに文字列を送信する
#define max(a, b)
2つの数値のうち大きいほうの値を返す
Definition: wiring.h:122
SCI_PORT
SCIの動作ポート定数
Definition: tkdn_sci.h:37
CRやLFを変換しない
Definition: tkdn_sci.h:54
SCI0 (ポートP20,P21と兼用) を使う
Definition: tkdn_sci.h:42
CRLFMODE
CR(\r == 0x0d)やLF(\n == 0x0a)の取り扱い方法
Definition: tkdn_sci.h:53
USB0 の仮想COMポートを使う
Definition: tkdn_sci.h:40
struct sci_str sci_t
SCI情報構造体のハンドラ(拡張版SCIルーチンで使用する)
Definition: tkdn_sci.h:91
void sci_readdata(unsigned char *data, int len)
デフォルトのSCIポートからバイナリデータを受信する
SCI2A (ポートP13,P12)を使う
Definition: tkdn_sci.h:44
int sci_putc(char c)
デフォルトのSCIポートに1文字送信する
char * sci_gets(char *s, int max)
デフォルトのSCIポートから受信した文字を、文字列として読み出す。エコーバックも行う。
void sci_convert_crlf(CRLFMODE tx, CRLFMODE rx)
デフォルトのSCIポートで送受信するデータのCRやLFの変換方法を指定する
char sci_getc(void)
デフォルトのSCIポートから受信した文字をバッファから1文字読み出して返す
SCI6A (ポートP00,P01)を使う ※100ピンデバイスにはない
Definition: tkdn_sci.h:46
改行はCRとLFである
Definition: tkdn_sci.h:56
SCIを使わない
Definition: tkdn_sci.h:38
SCI6B (ポートP32,P33)を使う
Definition: tkdn_sci.h:47
SCI2B (ポートP50,P52)を使う
Definition: tkdn_sci.h:45
SCI_PORT sci_getport(void)
デフォルトのSCIポートの使用ポートを取得する
特電HALのヘッダファイル
SCIを自動選択
Definition: tkdn_sci.h:39
改行はCRのみである
Definition: tkdn_sci.h:55
void sci_flush(void)
デフォルトのSCIポートの送信データをフラッシュする