2B RFID TA 18 10 2326 2 RFID RFID RFID RFID PC RFID RFID 2 2 1. Fig. 1: Fig. 2: Fig. 3: 2B1 / 16
1.1 シリアル通信 Fig. 1 にあるように 通信は大きく分けてシリアル通信とパラレル通信に分かれる シリアル通信は基本的に送受信に各 1 本のデータ線を使い 全てのビットを順番にデータ線に流すことによ り通信が行われる このため TxD,RxD の最低 2 本の線を繋げば通信できる (Fig. 2) これに対して パラレル通信では 送信したいビットの数だけ通信線を用意し 一度に全ビットを通信する 方式となる (Fig. 3) 1.2 非同期式シリアル通信 (UART) シリアル通信には さらに非同期式 同期式などの通信方式がある 同期式のシリアル通信は 互いに共通のクロックを持ち このクロックにあわせて通信を行う このため RxD や TxD 以外にもクロック線が必要になるなど面倒な部分が多いが 速い速度での通信を行うことが出 来る 非同期式のシリアル通信では 通信を開始する前に 転送レートをお互いに設定しておき その転送レート に従ってデータを転送する 共通のクロックは必要ない この方式ではあまり早い通信を行うことは出来ない が 簡単であるため広く利用されている 最も簡単な場合 RxD(受信) TxD(送信) の 2 本の信号線があれば実 現できる 今回の RFID モジュールとの通信では RxD TxD に加え 5[V] GND の合計 4 つの信号線を使う また 2 台のマイコン間の通信では RxD TxD に加え GND の合計 3 つの信号線を使う 2. OAKS16-mini のシリアル通信用ポート 創造設計第二で使用するマイコン OAKS16-mini は UART0 UART1 UART2 の 3 個のシリアル通信用の ポートを搭載している このうち UART1 はデバッグや焼き込みなどの際のホスト PC との通信に使われてい る UART0 は マイコンの 5[V] 系を RS232C 電圧レベルに変換するバッファや 正論理と負論理を入れ替え るインバータを持った RS2332C ドライバ (Fig. 4) を通った信号線が来ている このため このドライバを搭載 していない RFID モジュールとの通信には向いていない 従って 今回の試作検討では RFID モジュールとの 通信を UART2 を使って行い マイコン間通信は UART0 を使って行う 7#46 7#46 45 % ࡃ 7#46 Fig. 4: MCU ボード 試作検討 2B 2 / 16
3. RFID RFID 3.1 RFID JR Suica IC 5 IC IC IC RFID Fig. 5: RFID Fig. 6: RFID 3.2 RFID RFID RFID 6 RFID RFID RFID 3.3 RFID V720S-HMC73 RFID V720S-HMC73V720 V720 V720 V720 3.3.1 V720 FIFO 2 3 6 FIFO 7 RFID 2B3 / 16
V720 4-74-8 1. Single Mode Read / Write FIFO 2. FIFO FIFO Mode Read / Write Stop 1. Trigger Mode Read / Write 2. Auto Mode Read / Write Stop 3. Repeat Mode Read / Write Stop V720 V720 V720 3.3.2 V720 9600bps / 38400bps 38400bps 9600bps V720 V720 V720 OFF9600bpsON38400bps 2-2 3.3.3 RFID 1024 IC SL2-ICS20 IC V720 V720 4 ASCII 4 16 7 3.4 V720S ver1.0beta RFID V720 C V720S T:Yss2YLIB06YV720S LIB ver1.0beta 2B4 / 16
Bank Page Byte0 Byte1 Byte2 Byte3 0h 1h 2h 3h 4h 00h 5h 6h 7h 8h Freespace 9h Ah Bh Ch Dh Eh Fh Bank Page Byte0 Byte1 Byte2 Byte3 0h Position 01h 1h 2h 3h 4h 5h 6h 7h 8h 9h Ah Bh Read / Write Area Read-only Area Unused Area Unused Fig. 7: () 3.4.1 V720S 3.4.2 v720s.h UART2 V720 OAKS16mini UART2 *1 OAKS16mini 13 V720S v720s.cv720s Library C Source File v720s.hv720s Library Public Header File uart2.cuart2 Library C Source File uart2.huart2 Library Private Header File V720S v720s.h V720S *1 UARTUniversal Asynchronous Receiver Transmitter 2B5 / 16
3.4.2 V720S RFID V720S-HMC73 v720s init v720s putcmd read v720s putcmd write v720s putcmd stop v720s getdata UART2 V720 V720 Read V720 Write V720 Stop V720 V720 uart2 received v720s busy UART2 V720 3.4.3 v720s init int v720s init(void) UART2 V720 (TEST ) 0 999998110114 v720s putcmd read int v720s putcmd read(unsigned char mode type, unsigned char data type, unsigned char pagenum fs st, unsigned char pagenum fs end) mode type data type V720 pagenum fs st pagenum fs end 0 997993991 v720s putcmd write int v720s putcmd write(unsigned char mode type, unsigned int pagenum fs st, char* data write) mode type data write pagenum fs st V720 0 997992 v720s putcmd stop int v720s putcmd stop(void) V720 0 997996 2B6 / 16
v720s getdata int v720s getdata(char* data read) V720 data read char data read V720 995110114 v720s init OAKS16mini V720 V720 v720s init v720s putcmd xxx V720S 0 V720 V720 v720s getdata V720 v720s getdata V720SUART2 v720s getdata char UART1 char 651 + 1 C 3.4.4 0 0 unsigned int uart2 received uart2 received V720 (UART2 ) UART2 1 0 unsigned int v720s busy v720s busy V720S v720s getdata 0 1 V720 1 V720 v720s putcmd xxx V720 V720 v720s getdata V720 v720s getdata 2B7 / 16
3.4.5 mode typedata typefs pagenum mode type V720S MODE ST V720S MODE SA V720S MODE SR V720S MODE FT V720S MODE FA V720S MODE FR Single Trigger Single Auto Single Repeat FIFO FIFO Trigger FIFO FIFO Auto FIFO FIFO Repeat data type V720S DATA UID V720S DATA FS V720S DATA POS Unique Identification Freespace Position pagenum fs st or end 015 015 (015) 3.4.6 V720S V720SUART V720 V720 4-9 V720S 999 999 V720 998 TEST V720 997 UART v720s init 996 995 V720 994 mode type 993 data type 992 64 991 fs pagenum st or end UART 100 102 UART 111 UART 112 UART 114 UART V720 0 0 70 72 (Trigger mode ) 2B8 / 16
3.4.7 9600bps 38400bps V720 V720 3.3.2 OAKS16mini uart2.h #define UART2 BOWRATE 129#define UART2 BOWRATE 31 3.5 RFID 3.5.1 RFID RFID V720S V720SRFID RFID 10 8 Fig. 9: Fig. 8: RFID RFID 9 RFID ( 9 ) RFID 3.5.2 RFID SS2 2B9 / 16
注意 SS2 ボード上の IC 類は非常に高価なので 静電気や不注意によるショートな どで破壊しないように気をつけてください OAKS16mini では P70 が UART2 の送信ポート P71 が UART2 の受信ポートになっています したがっ て RFID モジュールの受信ポートと P70 を RFID モジュールの送信ポートと P71 を接続します この際 V850/KG1 と RFID モジュールの送受信ポートをそれぞれクロスでつなぐことに気をつけて下さい また TXD2 は N チャンネルオープンドレインなので RFID モジュールの RXD と接続際にはプールアップ抵抗を付 ける必要があります (RFID モジュールの通信方式は CMOS レベル) 図 10 に SS2 ボードから 5V GND P70 および P71 をとる方法を示します 電源と GND を間違えないよ うに気をつけてください )0& 2 4:& 4(+& /QFWNG 2 6:& 8EE Mǡ 4:& 6:& )0& 2 4:& 2 6:& 8EE 8 )0& Fig. 10: SS2 ボードから 5V GND P70 および P71 をとる方法 3.6 課題 V720S と C 言語ライブラリの使い方 3.6.1 実験準備 ³ 実験準備 1. T:Yss2YshisakuYshisaku02Yrfid 以下にあるサンプルプログラムをコピーする 2. main.c をエディタで開いてプログラム全体を確認した後 以下の点を修正する グロバールで定義された フリースペース書き込み用の char 型ポインタの配列 message に 自分たちのオリジナルメッセージを書く 3. TM でビルド後 図 10 を参考して V720S とマイコンを接続する その後 デバッガ KD30 の起 動して watch ウィンドウを起動 watch には 以下の message のグローバル変数を追加しておく µ 試作検討 2B 10 / 16
3.6.2 1. 2cm V720S RFID V720S V720 LED 2. CPU 2 0-3 2 mode=0 mode=1 message mode=2 mode=3, 3. V720S (Single & FIFO Tirgger, FIFO Repeat ) ( default V720S MODE ST Single Trigger 4 V720S MODE ST V720S MODE FT(FIFO Trigger) Single Single&FIFO Trigger RFID Repeat V720S MODE FR(FIFO Repeat) ) 4. V720S send error codereceive error code v720s getdata(data) data send flag RFID v720s.c TA T:Yss2Ydata sheet v720 2B11 / 16
4. 13 ( 13.1 13.3 ) Fig. 11: (!!) 4.1 1 1 1 1 2 4.2 uart0.c uart0.h RFID mcu comunication.c mcu comunication.h int init mcu comu( void ) UART0 0 100117, 210230 int mcu comu tra str(const unsigned char* send mess); send mess 0 100117, 210230 2B12 / 16
int mcu comu rec str(unsigned char* receive mess); receive mess 0 100117, 210230 4.3 1. 1 2 2 2. 2 UART0 (Fig. 12) 9pin 2 RxD TxD Fig. 12: UART0/D-sub 3. ( 2 a b) T:\SS2\shisaku\shisaku02\mcu_comunication\ 4. 5. LCD ON LCD ON OFF 50[ms] 1 () 50[ms] 1 LCD 50[ms] 1 ON OFF UART0 UART0 (<CR>) LCD 6. (IE RE TE ) 2B13 / 16
101 102 () 111 () 112 () 113 + 114 115 + 116 + 117 + + 210 2201 230 4.4 1. LCD 10 ON OFF 2. uart0.h #define UART0_BOWRATE 255 4.5 0255 255 uart0.c u0c0 2 [bps] = 20[MHz] / 16 / (UART0_BOWRATE + 1).h () TA.h 16 1 2 3 4.6 4.6.1 RTSCTS 2 2B14 / 16
4.6.2 U0MR STPS 1 2 (2 ) 4.6.3 H U0MR PRY PRYE U0RB PER H RFID 4.6.4 UART0 4.6.5 UART2 UART2 I 2 C Bus 3 13.4 13.5 4.7 + p1 A B B A A B B A ASCII ASCII () 3 3 ASCII P1 0xA9 2B15 / 16
1. P1 111 P1 0xA9 (send mess) sprintf(send_mess, "%ld", (unsigned long)111*1000 + p1); 2. send mess 111169 3. receive mess 4. long receive code receive_code=atol(receive_mess); (atol() ASCII long int atoi() stdlib.h ) long receive code 111169 5. int receive cmd() receive data() receive_cmd = (receive_code - (receive_code % 1000)) / 1000;// receive_cmd = 111 receive_data = receive_code % 1000;// receive_data = 169 = 0xA9 T:\SS2\shisaku\shisaku02\omake\ 4.8 while 2B16 / 16