로그인회원등록 내글장바구니주문조회현재접속자
 상품 검색








 게시판 검색





 
 
회원등록 비번분실


온라인 입금계좌
ㆍ기업은행
ㆍ219-043192-01-028
ㆍ이건영

      거래은행 바로가기
 
 Build your Project
PROJECT 자료실
작성자 leeky        
작성일 2007/03/15
첨부#2 iso15693_rfid_film_tag.gif (0KB) (Down:20)
ㆍ추천: 0  ㆍ조회: 697   
  13.56MHz ISO-15693 RFID 태그 읽기장치 제작

13.56MHz RFID 태그는 ISO 14443A(0~10cm), ISO 14443B, ISO 15693 (0~70cm)로 분류됩니다.
이 밖에 유사한 규격으로 Tag-It (Texas Instrument)과 Felica(Sony)등이 새로운 상품이 출시되고 있습니다만,
읽기/쓰기가 가능하며 70cm에서 작동하는 출입통제나 물류관리에 사용하는 ISO 15693 태그로 목표를 정햇습니다. 이 자료는 ISO/IEC 15693-3 표준규격을 참조하여 작성하였으며, 타겟은 RC632, EM4094, TRH031M을 사용할 수 있습니다.
.
◎ 비접촉식 카드의 표준은 3 종류가 있으며, 작동거리에 따라서 속도와 전송방식이 틀립니다.
ISO/IEC 10536 (Close-coupled cards) <- 밀착
ISO/IEC 14443 (Proximity cards) <- 근접 (사용 예 : 교통카등) <- 작동거리 10cm 이내로 , 전송속도는 106KHz 이다.
ISO/IEC 15693 (Vicinity cards) <- 부근 (사용 예 : 전자 키, 출입관리, 물류관리) 

ISO 15693 태그의 전송속도는 26.69KHz이다.  작동거리는 10 ~ 70cm 이며 안테나의 조건에 따라 틀려질 수 있다. ISO 15693 방식으로 10cm 이상의 거리에서 태그를 읽으려면, 대부분의 IC 출력에 13.56MHz RF 출력 증폭기를 추가해야 한다. 안테나 코일을 다음과 같이 2개로 분리하여 아래와 같이 다이폴 방식으로 만들면, 작동 거리를 10~20cm 정도 까지 늘려 줄 수 있다.
 
 
이 방식은, 같은 출력으로 2배의 감도를 유지하는 이유는 송신-전용측(ANT1)과 송신-수신 겸용측(ANT2)이 좌우로 분리되어 있어 근접된 태그의 코일에 들어가는 고주파 전력은 같으나, 읽기장치의 수신핀에 혼입되는 송신출력의 진폭이 1/2로 줄어 들기 때문에, 결국 송신파형에 섞여 있는 유효 수신파형의 비율이 높아지므로, 좌우를 밀착시킨 방식보다 좋은 방식이라고 생각한다. 그러나 기존에 2개의 코일이 겹친 방식보다, 좌우로 분리한 방식의 수신파형 진폭은 오히려 낮아 진다. (S/N Ratio가 향상됨)  Rx Hysteresis는 ISO 14443A 태그는 180mV, ISO 15693 태그는 수신진폭이 낮으므로 100mV로 하면 수신이 잘 된다.

ISO 15693은 여러개의 태그를 동시에 읽을 수 있으나, 그렇게 하기 위해서는 고주파 출력을 더 필요로 한다. (읽기장치의 IC 출력을 증폭없이 안테나에 공급하면, 안테나에 근접된 태그를 3개 정도까지 읽을 수 있다) 작동거리도 20cm 이상 늘리려면 IC의 안테나 출력을 FET등으로 증폭해서 안테나에 공급해야 작동거리가 70cm 까지 늘어나며, IC 출력에서 안테나 사이의 공진 및 임피던스 매칭에 사용하는 L, C, R 고주파 부품은 가급적 SMD를 사용해야 하며, 제조사에서 추천하는 값을 준수하는 것이 중요하며, 특히 고주파 반사파가 생기지 않도록 부품은 직선배치를 해야 한다. 

ISO15693 RFID용 고주파 증폭기 회로 (출력 1~2W 13.56MHz 고주파 증폭기 회로)

  
회로는 N-CH MOS FET의 높은 Vgs (Turn-on)를 이용한 E급 Bias 증폭기로 5V Logic level 입력으로 구동된다. TX 입력은 FCC 규격에 적합하도록 고조파의 대역확산을 방지하는 LC 필터(1uH 와 130pF)를 추가할 수 도 있다.
13.56MHz 안테나 코일의 L 값은 1 ~ 2uH, C 값은 120~150pF, Q 값은 30을 사용한다. 권선의 품질계수 Q는 다음과 같이 정의된다. Q = fo / △f = 13.56M / 0.452M = 30 (Q는 변조시의 출력진폭이 -3dB로 낮아지는 양측파대의 점유주파수 대역폭(△f)이 중심주파수의 1/30 이라는 뜻이다)  

13.56MHz E급 출력 3.5W 고주파 증폭기 회로 (더 큰 출력으로 안테나를 구동할 수 있다)
 
 
13.56MHz E급 출력 5W 고주파 증폭기의 예
(반지 모양의 Troidal Core는 HF 주파수용을 사용해야 한다)
고주파용 Troidal Core의 종류는 페라이트(검정색)와 필터용 Dust(적색)로 구분되며 국산은 아직 없다.
 
 
ISO 14443A, 14443B, 15693 태그의 물리층 인터페이스 규격은 다음과 같다.
 
ISO 15693 태그의 물리층 인터페이스 변경은 태그로 나가는 명령의 첫번째 바이트 Flag에서 설정한다.
Flag의 data Rate 비트는 태그의 전송속도를 설정한다. (Rate High를 사용한다)
Flag의 Sub carrier 비트는 태그의 신호에 423,75 kHz의 부반송파의 사용 유/무를 설정한다.
(Sub Carrier off로 한다) 

ISO 15693의 물리층 인터페이스의 4가지 방식은 다음과 같다.
(1 out of 4를 사용한다, EOF 포맷의 종류는 생략)
 
 
◎ ISO/IEC 15693과 관련된 국제표준은 다음과 같습니다.
ISO 15693-1 : 물리적 특성
ISO 15693-2 : 고주파 전력과 신호 인터페이스 규격
ISO 15693-3 : 제어 명령
ISO 10373-7 : 실험 방법 및 원리 (Test Code)
ISO 13239 :  HLDC 처리방법
ISO 7816-5 : 일련번호 부여와 등록방법
.
◎ RFID 태그에 사용되는 용어는 다음과 같다.
AFI : 응용 ID (Application family identifier) <- 태그의 읽기전용 UID 외에 응용 분야별의 ID이다.
CRC : 순환식 오류점검 (Cyclic redundancy check) <- CRC16을 말하며 2 바이트를 사용한다
DSFID : 저장포맷 ID (Data storage format identifier) <- 데이터가 저장된 방식을 나타낸다.
EOF : 자료구조의 끝 (End of frame) <- 자료구조의 끝을 알리는 신호 (대부분 Reader IC에서 자동으로 발생된다)
LSB : 하위 비트 (Least significant bit) <- 최하위 비트를 말하며, 직렬통신, RFID는 LSB 부터 송신/수신 한다
MSB : 상위 비트 (Most significant bit) <- 최상위 비트를 말하며, 직렬통신, RFID는 MSB를 마지막으로 송신/수신 한다
RFU : 예약 (Reserved for future use) <- 사용하지 않는 예약된 영역을 나타낸다.
SOF : 자료구조의 시작 (Start of frame) <- 자료구조의 시작을 알리는 신호
                                                           (대부분 Reader IC에서 자동으로 발생된다)
UID : 간단 ID (Unique identifier) <- 태그에 내장된 읽기전요 8자리 ID
        (예를 들면 사원증으로 쓰는 경우에 인증번호로 사용된다)
VCD : 근접 결합장치 (Vicinity coupling device) <- 읽기장치를 말함
VICC : 근접 IC 카드 (Vicinity integrated circuit card) <- 태그를 말함

◎ UID
UID는 읽기전용으로 카드의 생산회사의 공정에서 결정되며, 8 바이트 (64 비트) 이다.
 
 
필립스사의 SL2 ICS20의 경우는 E0 04 01 XX XX XX XX XX 의 8 바이트 16진 값으로 읽혀진다. E0은 15693 태그, 04는 필립스사(ISO 7816-6/AM1), 01은 메모리 분류가 SL2 ICS20을 사용한 태그라는 표시이다. 3 번째 UID를 포함한 6 바이트의 UID는 제조사의 일련번호이다, 읽기전용으로 변하지 않는다. (주의 사항) RFID 15693 태그는 LSB 부터 송신되나, 문서에서의 표현은 항상 MSB 우선으로 표시된다. 

◎ 필립스사의 ISO 15693 태그에 사용된 SL2 ICS20의 구조를 보여준다.
 
 
SL2 ICS20의 메모리는 32 x 32 바이트로 모두 1024 바이트이며, 1 블록은 4 바이트로 32개의 블록이 있다. 
  
◎ 필립스사의 ISO 15693 태그에 사용된 SL2 ICS20의 메모리 배치도이다
 
 
사용자 블록은 0 부터 27 까지 28 블록이며,  맨 위의 블록 2개는 UID 8 바이트이다. (주의 : 바이트 0부터 읽혀진다) 블록 -2는  EAS, AFI, DSFID 등을 나타내며, 블록 -1은 쓰기조건(Write Access Conditionas)을 넣는 메모리 이다. 블록 -2의 EAS 바이트의 비트 0는 EAS 비트이며, EAS를 사용하는 경우에 1로 세트된다. 블록 -2의 AFI 2 바이트는 응용 분야별 ID이며,  읽기장치에서 태그로 나가는 목록읽기 명령의 AFI 플랙이 세트되면 AFI를 사용한다.  블록 -2의 마지막 바이트 1개는 자료저장 포맷 ID인 DSFID 이다.
.
◎ 블록 -1은 쓰기 조건(Write Access Coditions) 4 바이트이다.
 

 
쓰기 조건 블록은 사용자 블록 28개 중에서 1개를 정의한다. 이들 비트들은 잠금명령으로 1로 세트되면, 0 으로 안 돌아간다. 사용자 데이터 블록 0~27 중에서 한번 잠겨진 블록은 다시 쓸 수 없도록 보호된다. 사용자가 별도의 일련번호를 넣을 수 있다. 태그는 쓰는 중에 안테나의 작동 영역을 벗어 나면 안된다. (태그를 안테나에 넣고 쓰기작동 중에는 빼지 않는 것을 추천한다)
.
◎ 응용분야 ID인 AFI 는 다음과 같다. (Application family identifier)
응용분야 ID는 읽기장치에서 적용하려는(trageted) 응용의 종류(type)를 표시(represent)한다. 그리고 주어진 모든 태그로 부터 추출된다. 응용분야 ID인 AFI 의 상위 니블(4 비트)는 하나의 특정한 코드를 사용한다. 하위 니블(4 비트)은 하위분류(Sub-family)를 나타낸다. 

00 = 모든 응용분야를 나타내며, 응용목적이 선택되지 않음
X0 = 응용분야만 선택되고 모든 하위분류를 포함하는 넓은 응용목적으로 선택  
XY = 응용분야와 하위분류가 모두 선택됨
0Y = 하위분류만 선택됨 

1? = 교통 카드 (교통)
2? = 선불 카드 (경제)
3? = 신분증, 회원증 (증명)
4? = 전화 카드 (통신)
5? = 의료환자 카드 (의료)
6? = 인터넷 카드 (인터넷)
7? = 게임 카드 (게임)
8? = 저장 매체 (인증서 등)
9? = 물류 태그 (상품)
A? = 택배 태그 (소포)
B? = 우편 태그 (우편)
C? = 항공화물 태그 (항공)
D? = 미정
E? = 미정
F? = 미정 

AFI는 AFI 플랙이 세트 되어도 태그에서 지원하지 않는다. 어쨋든 AFI는 읽기장치의 요청 단계에서 지원되지 않는다. 만일 AFI가 태그에서 지원된다면, 위에서 살명된 일치하는 방식(matching rule)에 따라서 응답될 것이다. 읽기장치의 목록요청(inventory request)의 AFI 플랙이 세트되고, 태그가 AFI를 지원하고, AFI 코드가 맞으면 응답한다. 
  
  
◎ DSFID
데이터 저장포맷 ID (Data storage format identifier)는 태그의 메모리 구조를 나타낸다  
1 바이트의 고유 명령으로 프로그램되고 잠길(locked) 것이다. 데이터의 논리적인 구조를 직접 인식하기 위해  허용된다.  만일 태그에서 DSFID 프로그래밍을 지원하지 않으면, 태그는 값 0로 응답할 것이다. 

◎ CRC
CRC는 ISO/IEC 13239 에서 정의되었으며, FFFF로 초기화 되고, 하나의 응답이나 요청에서 EOF 직전에 전송되고, SOF 다음의 데이터 부터 CRC 자신을 제외한 모든 데이터를 계산한다. CRC16 이라고 한다. CRC는 2 바이트로 하위바이트 부터 전송된다. 하나의 바이트에서는 최하위 비트부터 전송된다. 그러나, RC632, EM4094, TRH031M 등에서는 자동으로 CRC값이 초기화 되고, 자동으로 송수신되고, 비교되므로 CRC를 특별히 계산하거나 검사할 필요는 없으며, 간단히 RX Error와 CRC Error 플랙을 동시에 확인하면 된다. 

◎  블록 암호 상태 (Block security status)
블록 암호 상태는  1 바이트로 코딩된다. 프로토콜에서 하나의 부품이다. 이것은 맹목적인 가정이 아니다. 이 8 비트들은 태그에서 물리적인 메모리의 구조에서 실질적으로 실행된다. 요청이나 응답에서 이것이 주어졌을 때, 태그는 아래와 같이 지원된 비트에 따라서 번역(요청을) 혹은 세트(응답에서)될 것이다. 비트 2 ~ 비트 8  = 예약, 비트 1 = 잠금 비트 상태 (1 =잠겼음, 0 = 열렸음)

◎ 프로토콜 개요
송신 프로토콜은 읽기장치와 태그 사이에서 교환되는 명령의 구조로 정의된다.
두개의 방향 중에서, 읽기장치의 송신이 우선하는 구성을 기본으로 한다.
어떤 태그도 읽기장치로 부터 송신된 명령으로 미리 수신되거나 디코드 되지 않으면, 송신을 하지 않는다.
- 읽기장치에서 태그로 요청 (request)
- 태그에서 읽기장치로 응답 (response)
하나의 요청과 하나의 응답은 프레임을 동반한다. 프레임은 SOF, EOF로 정의 된다.
.
하나의 요청은 다음의 필드가 수반된다.
- SOF은 읽기장치 IC 에서 자동으로 송신된다. (MPU에서 SOF 코드를 FIFO에 전송할 필요가 없다)
- Flags는 태그의 작동 모드를 결정하는 태그의 물리층(속도, 포맷 등)을 설정하는 명령이다.
- Command 는 태그로 나가는 명령으로 실지 태그의 작동을 지시한다.
- Mandatory와 옵션 매개변수(parameter) 들은 명령에 따라 달라진다.
- Application data fields는 명령에 따라서, 데이터가 필요할 때 추가되는 필드이다.
- CRC는 처리는 읽기장치 IC에서 대부분 지원되며, 설정-연산-송신 및 설정-수신-오류검사가 이루어 진다.
   (참고로 ISO 14443A는 초기값이 6363이나, ISO 15693은 초기값이 FFFF이다.)
- EOF은 읽기장치 IC에서 자동으로 송신된다. (MPU에서 EOF 코드를 FIFO에 전송할 필요가 없다)
.
하나의 응답은 다음의 필드가 수반된다. (이하 송신과 같다)
- SOF (UART의 시작비트와 같이, 수신된 데이터에 포함되지 않는다)
- Flags (태그에서 수신처리된 상태를 나타낸다)
- Mandatory와 옵션 매개변수 필드. (명령에 따라서 다르다)
- Application data fields (명령에 따라서 다르다)
- CRC (IC 에  따라서 포함되거나 포함되지 않는다, (수신된 Length of FIFO 값도 2바이트 차이가 있다)
- EOF (UART의 정지비트와 같이, 수신된 데이터에 포함되지 않는다)
.
프레임은 비트 기반이다. 8 비트를 묶음으로 정수배의 바이트로 구성된다. 하나의 바이트 필드는 최하위 비트가 우선이다.  여러개의 바이트가 송신될 때는 촤하위 바이트가 우선이다. 하나의 바이트 송신에서 최하위 비트가 우선이다. 옵션 필드에 포시된 플랙의 세트는, 플랙이 1로 세트되었을 때, 필드가 제공된다. 플랙이 0으로 리셋되었을 때, 필드는 없는 것이다. 예약된 비트는 0 이 되어야 한다.

◎ 태그의 데이터 요청에는 다음 3가지의 Mode가 있다.
- Addressed mode : (주소 모드) 주소플랙이 1로 세트되면, 태그의 주소에 UID를 포함해야 한다.
어떠한 태그도 주소 플랙이 세트된 요청이 수신되면, 수신된 UID를 비교할 것이다.
.
- Non-addressed mode : (명령 모드) 주소플랙이 0으로 되면, 요청에는 UID를 포함하지 않는다.
태그는 읽기장치로 부터의 요청에 주소플랙이 없으면, 명령을 해독해서 실행하고 읽기장치로 응답을 되돌린다.
.
- Select mode (선택 모드) 선택 플랙이 1로 세트되면,  요청은 태그의 ID를 포함하지 않는다. 선택 플랙이 1로 세트된 요청을 수신하여 선택된 상태의 태그는 그것을 실행할 것이다. 선택 플랙이 1로 세트된 요청을 가진 선택된 상태의 태그만이 응답하고, 명령을 해석한 응답을 읽기장치로 되돌릴 것이다.
.
Flags 필드는 태그의 작동 모드를 지정한다. (태그의 물리층 인터페이스를 설정한다)
  

목록 플랙 (Inventory_flag) 이 0 이면, 비트5 ~ 비트8 은 다음과 같다 (비트 8은 예약 비트)
 
 
목록 플랙 (Inventory_flag) 이 1 이면, 비트5 ~ 비트8 은 다음과 같다 (비트 8은 예약 비트)
 
 
읽기장치에서 ISO 15693 태그로 나가는 목록읽기 요청은 다음과 같다. 플랙 상위는 RFU =0, 옵션 =0, Slot =1, AFI =1 으로 설정하면 0011  플랙 하위는 확장 =0, 목록읽기 =1, 고속전송 =1, 부반송파 =0 으로 설정하면 0110
태그로 나가는 플랙의 값은 상위 0011과 하위 0110을 더하면 0x36 으로 된다.
.
◎ ISO15693 태그의 명령은 다음과 같다.
 
 
◎ 목록읽기 명령 (Inventory Read =0x01)
 

명령은 다음의 필드를 포함한다. 이 명령을 받은 태그는 충돌방지 알고리즘을 실행할 것이다.
(이름이 충돌방지이지 읽기장치의 명령으로 태그는 일방적인 알고리즘으로 무조건 응답을 한다는 것이다)
· flags, <- 목록 플랙은 1로 세트해야 한다 (0x36)
· Inventory command code 목록읽기 명령 (0x01)
· AFI 플랙이 1로 세트되었다면 AFI 필드이다 (0x00)
· mask length 마스크 길이 (0x04) <- 2차 충돌방지 요청은 0x08
· mask value 마스크 값 (0x00~0x0F)  <- 이값은 여러개의 태그 중에서 Slot 번호 0~15를 사용하여 순서대로 호출한다
· CRC (순환오류점검 2 바이트는 대부분의 읽기장치 IC에서 자동으로 송신된다)
목록읽기 요청은 위와 같은 프레임을 Mask Vlaue가 0~15로 변화시켜 16 번 호출하여 응답하는 태그를 읽어 온다.
(여러개의 태그를 적은 고주파 전력으로 구동하고, 순서대로 호출해서 가급적 충돌없이 읽어오는 방법이다,
같은 Slot 번호의 태그가 동시에 안테나에 접근되면 충돌한다, 그러나 Slot 번호가 다른 태그는 충돌하지 않는다)
.
목록읽기 명령에 대한 응답 프레임은 다음과 같다.
 
· Flag 1 바이트 <- 00 이 들어 오면 오류가 없는 것이다.
· DSFID 1 바이트 <- 00 이 들어 오면 DSFID를 지원하지 않는 태그이다.
· UID 8 바이트 <- 일기전용 8 바이트로 역순으로 들어 온다. E0 04 01은 종류에 따라 변함이 없다.
· CRC 2 바이트 <- 역순으로 들어 온다. (읽을 필요는 없고, 단순히 모니터 하는 기능이다)
.
목록 읽기 요청으로 읽혀지는 FLAG, DSFID, UID, CRC는 12 바이트이며 6.8~7 ms 정도가 소요된다.
UID가 수신되면, 먼저 Flag가 00 인지, DSFID가 자기가 원하는 태그인지를 점검하고 이상이 없으면,
마지막 단계에서, 역순으로 들어온 UID는 순서를 뒤집어서 UART로 송신해야 올바른 UID가 전송된다.
 
 
◎ 읽기장치의 명령에 응답하는 태그의 모든 응답 포맷(Response format)은 다음과 같다

 
 
- SOF (코드를 수신하지만, 데이터에는 포함하지 않는다)
- 응답 플랙 (Response flags)
- 1개 혹은 이상의 매개변수(parameter) (예 : DSFID)
- 데이터 (Data) (예 : UID)
- 순환오류점검 (CRC)
- EOF (코드를 수신하지만, 데이터에는 포함하지 않는다)
.
응답 플랙 (Response flags)
Bit 1 Error_flag
0 = 오류 없음
1 = 오류가 검출됨. 오류 번호는 "Error" 필드를 보라.
.
Bit 2 예약 비트 (RFU)
Bit 3 예약 비트 (RFU)
.
Bit 4 Extension_flag
0 = 포맷의 확장이 없음
1 = 프로토콜이 확장됨
.
응답 오류 (Response error code)
0x01 = 명령을 지원 안함
0x02 = 명령이 인정 안됨
0x0F = 모르는 오류
0x10 = 특정 블록이 없음
0x11 = 특정 블록이 이미 잠김
0x12 = 특정 블록이 이미 잠김, 내용이 바꾸지 않음
0x13 = 특정 블록이 완전하게 프로그램이 안됨
0x14 = 특정 블록이 완전하게 잠기지 않음
0xA0 - 0xDF = 옵션 명령의 오류
.
◎ 태그의 상태 (VICC states)는 4개가 있다
- Power-off 는 읽기장치에서 인식되지 않음
- Ready 는 읽기장치에서 인식됨, 선택되지 않은 태그는 어떤 요청으로도 작동할 것이다.
- Quiet 는 주소플랙이 세트된 선택 명령으로만 작동되며, 그외에 태그는 어떤 요청도 작동하지 않을 것이다. 
- Selected 상태에서, 태그는 오직 선택 플랙을 세트한 요청에만 응답한다.
.
태그의 상태는 다음과 같다. (주소플랙이 세트된 명령은 UID를 포함해야 한다)
 

어떤 상태에서든 태그를 안테나에서 멀리(cut-off) 하면 태그는 Power-off 상태로 이동된다.
Power-off 된 태그는 안테나 작동영역으로 들어오면 어떤 처리없이도 Ready 상태로 된다.
Reday 상태의 태그는 주소플랙에 관계없이 읽기장치로 부터 송신되는 모든 명령을 실행한다.
.
RFID 태그의 읽기장치는 태그의 읽기를 실패하는 경우가 있으므로, 태그를 읽기 전에 다음의 절차로 읽는 것이 좋다. IC 초기화 -> 고주파 전력 끄기 -> 5ms 지연 -> 고주파 전력 켜기 -> 5ms 지연 -> 목록읽기 요청 (충돌방지 수순으로) -> 7.8ms 지연 -> 수신 바이트 수 점검(12 바이트) -> FLAG 오류점검 -> DSFID 점검 -> UID 점검 (모두 00이면 오류) -> UID 출력 및 표시 -> Select 명령(UID 포함) -> 선택시간 지연 -> 읽기/쓰기 처리 (블록 단위) -> 읽기루틴 끝(결과 전송) -> 처음으로 돌아간다
.
◎ 충돌방지 (Anticollision).
충돌방지 수순의 용도는 읽기장치의 영역안에 있는 태그의 UID 목록을 만든다. 읽기장치는 여러 태그들과 통신하는 중심이다. 이것은 목록 요청에 의한 태그 통신의 시작이다. 태그는 다음의 알고리즘에 따라서 결정된 순위(Slot)로 응답하거나 응답이 없을 것 이다.
.
목록요청(충돌방지)의 매개변수 : 목록 읽기 명령이 발행될 때 읽기장치는 다음을 할 것이다.
· Nb_slots_flag(순위 값)를 결정하고 설정한다 <- 1 혹은 16을 결정해서 송신할 Flag를 설정한다.
· 명령 필드 (0x36, 0x01, 0x00)의 다음에 송신하는 마스크 길이(mask length)와 마스크값(mask value)을 추가한다.
· 마스크 길이는 마스크 값의 상위 바이트이다. <- 0x04 (충돌방지 수순1) 혹은 0x08 (충돌방지 수순 2)
· 마스크 값은 한 바이트의 정수를 포함한다.  <- 0x00 ~ 0x0F (0 ~ 15의 순위 번호이다)
.
마스크 길이는 상위 비트의 수를 표시한다. 최 하위 부터 송신될 것이다. 만일 마스크 길이가 8 비트의 배수가 아니면,
마스크 값 MSB는 마스크 값에서 바이트의 정수에 포함된 요구갯수의 0으로 채워(Padded) 질 것이다.
.
아래 그림은 목록 명령의 구조(format)이다.
 

 
마스크 길이의 마스크 채우기(Padding) <- 좌측 4 비트가 0으로 채워진 4개 비트를 나타낸다.  
 
 
 
마스크 길이와 마스크 값은 결국 최소 2 바이트이다. 여기서 상위인 마스크 길이는 4비트가 0으로 채워진 Pad 값이고, 위 그림에서 마스크 길이의 하위 4비트는 마스크 값의 상위이다. <- 결국 마스크 값의 상위인 마스크 길이는 0x04 이다. 예를 들면 위 그림에서 마스크 길이는 12 비트이다. 마스크 값의 상위 4개의 비트는 0으로 채워진다.
AFI 필드는 AFI_flag가 세트되면 채워진다. 펄스는 ISO 15693-2 안의 정의에 따라서 EOF 까지 발생될 것이다.
첫번째 순위는 요청한 EOF의 수신후에 바로 시작된다. 다음 순위로 전환하면 읽기장치는 OEF을 전송한다. 

다음의 규칙에 따른다, 제한이 추가된다. 만일 응답하는 태그가 없으면, 읽기장치는 다음 slot 으로 전환하고 EOF을 송신한다. 만일 태그의 응답이 수신되면, 다음 slot으로 전환하는 EOF을 전송하기 전에, 태그의 프레임이 완전히 수신될 때 까지 기다린다.

◎ 읽기장치의 충돌방지 처리 수순
(ISO/IEC FCD 15693-3에서 권고한 알고리즘으로 작성된 루틴입니다)
void pol_loop(int sub_adrs_size)  // 주소 길이 sub_adrs_size는 반드시 4 비트 이어야 한다. (2^4  =16)
{
  mask = 0;                            // 초기 마스크 값을 0으로 저장 한다
  address = 0;                        // 초기 주소를 0 으로 저장 한다      
  for (i =0, i<sub_adrs_size; i++) // sub_adrs_size가 0x04 이면 16이 생성된다 (2^4 이다)
  {
    max_adrs =max_adrs +2;     // 2^ N (N 은 sub_adrs_size 이다)    
  }
.
  for (i = 0; i < max_adrs; i++) // adrs는 slot 번호 0~15 까지 이다. (max_adrs는 정수 16을 사용해도 된다)
  {
    while(1)                              // 충돌방지 알고리즘은 16 slot을 처리한다
    {
      mask = mask & address;        // 주소와 마스크 값으로 새로운 마스크 값을 생성한다( 초기값은 모두 0 이다)
      mode = anticollision;             // 모드 플랙을 충돌방지 상태로 설정
.
      pulse_next_pause();            // 통신이 없는 휴지시간으로 태그에 전력을 공급한다 (송신 전에 태그에 휴지시간을 준다)
      send_Request(UID, mode, mask length, mask[0])    // UID는 현재 까지 수신된 UID의 일부이다, 목록 요청을 송신한다
      delay_response_time();       // 태그가 수신하고 응답하는 시간을 대기한다.
.     
      col =collision_detected();    // 태그의 응답을 수신
      if (col ==0)                    // 현재 충돌이 없는지?
      {
        store(UID);                   // 태그의 목록이 수신 되었다, 정상 수신된 태그의 UID를 모두 저장한다
      }
      else                             // 만일 충돌이 있으면
      {
        col = 1;                       // 충돌 플래그를 세트하고
        collision_was_detected(); // mask와 address를 저장 한다
      }
    if (col ==0) return;             // 충돌이 없었다면 충돌방지 루틴을 나간다.
    }                                   // 직전에 충돌이 있었다면 계속 충돌방지 루프를 돈다
  }                                     // for ...next sub_address 16번 반복  
}
.
◎ 계속 작업중,,,
.
참조 : ISO/IEC FCD 15693-3  Part 3: Anti-collision and transmission protocol
이 자료의 무단 복제, 배포 및 사이트 링크없는 무단게시를 일절 금합니다.
 
AVRTOOLS™
   
이름아이콘 임기완
2007-03-16 10:47
 좋은 자료네요~ 배우고 갑니다.
   
이름아이콘 오형택
2007-04-24 19:30
 좋은자료 감사합니다.
   
이름아이콘 서영용
2007-04-30 10:44
 열심히 배우고있습니다. 감사합니다.
   
이름아이콘 조창근
2007-05-22 12:37
 저도 전자공학을 공부하는 학생인데...
이토록 모르는게 많았다니...
대단하십니다
존경해용^^
   
이름아이콘 김국세
2007-09-18 00:24
 넘 좋은 자료 입니다.
공부 많이 하고 갑니다.
난 언제 이렇게 되나?
   
 
윗글 ATmega8을 사용한 EM4095 RFID Reader의 제작
아래글 AVR 프로그래머 AVR910-ISP 제작
    N         제목    글쓴이 작성일 조회 추천
14 가변-정전압,정전류-직류전원의 제작 avrtools™ 2011/08/08 (월) 279 0
13 전력제어기기는 USB 포트를 절연하자 avrtools™ 2011/07/03 (일) 216 0
12 Arduino IDE에서 AVRISP-mkII 사용방법 avrtools™ 2010/10/22 (금) 220 0
11 AVR studio용 USBasp to AVR-ISP 제작 avrtools™ 2009/10/22 (목) 350 0
10 ATmega8 AVRISP-mkII의 제작 avrtools™ 2009/09/30 (수) 473 0
9 VGA CAM C328R 카메라 모듈의 제작 avrtools™ 2009/08/12 (수) 248 0
8 ODB-II 엔진 스캐너 PC 인터페이스 제작 avrtools™ 2008/10/04 (토) 534 0
7 Mega8 칼라센서 TCS230 색상인식 장치 leeky 2006/03/07 (화) 891 3
6 74HC595를 사용한 소형 8x24 LED 전광판의 제어 [3] leeky 2006/05/02 (화) 1394 3
5 ATmega8을 사용한 EM4095 RFID Reader의 제작 [1] leeky 2007/02/04 (일) 797 0
4 13.56MHz ISO-15693 RFID 태그 읽기장치 제작 [5] leeky 2007/03/15 (목) 697 0
3 AVR 프로그래머 AVR910-ISP 제작 [1] leeky 2006/08/06 (일) 1164 0
2 USB AVR-ISP의 제작과 펌웨어 Upgrade leeky 2006/03/07 (화) 1388 8
1 JTAG ICE의 제작과 펌웨어 업그레이드 leeky 2006/03/07 (화) 1068 3
1

바구니 : 0
 보관함 : 0
오늘뷰 : 0
HOME   |   회사소개   |   제휴안내   |   회사위치   |   서비스이용 약관   |   개인정보 보호정책   |   사이트맵
17015 경기도 용인시 기흥구 동백중앙로16번길 16-25, 508호. 전화 : 031-282-3310
사업자 등록번호 : 697-47-00075 / 대표 : 이건영 / 업태 : 제조업 / 종목 : LED조명, LED전원, 제어장치.
개인정보 관리책임자 : 홈페이지 관리자 . Copyright ⓒ2016 아크레즈 (ACLEDS INC.)
HOME TOP PREVNEXT 0 0 0