TransCore 76007 FHSS TRANSCEIVER MODULE User Manual M6e Transcore Developer s Guide
TransCore FHSS TRANSCEIVER MODULE M6e Transcore Developer s Guide
Contents
Users Manual
875-0034-02 Rev1 Mercury®6e - Transcore Developer’s Guide Government Limited Rights Notice: All documentation and manuals were developed at private expense and no part of it was developed using Government funds. The U.S. Government’s rights to use, modify, reproduce, release, perform, display, or disclose the technical data contained herein are restricted by paragraph (b)(3) of the Rights in Technical Data — Noncommercial Items clause (DFARS 252.227-7013(b)(3)), as amended from time-to-time. Any reproduction of technical data or portions thereof marked with this legend must also reporduce the markings. Any person, other than the U.S. Government, who has been provided access to such data must promptly notify ThingMagic, Inc. ThingMagic, Mercury, Reads Any Tag, and the ThingMagic logo are trademarks or registered trademarks of ThingMagic, Inc. Other product names mentioned herein may be trademarks or registered trademarks of ThingMagic, Inc. or other companies. © Copyright 2000–2009 ThingMagic, Inc. All Rights Reserved ThingMagic, Inc. One Broadway, 5th floor Cambridge, MA 02142 866-833-4069 Revision 1 August, 2009 Contents Introduction to the Mercury6e-Transcore Module . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 Hardware Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 Microcontroller 14 RFID ASIC 14 Connectors 14 M6e-TC Digital Connectors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Firmware Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Boot Loader. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Application Firmware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16 Verifying Application FW Image CRC 16 Functionality of the Embedded Modules . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 Regional Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 Frequency Setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Frequency Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 Frequency Hop Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 Frequency Hop Interval. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 RF Power Setting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Power Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 Power Calibration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 TX Read Power . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 TX Write Power. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Power Amplifier Protection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Antenna Ports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Monostatic Mode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 Power Management. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Power Modes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Tag Buffer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 Flash Memory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 Accessing the Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Upgrading Application FW. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 Serial and USB Interfaces . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Installing the USB Driver . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 Windows 26 General Purpose Inputs/Outputs (GPIO) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 Default Settings . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28 Overview of the Communication Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29 Host-to-Reader Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 Reader-to-Host Communication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 CCITT CRC-16 Calculation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 Format for Microprocessor Reply to Host . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Microprocessor ACK Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Microprocessor Fault Reply Message. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Microprocessor Data Reply Message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 Command Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .37 Boot Loader Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 Flash Read Sector (02h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Get Boot Loader/Firmware Version (03h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Responses 40 Returned Hardware Version Table 40 Boot Firmware (04h). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Set Baud Rate (06h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Erase Flash Sector (07h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Verify Image CRC (08h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Start Bootloader (09h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Get Current Program (0Ch). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Write Flash Sector (0Dh) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44 Loading an Application Image 44 Get Sector Size (0Eh) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Modify Flash Sector (0Fh) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45 Multi-Protocol Tag Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Get Tag Buffer (29h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 Get Tags Remaining 47 Get Tag EPCs 48 Get Tag EPCs and Metadata 50 Clear Tag Buffer (2Ah) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Multi-Protocol Tag Read (2Fh) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 Allegro/Title-21 Tag Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58 Read Tag ID Single (21h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 Write Request (24h; A003h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 Title-21 ACK Request (24h; C000h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 General ACK Request (24h; F00Fh) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64 Title-21 Read Request (28h; 8000h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 Read Request (28h; C003h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 Random Number Request (28h; D001h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 TDMA Read Request (28h; E003h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70 Jump to Reset Request (2Ch; D203h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71 eGo/SeGo Tag Command Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73 Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 Group Select Options 74 Read Tag ID Single (21h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 Read Tag ID Multiple (22h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 Standard Syntax 77 Minimal Syntax 79 Write Tag Data (24h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 Lock Tag Data (25h). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 Read Tag Data (28h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85 Custom Tag Operations (2Dh) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 ATA Tag Command Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91 Command Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92 Read Tag ID Single (21h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93 Read Tag ID Multiple (22h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 Gen2 Tag Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95 Tag Singulation/Select Functionality. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 Select Algorithm and Parameters 96 Select Process 97 Flag Persistence Rules 98 Operations supporting Tag Singulation/Select 99 Read Tag Single (21h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 Get Tag EPC 101 Get Tag EPC and Meta Data 102 Read Tag Multiple (22h). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106 Basic Tag Inventory 107 Tag Inventory with Select 109 Tag Inventory With Embedded Operations 110 Write Tag EPC (23h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 Write Tag Data (24h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 Lock Tag (25h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116 Kill Tag (26h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 Read Tag Data (28h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118 Get Tag Data 120 Get Tag Data and Meta Data 120 Get Tag Buffer (29h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Clear Tag Buffer (2Ah) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Gen2 Tag Specific (2Dh). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123 Alien Higgs Silicon (Chip Type=0x01) 123 NXP Silicon (Chip Type=0x02) 127 Erase Block Tag Specific (2Eh). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132 Get Configuration Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .133 Get Hardware Version (10h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134 Get Antenna Configuration (61h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135 Get Read TX Power (62h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Get Current Tag Protocol (63h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 Get Write TX Power (64h). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Get Frequency Hop Table (65h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 Get User GPIO Inputs (66h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Get Current Region (67h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139 Get Power Mode (68h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140 Get User Mode (69h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 Get Reader Configuration(6Ah) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Get Protocol Configuration (6Bh) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142 Get Reader Statistics (6Ch) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143 Get Available Protocols (70h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Get Available Regions (71h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 Get Current Temperature (72h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147 Set Configuration Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .148 Set Antenna Port (91h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Set Read TX Power (92h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 Set Current Tag Protocol (93h). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Set Write TX Power (94h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Set Frequency Hop Table (95h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150 Set User GPIO Outputs (96h). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 Set Current Region (97h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 Set Power Mode (98h). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Set User Mode (99h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Set Reader Configuration(9Ah) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153 Set Protocol Configuration (9Bh) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 Set Gen2 Session 155 Set Q Value 156 FCC Test Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .157 Set Operating Frequency (C1h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Transmit CW Signal (C3h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 Get Operating Frequency (C8h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159 Appendix A: Hardware Details. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 Mechanicals . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .161 Antenna Connector. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162 Communications Connector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 Connectors 163 Appendix B: Using the ArbSer Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165 Reading a Tag . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166 Get Version Command 167 Boot Firmware Command 168 Set Current Region Command 170 Set Current Tag Protocol Command 171 Set Read TX Power Command 171 Set Antenna Port Command 171 Unexpected Results . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 Serial Communication Does Not Work 174 Commands Return a Non-Zero Status Code 174 No Tag ID is Returned 175 Appendix C: Error Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Common Error Messages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .177 FAULT_MSG_WRONG_NUMBER_OF_DATA – (100h). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Cause 177 Solution 178 FAULT_INVALID_OPCODE – (101h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Cause 178 Solution 178 FAULT_UNIMPLEMENTED_OPCODE – 102h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Cause 178 Solution 178 FAULT_MSG_POWER_TOO_HIGH – 103h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 Cause 178 Solution 179 FAULT_MSG_INVALID_FREQ_RECEIVED (104h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Cause 179 Solution 179 FAULT_MSG_INVALID_PARAMETER_VALUE - (105h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Cause 179 Solution 179 FAULT_MSG_POWER_TOO_LOW - (106h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 Cause 179 Solution 180 FAULT_UNIMPLEMENTED_FEATURE - (109h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Cause 180 Solution 180 FAULT_INVALID_BAUD_RATE - (10Ah) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 Cause 180 Solution 180 Bootloader Faults. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .181 FAULT_BL_INVALID_IMAGE_CRC – 200h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Cause 181 Solution 181 FAULT_BL_INVALID_APP_END_ADDR – 201h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 181 Cause 181 Solution 181 FPGA Faults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .182 FAULT_PROGRAM_ERASE_FAILED – 2E0h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Cause 182 Solution 182 FAULT_PROGRAM_FAILED – 2E1h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182 Cause 182 Solution 182 FAULT_PROGRAM_VERIFY_FAILED – 2E2h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Cause 183 Solution 183 FAULT_PROGRAM_OPERATION_FAILED – 2E3h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Cause 183 Solution 183 FAULT_PROGRAM_NOT_LOADED – 2E4h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 Cause 183 Solution 183 Flash Faults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .184 FAULT_FLASH_BAD_ERASE_PASSWORD – 300h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Cause 184 Solution 184 FAULT_FLASH_BAD_WRITE_PASSWORD – 301h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 Cause 184 Solution 185 FAULT_FLASH_UNDEFINED_ERROR – 302h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Cause 185 Solution 185 FAULT_FLASH_ILLEGAL_SECTOR – 303h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Cause 185 Solution 185 FAULT_FLASH_WRITE_TO_NON_ERASED_AREA – 304h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185 Cause 185 Solution 185 FAULT_FLASH_WRITE_TO_ILLEGAL_SECTOR – 305h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Cause 186 Solution 186 FAULT_FLASH_VERIFY_FAILED – 306h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 Cause 186 Solution 186 Protocol Faults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .187 FAULT_NO_TAGS_FOUND – (400h) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 Cause 188 Solution 188 FAULT_NO_PROTOCOL_DEFINED – 401h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 Cause 188 Solution 188 FAULT_INVALID_PROTOCOL_SPECIFIED – 402h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 Cause 188 Solution 189 FAULT_WRITE_PASSED_LOCK_FAILED – 403h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Cause 189 Solution 189 FAULT_PROTOCOL_NO_DATA_READ – 404h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Cause 189 Solution 189 FAULT_AFE_NOT_ON – 405h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 Cause 189 Solution 189 FAULT_PROTOCOL_WRITE_FAILED – 406h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Cause 190 Solution 190 FAULT_NOT_IMPLEMENTED_FOR_THIS_PROTOCOL – 407h . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Cause 190 Solution 190 FAULT_PROTOCOL_INVALID_WRITE_DATA – 408h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Cause 190 Solution 190 FAULT_PROTOCOL_INVALID_ADDRESS – 409h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190 Cause 190 Solution 191 FAULT_GENERAL_TAG_ERROR – 40Ah . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Cause 191 Solution 191 FAULT_DATA_TOO_LARGE – 40Bh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Cause 191 Solution 191 FAULT_PROTOCOL_INVALID_KILL_PASSWORD – 40Ch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191 Cause 191 Solution 191 FAULT_PROTOCOL_KILL_FAILED - 40Eh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Cause 192 Solution 192 FAULT_PROTOCOL_BIT_DECODING_FAILED - 40Fh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Cause 192 Solution 192 FAULT_PROTOCOL_INVALID_EPC – 410h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Cause 192 Solution 192 FAULT_PROTOCOL_INVALID_NUM_DATA – 411h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 Cause 192 Solution 193 FAULT_GEN2 PROTOCOL_OTHER_ERROR - 420h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 FAULT_GEN2_PROTOCOL_MEMORY_OVERRUN_BAD_PC - 423h. . . . . . . . . . . . . . . . . . . . . . . . 193 FAULT_GEN2 PROTOCOL_MEMORY_LOCKED - 424h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 FAULT_GEN2 PROTOCOL_INSUFFICIENT_POWER - 42Bh. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 10 FAULT_GEN2 PROTOCOL_NON_SPECIFIC_ERROR - 42Fh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 FAULT_GEN2 PROTOCOL_UNKNOWN_ERROR - 430h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193 Analog Hardware Abstraction Layer Faults. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .194 FAULT_AHAL_INVALID_FREQ – 500h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Cause 194 Solution 194 FAULT_AHAL_INVALID_FREQ – 501h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Cause 194 Solution 194 FAULT_AHAL_TRANSMITTER_ON – 502h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 Cause 194 Solution 194 FAULT_ANTENNA_NOT_CONNECTED – 503h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Cause 195 Solution 195 FAULT_TEMPERATURE_EXCEED_LIMITS – 504h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Cause 195 Solution 195 FAULT_LOW_RETURN_LOSS – 505h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 Cause 195 Solution 195 Tag ID Buffer Faults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .196 FAULT_TAG_ID_BUFFER_NOT_ENOUGH_TAGS_AVAILABLE – 600h . . . . . . . . . . . . . . . . . . . . . . 196 Cause 196 Solution 196 FAULT_TAG_ID_BUFFER_FULL – 601h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196 Cause 196 Solution 196 FAULT_TAG_ID_BUFFER_REPEATED_TAG_ID – 602h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Cause 197 Solution 197 FAULT_TAG_ID_BUFFER_NUM_TAG_TOO_LARGE – 603h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Cause 197 Solution 197 System Errors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .198 FAULT_SYSTEM_UNKNOWN_ERROR – 7F00h . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Cause 198 Solution 198 FAULT_TM_ASSERT_FAILED – 7F01h. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198 Cause 198 11 Solution 198 Appendix D: FPGA Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 Creating an FPGA Image DAT File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .199 Loading an FPGA Image. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .203 12 Introduction to the Mercury6eTranscore Module The ThingMagic® Mercury®6e embedded module is an RFID engine that you can integrate with other systems to create RFID-enabled products which support the custom Transcore tag protocols: eGo, SeGo, ATA and Allegro/Title-21. The Arbser utility provides an easy to use command line interface to configure the reader, read from and write tags, and demonstrate the modules capabilities. ArbSer can issue the Command Set that is detailed in this document in thier hex format. For information about the ArbSer application, see Appendix B: Using the ArbSer Application. This document is for developers and explains how to incorporate the Mercury6eTranscore (M6e-TC) into a third-party host system. Hardware Overview The M6e-TC module is based on the Mercury5e (M5e) embedded module, designed to be incorporated into products requiring powerful RFID capabilities in a small form factor. The following table shows the basic features of the M6e-TC hardware: Introduction to the Mercury6e-Transcore Module 13 Hardware Overview Features of the M6e-TC Hardware Item M6e-TC Processor Atmel AT91SAM7SE-256 Flash memory 256 kB On-chip RAM 32 kB RF Architecture ASIC Intel R2000 with ThingMagic front end for improved sensitivity Input Power Requirements +5VDC Communication Interfaces • High-speed serial interface • USB with auto-detect Protocols supported eGo, SeGo, ATA, Allegro/Title-21, Gen2 Dimensions: (L x D x H) 78 x 63 x 8 mm Regions supported NA, OPEN The M6e-TC is a single board module designed for more space-constrained applications. The digital and analog electronics are on the same circuit board. Microcontroller The M6e-TC uses the Atmel ARM7 microcontroller with 256 kB of on-chip flash memory for storage of all calibration and program data. RFID ASIC All base-band analog circuitry and PLL circuitry are contained within the Impinj R2000 RFID ASIC with ThingMagic front end for improved sensitivity. Connectors The M6e-TC supports one MMCX connectors for a single monostatic antenna. 14 Introduction to the Mercury6e-Transcore Module Firmware Overview M6e-TC Digital Connectors The digital connector provides power, serial communications signals, and access to the GPIO inputs and outputs. The communications interface for the M6e-TC is a 14-pin digital connector. This connector provides power, serial communications signals, including USB support, and access to the GPIO inputs and outputs. See the following table: Pin-out of 14-pin Digital Communications Connector Pin # Signal GND GND GND +5V +5V USB_+5V (Input to M6e-TC) Digital Output 1 Digital Output 2 Digital Input 1 10 Digital Input 2 11 RS-232 RX TTL from host 12 RS-232 TX TTL to host 13 USB_DM 14 USB_DP Firmware Overview The software (SW) for the M6e-TC consists of two separate programs that coexist in flash memory: The boot loader, which is started at power on, is not field upgradable. It is programmed into flash when the module is manufactured. Introduction to the Mercury6e-Transcore Module 15 Firmware Overview The application firmware, which implements the actual reader functionality, is field upgradable. Boot Loader The boot loader provides low-level functionality. This program provides a customer interface for upgrading the application firmware and storing data into flash. When a module is powered up or reset, the boot loader code is automatically copied from sector 0 of flash into the Microprocessor’s on-chip RAM, and executed. The boot loader provides the following features: Ability to read / write / erase flash memory Upgrade application FW Change serial baud rate Verify image CRC Application Firmware The application firmware (FW) is an important software component of the module. It contains the protocol code as well as all the user interfaces to set and get various system parameters. The application FW is started using the Boot Firmware command in the boot loader; it does not start by itself upon power up. Note You can use the Arbser utility to upgrade the reader firmware. Verifying Application FW Image CRC The application FW has an image level Cyclic Redundancy Check (CRC) embedded in it to protect against corrupted firmware during an upgrade process. (If the upgrade is unsuccessful, the CRC will not match the contents in flash.) When the boot loader starts the application FW, it first verifies that the image CRC is correct. If this check fails, then the boot loader does not start the application FW. The upgrade process uses a series of individual 250-byte packet write operations to ensure that an upgrade is successfully completed for the complete image. It also ensures that the application FW in flash was not corrupted accidently, and can be expected to perform properly when executed. 16 Introduction to the Mercury6e-Transcore Module Functionality of the Embedded Modules This section highlights some of the functionality of the modules. The details for using the serial commands to control this functionality are found in Overview of the Communication Protocol. Regional Support The modules have differing levels of support for operation and use under the laws and guidelines of several regions. Note A region must be set before the module will perform any RF operations. The regional support is shown in the following table. Supported Regions Region Regulatory Support M6e-TC North America (NA) FCC 47 CFG Ch. 1 Part 15 Industrie Canada RSS-210 Yes Open Region No regulatory compliance enforced Yes The regional functionality is set using a single serial command, Set Configuration Commands. Setting the Region configures the regional default settings including: Loads the Frequency Hop Table with the appropriate table for the selected region. Sets the PLL frequency to the first entry in the hop table, even if the RF is off. Selects the transmit filter, if applicable. Note The Open Region allows the module to be manually configured within the full capabilities supported by the hardware. No regulatory limits, including: frequency range, channel spacing and transmit power limits, are enforced. The Open Region should be used with caution. Functionality of the Embedded Modules 17 Frequency Setting Frequency Setting The modules have a PLL synthesizer that sets the modulation frequency to the desired value. Whenever the frequency is changed, the module must first power off the modulation, change the frequency, and then turn on the modulation again. Since this can take several milliseconds, it is possible that tags are powered off during a frequency hop. In addition to setting the default regional settings, the modules have commands that allow the transmit frequency to be set manually. Use these commands with extreme caution. It is possible to change the module’s compliance with the regional regulations. Frequency Units All frequencies in the Mercury embedded products are expressed in kHz using unsigned 32-bit integers. For instance, a carrier frequency of 915 MHz is expressed as 915000 kHz. The PLL is set automatically to the closest frequency - based on the minimum frequency quantization for the current region - that matches the specified value. The Mercury embedded modules have an absolute minimum quantization of 50 kHz. Each region also has a minimum quantization based on regulatory specifications, which may be greater. The following table details the frequency quantization in kHz for each region setting. Regional Frequency Quantization Region Frequency Quantization Minimum Frequency Maximum Frequency NA 250 kHz 902,000 kHz 928,000 kHz Open 50 kHz 860,000 kHz 930,000 kHz When manually setting frequencies the module will round down for any value that is not an even multiple of the supported frequency quantization. 18 Functionality of the Embedded Modules Frequency Setting For example: In the NA region, setting a frequency of 902,999 kHz results in a setting of 902,750 kHz. When setting the frequency of the module, any frequencies outside of the valid range for the specified region are rejected. Frequency Hop Table The frequency hop table determines the frequencies used by the modules when transmitting. The hop table characteristics are: Contains up to 62 slots. Valid frequencies for the region currently selected. Changes not stored in flash, thus changes made are not retained after a power cycle or a restart of the boot loader. Inability to change individual entries after uploading without reloading the entire table. Frequencies used in the order of entries in the table. If necessary for a region, the hop table can be randomized to create a pseudo-random sequence of frequencies to use. This is done automatically using the default hop tables provided for each region. Frequency Hop Interval When hopping frequencies the period of time the module will stay on an individual frequency is defined by the Hop Interval. This value is based on the region’s regulatory requirements and indicates the maximum time the reader will stay on a frequency which maybe lower than that allowed by the regulatory requirements.The supported regions and their maximum hop interval is defined in the following table: Maximum Frequency Hop Interval Region Max Hop Interval NA 200 ms Open 400 ms Functionality of the Embedded Modules 19 RF Power Setting RF Power Setting The power setting is calibrated at the factory and parameters are stored in flash memory to ensure the power output is within +/– 1 dB of the desired setting. The power limits are set by both hardware limitations and enforced by the firmware. Power Units All power values are reported in centi-dBm. Therefore, a power setting of 2500 corresponds to 25 dBm. All power values in the serial interface are specified as signed 16-bit integers. A dBm means power referenced to 1mW. Therefore, the conversion from watts to dBm is: dBm = 10 log10(power in mW) For example: 0.1W = 100mW = 20dBm and 1W = 1000mW = 30dBm. Power Calibration A power calibration event occurs when the Power set point is changed, the Frequency is changed, or the RF field is turned on. The power calibration routine calibrates the power within 10 ms. Note Power calibration only occurs once when the RF power is turned on. It does not occur periodically when the RF field is on. This is not an issue during normal operation,= since a frequency hop occurs within the regulatory hop interval (see Maximum Frequency Hop Interval for region specific values) and thermal drift does not affect the power level significantly. However, in CW waveform mode (Transmit CW Signal), no power calibration occurs unless the power or frequency is changed. Thus, it is possible to experience thermal drift in this usage if the unit is left to transmit continuously for a significant period of time. TX Read Power The TX read power is used for all non-write commands to tags. This may include, but is not limited to, commands to read a tag ID and read tag data. 20 Functionality of the Embedded Modules Power Amplifier Protection TX Write Power The TX write power is used only during commands that change a tag’s state. This includes commands for Lock, Kill, as well as Tag ID Write and Tag Data Write. Note During Write commands, which both write to and verify the written contents, the entire operation will be done at the Tx Write Power, including tag singulation and the write verify. Power Amplifier Protection Certain usage scenarios can cause the M6e-TC to operate into very low return loss situations and/or cause a considerable amount of reflected power to feed back into the M6e-TC power amplifier (PA). Under such conditions damage to the M6e-TC power amplifier has been observed due to this reflected power. To avoid damage to the PA in such cases the software protection will shut the transmitter down when these conditions are detected and the module will return the fault code 0x0505FAULT_LOW_RETURN_LOSS – 505h - for the response status code. The PA protection feature is on by default. It can be turned off using the Set Reader Configuration(9Ah) command. W A R N I N G ! ThingMagic does not recommend turning off PA protection under any circumstance. Turning off PA protection greately increases the possibility of hardware damage. Module operation with PA protection off is at the users own risk. Antenna Ports Monostatic Mode The M6e-TC has one antenna port which both transmits and receives. To set up the module to use a single antenna in monostatic mode, connect the antenna to port 1 (labeled J1 on Printed Circuit Board) which is responsible for both TX and RX communication. Functionality of the Embedded Modules 21 Power Management Power Management The modules use different methods and levels of power management. Power Modes The M6e-TC was designed for power efficiency and offers several different power management modes, set using Set Power Mode (98h). The following lists the current modes being offered: Full Power Mode – In this mode, the unit operates at full power to attain the best performance possible. This mode is only intended for use in cases where power consumption is not an issue. This is the default Power Mode at startup. Minimal Saving Mode – This automatically executes basic power savings that do not severely degrade system performance May result in a nominal 1 ms additional delay. Medium Saving Mode – This mode may add up to 50 ms of delay between commands. It performs more aggressive power savings, such as automatically shutting down the analog section between serial commands, and then restarting it whenever a tag command is issued. Maximum Saving Mode – This mode essentially shuts down the digital and analog boards, except to power the bare minimum logic required to wake the processor. It can take up to 150 ms to wake the processor and execute the desired command. Note: In Maximum Saving Mode the USB interface is disabled and the RS232 interface communication speed is limited to 9600 baud. Tag Buffer The Tag buffer stores tags, and their metadata, found using the Read Tag Multiple command. The size of the tag buffer for each module is defined in the following table: 22 Functionality of the Embedded Modules Tag Buffer Tag Buffer Size M6e-TC Tag Buffer Size in Tag ID entries 190 Each tag entry consists of a fixed number of bytes. The size depends on the value set for the Max EPC Length parameter in Set Reader Configuration(9Ah). Each entry consists of the following fields: Tag Buffer Entry Total Entry Size 18 bytes (Max EPC Length = 96bits) 68 bytes (Max EPC Length = 496bits) Field Size Description EPC Length 2 bytes Indicates the actual EPC length of the tag read. Cannot exceed the Max EPC length setting. PC Word 2 bytes Contains the Protocol Control bits for the tag. EPC 12 bytes Contains the tag’s EPC value padded with trailing zeros if the size is less than the Max EPC Length size. Tag CRC 2 bytes The tag’s CRC. EPC Length 2 bytes Indicates the actual EPC length of the tag read. Cannot exceed the Max EPC length setting. Varies by Protocol: • Gen2 = PCWord + EPC ID + CRC • Other = EPC ID + CRC PC Word 2 bytes Contains the Protocol Control bits for the tag. EPC 62 bytes Contains the tag’s EPC value padded with trailing zeros if the size is less than the Max EPC Length size. Tag CRC 2 bytes The tag’s CRC. In addition to the tag EPC data each entry contains meta data about how, where and when the tag was read. When using the Get Tag Buffer (29h) command you can choose to get the following tag meta data returned with each tag extracted from the tag buffer: Functionality of the Embedded Modules 23 Flash Memory Tag Read Meta Data Meta Data Field Description Antenna ID The antenna on with the tag was read. Read Count The number of times the tag was read on [Antenna ID]. Timestamp The time the tag was read, relative to the time the command to read was issued, in milliseconds. If the Tag Read Meta Data is not retrieved from the Tag Buffer between read commands there will be no way to distinguish order of tags read with different read command invocations. Frequency The frequency on which the tag was read RFU Reserved for Future Use - ThingMagic Only LQI/RSSI The receive signal strength of the tag response. Protocol ID The tag’s Protocol ID as defined by the Tag Protocol IDs table Whenever a Tag entry is placed in the buffer, it uses up a single entry with the EPC section containing the maximum EPC length number of bits, regardless of the actual EPC size of the tag read. The extra bits in the entry are padded with trailing zeros. After the Multi-Protocol Tag Read command finishes, it places all of the found tags into the Tag buffer, and then returns the number of tags found to the user. Only unique tags read on each antenna are added to the Tag buffer; none of the entries show repeated Tag EPCs. Repeated reads on an antenna will cause the Read Count field to be incremented for that tag entry. Multiple Get Tag Buffer commands must be sent to read out the Tags. The Tag buffer acts as a First In First Out (FIFO) — the first Tag found by the reader is the first one to be read out. See Get Tag Buffer (29h). The Tag buffer is reset only when the Clear Tag Buffer command is sent. See Clear Tag Buffer (2Ah). This allows multiple Multi-Protocol Tag Read commands to be used to acquire one consistent tag buffer set. Flash Memory The M6e-TC has on-board flash memory. This flash is divided into four different sectors of varying sizes. Table 4 shows the memory map for the M6e-TC. Only sector 0x03 is set aside for user data and the other sectors are used by the application FW. The flash sector utilities simplify the interface providing a means to develop interfaces that work across these platforms. 24 Functionality of the Embedded Modules Flash Memory Flash Memory Sector Mapping Code M6e-TC Start Address M6e-TC Size (bytes) Erase Password Write Password Sector Access BootLoader Read Only 0x01 0x000000 16 kB na na Application Read/Write 0x02 0x00C000 208 kB 0x08959121 0x02254410 User Memory Read/Write 0x03 0x008000 16 kB 0x79138766 0x76346700 Hardware Info Read Only 0x04 0x004000 16 kB na na 0x200000 32 kB Application Data (RAM) Accessing the Flash The flash is accessed only through the boot loader program. Flash is not accessible while the application FW is running. All accesses to flash are in terms of two-byte word addresses and word lengths. Thus, the Write Flash Sector, Read Flash Sector, Erase Flash Sector, and Modify Flash Sector commands all use the same argument types. The maximum amount of flash that can be written or modified at a single time is 125 words, and the maximum amount of flash that can be read at a single time is 124 words. This is a limitation of the serial interface and data packet sizes. Multiple data packets are used to read/write/modify a larger area of flash. When using the Erase Flash Sector or Write Flash Sector commands, the correct password must be provided to complete the operation. This is done to protect against accidentally erasing or writing to the flash. See Boot Loader Commands. Upgrading Application FW The application FW is upgraded in flash. New versions of firmware are released in a .sim binary file format . The .sim binary file format is a compressed file format that stores the data in raw binary. Functionality of the Embedded Modules 25 Serial and USB Interfaces Serial and USB Interfaces The M6e-TC module can communicate to a host processor via the TTL logic level RS-232 serial protocol or via Universal Serial Bus (USB) protocol, both accessed on the 14-pin M6e-TC Digital Connectors. The module does not need to be software configured to operate on one or the other interface, just send data over the interface to use it. However, the following considerations should be made when using one or both interfaces: Once a command is initiated on one interface, the entire synchronous operation (full command and response) must be completed on that interface. Upon completion of an operation a new command can be sent on either interface. If both interfaces are to be used the user is responsible for maintaining order of execution. If commands are sent on both interfaces simultaneously execution order cannot be guaranteed. When setting the baud rate via Set Baud Rate (06h) this changes the communication speed on the RS232 Interface only, whether set using the RS232 interface or USB. The USB speed is not changed. USB communication speed is dictated by the USB protocol and has a maximum bitrate of 12Mbps. When configuring Power Modes, using Maximum Saving Mode (0x03) will shut off the USB interface. If Set Power Mode (98h) is called using the USB interface and mode 0x03 is specified the module will instead be set to Medium Saving Mode (0x02). In order to set the module to mode 0x03 the command must be called using the RS232 interface. Power consumption will increase when the USB interface is connected. A level converter is necessary to interface to other devices that use standard 12V RS232. Only three pins are required for RS232 communication (TX, RX, and GND). Hardware handshaking is not supported. The interfaces use an interrupt-driven FIFO that empties into a circular buffer. The developer is responsible for ensuring that the host processor’s RS232 receiver has the capability to receive up to 256 bytes of data at a time without overflowing. Installing the USB Driver Windows When connecting to the M6e-TC through the USB interface from a Windows PC a few installation steps are required for Windows to recognize the M6e-TC and properly 26 Functionality of the Embedded Modules General Purpose Inputs/Outputs (GPIO) configure the communications protocol. In order to use the USB interface with Windows you must have the m6etc.inf file. The installation steps are: 1. Plug in the USB cable to the M6e-TC (devkit) and PC. 2. Windows should report “Found New Hardware - M6e-TC Serial” and open the Hardware Installation Wizard. 3. Select the Install from a list or specific location (Advanced) option, click Next. 4. Select Don’t search..., click Next, then Next again. 5. Click Have Disk and navigate to where the m6etc.inf file is stored; select it, click Open, then OK. 6. “Mercury6eTC” should now be shown under the Model list. Select it and click Next then Finished. Note The M6e-TC driver file has not been Microsoft certified so compatibility warnings will be displayed. These can be ignored and clicked through. 7. A COM port should now be assigned to the M6e-TC. If you aren’t sure what COM port is assigned you can find it using the Windows Device Manager: a. Open the Device Manager (located in Control Panel | System). b. Select the Hardware tab and click Device Manager. c. Select View | Devices by Type | Ports (COM & LPT) The device appears as Mercury6eTC (COM#). General Purpose Inputs/Outputs (GPIO) The M6e-TC modules has four TTL level signals, two 3.3/5V serial input sensor ports (GPIO inputs) and two output indicator ports (GPIO outputs) of up to 24 mA, available on the 14-pin digital connector. These can be controlled via the Get User GPIO Inputs and Set User GPIO Outputs commands. For further information, see Get User GPIO Inputs (66h) and Set User GPIO Outputs (96h). Functionality of the Embedded Modules 27 Default Settings Default Settings Since default settings may change across release and be different across platforms we recommend using the Get Configuration Commands to obtain default settings. None of the configurable settings in the application FW are saved in non-volatile memory. Thus the system will always boot up in the same default state, regardless of how it was previously configured. 28 Functionality of the Embedded Modules Overview of the Communication Protocol The serial communication between a computer (host) and the reader is based on a synchronized command-response/master-slave mechanism. Whenever the host sends a message to the reader, it cannot send another message until after it receives a response. The reader never initiates a communication session; only the host initiates a communication session. This protocol allows for each command to have its own timeout because some commands require more time to execute than others. The host manages retries, if necessary. The host keeps track of the state of the intended reader if it reissues a command. Host-to-Reader Communication Host-to-reader communication is packetized according to the following diagram. The reader can only accept one command at a time, and commands are executed serially, so the host waits for a reader-to-host response before issuing another host-to-reader command packet. Header Hdr 1 byte Data Length Command Len Cmd 1 byte 1 byte Overview of the Communication Protocol Data CRC-16 Checksum CRC HiI 0 to N bytes CRC LO 2 bytes 29 Host-to-Reader Communication The fields are summarized in the following table.: Field Length Description Header (Hdr) 1 byte Defines the start of the packet. Equal to 0xFF 1 byte Defines the length, N, of the data field contained in the packet. Command 1 byte Specifies the command that the reader is to execute. Data N bytes (0 to 250) Defines the binary data required by the reader for use with a command. This could, for example, represent transponder data to be written. The length, N, can vary between 0 and 250 bytes. CRC-16 Checksum (CRC HI, CRC LO) 2 bytes CRC-16 checksum (high order byte first). CRC polynomial is CCITT CRC-16, with a preload of 0xFFFF. This does not fully specify the operation of the CRC, see CCITT CRC-16 Calculation. Data Length (Len) 1.Minimum packet length is 5 bytes; the maximum packet length is 255 bytes. 30 Overview of the Communication Protocol Reader-to-Host Communication Reader-to-Host Communication The following diagram defines the format of the generic Response Packet sent from the reader to the host. The Response Packet is different in format from the Request Packet. Command Status Word Header Data Length Hdr Len Cmd 1 byte 1 byte 1 byte Data CRC HI Status Word 2 bytes CRC-16 Checksum 0 to M bytes CRC LO 2 bytes The fields are summarized in the following table.: Field Length Description Header (Hdr) 1 byte Defines the start of the packet. Equal to 0xFF 1 byte Defines the length, M, of the data field contained in the packet. Length can be 0 – 248 bytes 2Command 1 byte OpCode of the last command received 3Status 2 bytes Specifies the status of the last command, Successful = 0x0000, else it contains a fault code. Data M bytes (0 to 248) Defines the binary data returned by the reader in response to a command. This could, for example, represent data read from a transponder. Data length, M, can be a minimum of 0 and a maximum of 248 bytes. CRC-16 Checksum (CRC HI, CRC LO) 2 bytes CRC-16 checksum (high order byte first). CRC polynomial is CCITT CRC-16, with a preload of 0xFFFF. This does not fully specify the operation of the CRC, see CCITT CRC-16 Calculation. Data Length (Len) Word Overview of the Communication Protocol 31 Reader-to-Host Communication 1.The minimum packet length is 7 bytes and the maximum packet length is 255 bytes. 2.Each host command receives a response from the reader. In the response packet, the Header, Data Length, Command, Data, and Checksum are functionally similar to the command packet. 3.The only difference is the addition of the Status Word field. The Status Word has two types of values. A Status Word value of 0 (Zero) means the command received was successful. Any other value represents a fault. CCITT CRC-16 Calculation The same CRC calculation is performed on all serial communications between the host and the reader. The CRC is calculated on the Data Length, Command, Status Word, and Data bytes. The header (SOH, 0xFF) is not included in the CRC. A sample implementation of the CCITT CRC-16 algorithm is shown in this section. The CRC_calcCrc8() function is written to calculate the CRC one byte at a time, with the calculated value stored in crc_calc. The crc_calc value must be pre-loaded the first time the CRC_calcCrc8() function is called with 0xFFFF to initialize the calculated CRC. The final value of crc_calc is sent as the 16-bit CRC at the end of the message. 32 Overview of the Communication Protocol Reader-to-Host Communication An example implementation of CRC calculation, taken from the Arbser source CrcUtils.c, is shown here: /** @fn void CRC_calcCrc8(u16 *crcReg, u16 poly, u16 u8Data) * @ Standard CRC calculation on an 8-bit piece of data. To make it * CCITT-16, use poly=0x1021 and an initial crcReg=0xFFFF. * Note: This function allows one to call it repeatedly to continue calculating a CRC. Thus, the first time it's called, it should have an initial crcReg of 0xFFFF, after which it can be called with its own result. * @param *crcRegPointer to current CRC register. * @param poly Polynomial to apply. * @param u8Datau8 data to perform CRC on. * @return None. */ void CRC_calcCrc8(u16 *crcReg, u16 poly, u16 u8Data) u16 u16 u16 u16 i; xorFlag; bit; dcdBitMask = 0x80; for(i=0; i<8; i++) // Get the carry bit. This determines if the polynomial should be // xor'd with the CRC register. xorFlag = *crcReg & 0x8000; // Shift the bits over by one. *crcReg <<= 1; // Shift in the next bit in the data byte bit = ((u8Data & dcdBitMask) == dcdBitMask); *crcReg |= bit; // XOR the polynomial if(xorFlag) *crcReg = *crcReg ^ poly; // Shift over the dcd mask dcdBitMask >>= 1; Overview of the Communication Protocol 33 Format for Microprocessor Reply to Host Format for Microprocessor Reply to Host There are three different types of replies that the microprocessor can make to the host as follows: Acknowledge that the command was properly processed (ACK) Return a fault code Provide data that is requested by the host This section describes each of these three types. Unless otherwise specified, all commands return, as part of the Reply message, a status word with an ACK or a Fault. Those commands that return a Data Reply message are clearly shown. Microprocessor ACK Message Many of the commands require the microprocessor to perform a function, but do not require the microprocessor to send data back to the host. However, since the host cannot send a message until the microprocessor replies, an ACK is sent. The ACK message contains no data. It returns the same OpCode that was sent originally to the microprocessor, sets the Status Word to 0x0000 (zero) and the Data Length to 0x00 (zero). 34 Overview of the Communication Protocol Format for Microprocessor Reply to Host The following shows an example of an ACK message to an Erase Flash command. FF SOH 00 Length 07 00 OpCode 00 F4 Status 27 CRC The value in the OpCode field (0x07) is the same as the Erase Flash OpCode, 0x07. Microprocessor Fault Reply Message If a problem occurs during the execution of a command, the microprocessor returns a non-zero status value. Although this usually implies a fault or error, sometimes the nonzero status simply indicates a condition of the system. For instance, when executing a Read Tag Single command, if no tags are found, a status code of 0x0400 is returned. An example of a fault reply message is shown for the Erase Flash command. FF SOH 00 Length 07 02 OpCode 00 F6 Status 27 CRC A list of error codes is included in Appendix C: Error Messages. Refer to this list when encountering any non-zero status codes. Microprocessor Data Reply Message If the requested command requires that the microprocessor returns data, then the microprocessor creates a message similar to the Microprocessor ACK Message with the data length set to a non-zero value. Since this command does not require a data field, the length field is set to Zero. FF SOH 00 Length Overview of the Communication Protocol 07 OpCode 00 00 Status F4 27 CRC 35 Format for Microprocessor Reply to Host Here is an example of a Reply message with Data Field Length not zero. This message happens to be a successful reply to Read Tag Single command. 36 FF 0A SOH Length 21 OpCode 00 Status 00 C8 05 07 A8 00 Tag ID 84 C4 FF 9E E0 Tag CRC F7 25 CRC Overview of the Communication Protocol Command Set The following list defines the OpCodes that are used in the embedded modules firmware. As these products grow, more OpCodes will be added to enhance the functionality of the product. The timeout for the commands are in milliseconds. The maximum value for any user-configurable timeout is 65,535msec (0xFFFF), unless otherwise noted. The OpCodes are divided into five main categories: 0x00 – 0x1F: Boot Loader Commands 0x20 – 0x5F: Application Tag Commands - Depending on the current protocol setting will correspond to: – Multi-Protocol Tag Commands – Allegro/Title-21 Tag Commands – eGo/SeGo Tag Command Set – ATA Tag Command Set – Gen2 Tag Commands 0x60 – 0x8F: Get Configuration Commands 0x90 – 0xBF: Set Configuration Commands 0xC0 – 0xCF: FCC Test Commands Command Set 37 Boot Loader Commands Boot Loader Commands The BootLoader is automatically started upon power up, and allows access to the onboard flash memory along with other commands. The program exits only when the Boot Firmware command is received. Once that occurs, the firmware image starts executing and sends back a reply to the Boot Firmware command. The BootLoader can also be started using command 0x09, Start BootLoader. The following table shows which commands are supported by the Boot loader and in some cases the application. Boot Loader Commands OpCode Command Name Arguments Return BL App 0x02 Flash Read Sector (02h) Address, Sector, bytes Data 0x03 Get Boot Loader/Firmware Version (03h) none Acknowledge 0x04 Boot Firmware (04h) none Acknowledge 0x06 Set Baud Rate (06h) Baud Rate Acknowledge 0x07 Erase Flash Sector (07h) Sector Number, password Ack 0x08 Verify Image CRC (08h) none Acknowledge 0x09 Start Bootloader (09h) none Acknowledge 0x0C Get Current Program (0Ch) none 1 Byte indicating program currently running 0x0D Write Flash Sector (0Dh) Sector enum, memory offset, length, data to write none 0x0E Get Sector Size (0Eh) Sector enum Size of sector in bytes 0x0F Modify Flash Sector (0Fh) Sector enum, memory offset, length to read Data in flash 38 Command Set Boot Loader Commands Flash Read Sector (02h) The Flash Read Sector command reads the contents of flash from the specified sector and offset address. Since the length of the Microprocessor reply packet is limited to 248 bytes, reading the application firmware data requires multiple read commands. Note Length is defined as the number of 16-bit words, and the maximum value of length is 124 words. In this example, the sector number 02 indicates the application area. This command reads the first five data elements of the application, which is equivalent to the original command (using data length of 05). The sector codes can be found in Flash Memory Sector Mapping.. FF 06 SOH Length 02 00 00 OpCode 00 00 Start Address 02 05 Sector FA Num Bytes To Read 59 CRC The reply to this command looks like this FF 0A 02 SOH Length OpCode 00 Status 00 01 23 45 Word 1 67 89 AB CD Word 3 Word 2 EF Word 4 01 23 Word 5 BC ED CRC 1.Word 1 contains the data located at address 0x208000. 2.Word 2 contains the data at address 0x208001, and so forth. (Remember that the Microprocessor data is word addressed.) Get Boot Loader/Firmware Version (03h) The Get Boot Loader command returns the Boot Loader, Hardware, and Application version numbers. The Boot Loader, Hardware, and Application FW version numbers are stored in flash. The Boot Loader and Hardware version numbers are each 32-bit numbers. The application has a 96-bit version code. The command to retrieve firmware version is shown in the following table. FF SOH Command Set 00 Length 03 OpCode 1D 0C CRC 39 Boot Loader Commands Responses A sample response for the M6e-TC is as follows: FF SO 14 03 Length OpCode 00 Status 00 07 09 17 00 01 BootLoader Ver 00 00 00 00 01 Hardware Ver 00 10 Supported Protocols 6B 20 07 10 12 Firmware Date 09 05 12 00 Firmware Version CC CRC The following information is embedded in the reply to the command: The boot loader version is 07.09.17.00. This number is in hex format. HW Version is 01000001. For a definition, see Returned HW Versions. The application firmware was compiled on 2007-October-12. The application firmware version is 09.05.12.00. This number is in hex format. The protocol supported by this firmware – Gen2 and ISO 18000-6C. Returned Hardware Version Table The following table provides a definition of each HW version returned by the Get Boot Loader/Firmware Version command. Returned HW Versions Module M6e-TC Defined HW_VERID_1_0W Version 0x10000001 Description A0 and B0 prototypes If the Get Boot Loader/Firmware Version command returns a different value than those listed in the table, you should contact support@thingmagic.com. Boot Firmware (04h) The Boot Firmware command tells the boot loader to run the current firmware image stored in flash in the following sequence: 1. 40 If flash is locked application firmware is run. Command Set Boot Loader Commands 1. If flash is not locked: the application firmware image CRC verified and flash is locked before it is run. 2. If the image is invalid, a fault code is returned to the host. 3. If the application firmware is started successfully, it sends the response to the Boot Firmware command. FF SOH 00 Length 04 OpCode 1D 0B CRC The response is identical to the response to a Get Version command, except that the OpCode is 0x04 instead of 0x03. Note The Application Firmware boot up time takes approximately 600ms the first time it is run after a new firmware installation. Subsequent boot up times will be approximately 50ms. Set Baud Rate (06h) The Set Baud Rate command has a default baud rate of 9600 bps. Since the code method of specifying the baud rate is processor dependent, a new interface was created to make the modules easily interchangeable. The following table shows the hexadecimal equivalent for each baud rate: Command Set 41 Boot Loader Commands Baud Rate (decimal) Baud Rate (hex) 9600 0x00002580 19200 0x00004B00 38400 0x00009600 57600 0x0000E100 115200 0x0001C200 230400 0x00038400 460800 0x00070800 921600 0x000E1000 In the following example, the baud rate is specified as a 32-bit value. This example sets the baud rate to 115200: FF SOH 04 06 Length OpCode 00 01 C2 Baud Rate 00 FD 30 CRC The response to baud rate change is sent at the baud rate that the Set Baud Rate command was transmitted. Once the baud rate has changed, the new rate is in effect until the baud rate is changed by power cycling the reader. The baud always reverts to 9600 after a power cycle. Note Set baud rate has no effect on the USB interface speed, only the RS232 interface, whether executed from the RS232 interface or USB. 42 Command Set Boot Loader Commands Erase Flash Sector (07h) The Erase Flash Sector command erases the sector specified by the sector number. as defined by Flash Memory Sector Mapping. The following example shows the command to erase sector 2 of the flash. FF SOH 05 07 Length OpCode 08 95 91 21 02 Password Sector 7F 91 CRC Verify Image CRC (08h) After uploading a new application firmware image, the application CRC can be checked with the Verify Image CRC command. The application CRC is already embedded in the firmware image, so this command calculates the firmware’s CRC in flash and compares it to the pre-stored value. It returns a fault code if the application firmware fails the CRC checks. A failed CRC means that the application cannot run, and needs to be downloaded again. FF SOH 00 Length 08 1D OpCode 07 CRC The boot loader runs this command automatically before loading the application the first time it is l run. If the CRC check fails, the boot loader does not run the application to prevent corrupted code from executing on the Microprocessor. Subsequent invocations will not verify the CRC since the flash is locked. Start Bootloader (09h) The Start Bootloader command shuts off the analog board and starts the boot loader while inside the application. This is necessary to perform an upgrade of the firmware while the system is running. FF SOH Command Set 00 Length 09 OpCode 1D 06 CRC 43 Boot Loader Commands Get Current Program (0Ch) The Get Current Program command returns a code for the current program being executed in the module. These codes are defined as follows: Code Program 0x21 M6e-TC Bootloader 0x22 M6e-TC Application To get the current program command, send the following to the module: FF SOH 00 0C Length OpCode 1D 0C CRC The module responds as follows, indicating that it is the application program: FF SOH 01 0C Length OpCode 00 00 Status 22 Program ?? ?? CRC Write Flash Sector (0Dh) The Write Flash Sector command is used to write data to the flash memory. Before writing to flash it is imperative that the flash be erased first. Attempting to write to flash before it is erased will generate an error. Alternatively the Modify Flash Sector (0Fh) command can be used. Loading an Application Image A series of write flash commands is used to load a new application program image into flash. The Write Flassh Sector command verifies the CRC of the received data but does not verify the CRC of the complete application image. Use the Verify Image CRC (08h) command to verify the application once it is uploaded. The start address is a 32-bit sector offset address. It is a word address, that is different from the byte address used for instruction memory. The application code must be loaded 44 Command Set Boot Loader Commands starting from word address 0x00000000. Since the flash is a 16-bit device, there must be an even number of data bytes. The number of data bytes to be written is embedded in the length of the payload (N) by the formula: LengthDataToWriteInWords = (N – 8) / 2 The password required for each sector is defined in Flash Memory Sector Mapping. The following example shows a Write Flash Sector command writing to the Application Sector, starting at the beginning FF 0F 0D SOH Length OpCode 02 25 44 10 Password 00 00 00 00 02 Start Address 12 34 Sector 56 78 90 12 Data To Write 73 4C CRC Note DO NOT send a packet that spans two sectors. Split the packet into 2 separate messages, then send the first message to sector “x” and the second to sector “x+1”. Get Sector Size (0Eh) The size of a flash sector can be retrieved from the module using the Get Sector Size command. Since different products may have different flash sector sizes, this command is useful for ensuring that the module has enough memory to store the desired data. This example receives the sector size for the application area: FF 01 OE 02 SOH Length OpCode Sector D1 BF CRC The response to this command is shown in the following example: FF 04 OE 00 00 SOH Length OpCode Status 00 03 40 Size of Sector 00 88 54 CRC The size of the sector is returned in bytes. Sector 2 (application) is 212992 bytes. Modify Flash Sector (0Fh) The Modify Flash Sector command is used as a read-modify-write operation in the flash. Since the Modify Flash Sector command erases the flash sector each time it is Command Set 45 Boot Loader Commands called, it could prematurely wear out the flash if it is used too often. This command should only be used to modify a few variables (that is less than one serial packet’s worth) at a time. This command works only for the User area. FF 0F 0F SOH Length OpCode 46 79 13 87 Password 66 00 00 00 Start Address 00 03 Sector 12 34 56 78 Data To Write 90 12 4C FA CRC Command Set Multi-Protocol Tag Commands Multi-Protocol Tag Commands The application commands are used to interact with RFID tags in the field. These commands can have slightly different behavior based upon the current protocol selected in the system. Applications Commands OpCode Command Name 0x29 Get Tag Buffer (29h) 0x2A Clear Tag Buffer (2Ah) 0x2F Multi-Protocol Tag Read (2Fh) Get Tag Buffer (29h) After a Multi-Protocol Tag Read command is executed, the found tags are stored in an internal Tag Buffer. The Get Tag Buffer command can perform several different operations depending on the syntax used. These operations are: Get tags remaining in the tag buffer Get tag EPCs Get tag EPCs and their Tag Read Meta Data. Get Tags Remaining To determine the number of tags remaining in the buffer, send the Get Tag Buffer command with a data length of zero: FF 00 29 SOH Length OpCode 1D 26 CRC This command returns the current read index, the location of the next tag to be read, and the current write index, the location where the next tag will be written. These two numbers can be used to get the number of tags left in the tag buffer: 47 Multi-Protocol Tag Commands Tags Left = WriteIndex - ReadIndex The following response shows there are three tags left in the buffer, and the first one has already been read (the read index parameter starts counting from 0.): FF 04 29 SOH Length OpCode 00 00 Status 00 01 00 04 ReadIndex WriteIndex 87 72 CRC Get Tag EPCs When you want to get the tag EPCs out of the buffer and don’t care about the tag read metadata, the options available with this syntax maybe useful. This syntax reads out the requested number of tags from the buffer. A maximum of 13 tags are read at a time, less if Max EPC Length is set to 496 bits. Multiple Get Tag Buffer commands may be required to obtain the complete results from a single Multi-Protocol Tag Read command. If more tags are requested than remain in the buffer an error will be returned. All tag buffer indexes are encoded as 16-bit unsigned integers. The indexes start counting from 0. Thus, a start index of 0 indicates tag #1, and a start index of 10 would indicate tag #11. There are two ways to read tag EPCs out of the buffer when you only want EPC values. The first way is to send a Get Tag Buffer command with the desired number of tags, n. This retrieves the next n tags, starting from the current read index. In the previous example, the read index was 1, indicating that one tag was already read. To read the next two tags, set the number of tags parameters to 2. This returns tags number 2 and 3 in the tag buffer: FF 02 29 SOH Length OpCode 00 02 # Tag IDs to Return 57 EB CRC When using the Get Tag Buffer command in this way, the read index is automatically incremented internally. Thus, if the read index was ‘1’ before getting two tags, then it is incremented to ‘3’ at the end of this command. Another way to get the second and third tags is to explicitly send the start and end indexes of the tags to read. This is used to retrieve any contiguous block of tag buffer entries at any time. 48 Multi-Protocol Tag Commands FF 04 29 00 01 00 03 SOH Length OpCode Start Idx End Idx CC 94 CRC Using the start and end index method does not affect the read index that is internally stored in the module. The above request returns a message with two tags. The length of each tag EPC record returned is defined based on the max EPC length configured with Set Reader Configuration(9Ah), regardless of the size of a specific tag’s EPC. The sizes and fields of the EPC portion of a tag buffer entry is defined in the Tag Buffer Entry table. For example: A 64-bit tag has the length set to 0x60 (16-bit PC + 64-bit tag EPC + 16-bit tag CRC), but only the first 12 bytes of the tag record is filled in, the trailing bytes, after the CRC are padded with zeros. An 96-bit GEN2 tag, the length is 0x80 (16-bit PC (Protocol Control) word + 96-bit tag EPC + 16-bit tag EPC CRC). In the response below, two tag EPCs are returned. Tag #1 is a 96-bit EPC tag and tag #2 is a 64-bit EPC tag. 00 80 EPC Length 00 24 29 SOH Length OpCode 30 00 11 11 00 00 Status 22 22 33 PC Word 60 EPC Length FF 20 00 PC Word 33 44 44 55 55 66 66 Tag EPC 11 11 22 22 33 33 18 35 Tag CRC 44 44 Tag EPC C2 41 Tag CRC D3 00 00 00 00 Padding 32 CRC Note Using this syntax the number of tags in the response is not specified. It must be determined by the message length. 49 Multi-Protocol Tag Commands Get Tag EPCs and Metadata Using this syntax for getting information from the tag buffer provides several benefits: When at tag EPC is returned there is no padding if the actual tag EPC is shorter than the configured max EPC length. This helps minimize the amount of data returned. Any or all fields of the Tag Read Meta Data can be returned. In the event of a communication error the last Get EPC and Metadata request can be repeated. When data is requested using this syntax the response will contain as many tags as can be fit in the response packet. The response will indicate how many tags were returned and should be processed accordingly. This version of Get Tag Buffer takes two additional fields: the Metadata Flags which defines what metadata will be returned and the Read Options which specifies special read functionality. The following table lists the supported values for these fields. Get EPC and Metadata Request Fields Field Metadata Flags (to specify more than one OR the values together) 50 Value Description 0x0000 When no flags are set no meta data will be returned, only the tag EPC (including PC bits and tag CRC) 0x0001 When bit 0 is set the Read Count will be returned 0x0002 When bit 1 is set the LQI/RSSI will be returned 0x0004 When bit 2 is set the Antenna ID will be returned 0x0008 When bit 3 is set the Frequency will be returned 0x0010 When bit 4 is set the Timestamp will be returned 0x0020 RFU (ThingMagic Only) 0x0040 When bit 6 is set the Protocol ID, as defined by the Tag Protocol IDs table, will be returned Multi-Protocol Tag Commands Field Read Option Value Description 0x00 Read the next set of tags from the Tag Buffer 0x01 Re-send the last set of tags. Note: When setting this option the tags will be resent starting at the same ReadIndex as the last command. If the metadata requested is different than the last request the number of tags returned might be different. To get those ‘missing’ tags, additional Get Tag Buffer commands should be sent without the re-send option, otherwise it will reset the ReadIndex again. 51 Multi-Protocol Tag Commands Examples An example command requesting Read Count, AntennaID and Timestamp Metadata Flags = 0x0001 OR 0x0004 OR 0x0010 = 0x0015 is as follows: FF 03 29 SOH Length OpCode 00 15 Metadata Flags 00 97 Read Options 55 CRC A response contains the following information: Get EPC and Metadata Response Fields Field 52 Length Value SOH 1 byte 0xFF Length 1 byte Based on data returned OpCode 1 byte 0x29 Metadata Flags 2 bytes Metadata contained in response Read Options 1 byte As sent in request Tag Count 1 byte Number of tags in response Read Count 1 byte Tag EPC/Antenna Read Count RSSI1 1 byte Return Signal Strength Indicator Antenna ID1 1 byte Antenna ID, 4 MSBs for TX and 4 LSBs for RX Frequency1 3 bytes Frequency in kHz Timestamp1 4 bytes RTC Timestamp Multi-Protocol Tag Commands Field Length Value RFU1 2 bytes Reserved for Future Use - ThingMagic Only Protocol ID 1 byte Protocol ID of tag read EPC Length 2 bytes Number of bits in EPC including PC and CRC bits PC Word 2 bytes Tag EPC Protocol Control bits EPC ID N bytes Tag EPC. Tag CRC 2 bytes Tag EPC CRC Repeat fields starting at Read Count for remaining tags in message as defined by Tag Count CRC 2 bytes Message CRC 1 - Conditionally returned depending on the Metadata Fields specified in the request. Here is an example response to the example request specified above. The response contains two tags as specified in the Tag Count field each with its EPC info and requested tag read metadata: Read Count, AntennaID and Timestamp: 22 Read Count OE Read Count 11 FF 34 29 SOH Length OpCode 02 Ant ID 11 Ant ID 50 CE F6 Timestamp 04 1D 3D Timestamp 00 00 00 Status 80 EPC Length 3C 00 EPC Length 00 15 Metadata Flags 31 C1 02 00 Read Options 11 11 Tag Count 22 22 33 PC Word 80 30 00 33 44 44 55 55 66 66 Tag EPC 05 00 00 00 00 PC Word 00 00 15 Tag CRC 00 00 00 23 54 Tag EPC 1A FB 4A C8 Tag CRC B8 CRC 53 Multi-Protocol Tag Commands Clear Tag Buffer (2Ah) The Clear Tag Buffer command resets the tag buffer. This clears the buffer of any current tags and reset the read index to 0. A Multi-Protocol Tag Read or Read Tag Multiple command must be issued to load new tags into the buffer. FF 00 2A SOH Length OpCode 1D 25 CRC If Clear Tag Buffer or Get Tag Buffer is not used after a Multi-Protocol Tag Read to remove all tags, old tags will be left in the buffer. This means that if tags that have not been removed from the buffer are read again they will not be added to the buffer as second time, only their Read Count will be incremented. Multi-Protocol Tag Read (2Fh) The Multi-Protocol Tag Read command allows tag reading and inventorying commands to be performed on tags with different protocols at the same time, using a single command. This command contains the following request fields: Multi-Protocol Tag Read Request Fields Field Value Description TM OpCode 0x2F TM OpCode indicating a multi-protocol operation. Timeout [2 bytes] Indicates how long the entire command should spend attempting the operation, in milliseconds. When TM Option=0x00 the time gets divided equally across each protocol specified. TM Options • 0x00 = Basic Multi-protocol search. Uses Protocol Bitmask Indicates the operation to perform and additional fields that will be required. Command Opcode • 0x00 - reserved Indicates the command that will be performed for each protocol specified. • 0x21 - tag read single • 0x22 - tag read multiple Note: Allegro/Title-21 is not supported with tag read multiple. Note: Allegro/Title-21 uses Read Request (28h; C003h) for tag read single. 54 Multi-Protocol Tag Commands Field Search Flags Value [2 bytes - bitwise setting] Bit 0 = Enable end on tags found Note: Least Significant Bit = bit 0 Description Indicates search options. When bit is set = 1 the option will be enabled. • Bit 0 = 1 (0x01) the search will stop after the first tag is found, after completing that protocols entire timeout. i.e. if 4 protocols are specified with a 100ms timeout and a tag is found during searching on the second protocol the remaining protocols will not be searched and the command will return after 50ms. Bit 0 = 0 all protocols will be searched, using entire timeout. TM Option = 0x00 Fields - The following field is only used when TM Option = 0x00 Protocol Bitmask Enables [4 bytes - bitwise setting] bit 0-3 = not used bit 4 (0x00000010) = Gen2 bit 5-25 = not used bit 26 (0x04000000) = eGo bit 27 (0x08000000) = SeGo bit 28 (0x10000000) = ATA bit 29 (0x20000000) = Allegro/Title-21 Indicates the protocols to operate on. If the protocols bit is set to ‘1’ tags of that protocol will be included in the operation. OR values together for final setting Note: Least Significant Bit = bit 0 55 Multi-Protocol Tag Commands Examples TM Option = 0x00 Request FF ?? 2F ?? SOH Length OpCode ?? Timeout 00 ?? ?? ?? ?? ?? ?? ?? ?? ?? TM Options Cmd Opcode Search Flags Protocol Bitmask Enables CRC Response FF ?? 2F SO Length OpCod ?? ?? Status 00 ?? ?? ?? TM Option Cmd Opcode Search Flags ?? ?? Protocol Id1 Protocol Response Length ?? ?? Protocol Id2 Protocol Response Length ?? ?? ?? .... Protocol Response Data (Includes Status word) ?? ?? ?? .... Protocol Response Data (Includes Status word) ?? ?? CRC Note: If a multi-protocol Tag Read Single (command code 0x21) search results in zero tags found it will not be reported. Only successful searches are reported. 56 Allegro/Title-21 Tag Commands Allegro/Title-21 Tag Commands The Allego/Title-21 tag commands are used to operate on Allegro/Title-21 tags and perform operations specific to those tags. These commands can only be used when the Tag Protocol of the reader is set to Allegro/Title-21 (0x001E) using Set Current Tag Protocol (93h). These commands cannot be run when in Bootloader mode, only in Application mode. Allegro/Title-21 Tag Commands TM OpCode Operation Type Allegro/Title-21 Command Transaction Type Code 0x21 Read ID Single Read Tag ID Single (21h) n/a 0x24 Modify Write Request (24h; A003h) 0xA003 Title-21 ACK Request (24h; C000h) 0xC000 General ACK Request (24h; F00Fh) 0xF00F Title-21 Read Request (28h; 8000h) 0x8000 Read Request (28h; C003h) 0xC003 Random Number Request (28h; D001h) 0xD001 TDMA Read Request (28h; E003h) 0xE003 Jump to Reset Request (2Ch; D203h) 0xD203 0x28 0x2C Read Reset 57 Allegro/Title-21 Tag Commands Command Syntax All Allegro/Title-21 tag commands, except Read Tag ID Single, follow the same standard syntax. The commands are grouped into three ThingMagic M6e-TC OpCodes, as defined in the Allegro/Title-21 Tag Commands table, indicating their general operation type. In addition to the 1 of 3 OpCodes each command will have the following fields: Standard Request Fields Field Value Description TM OpCode 0x24 TM OpCode Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options 0x00 Reserved for Future Use. Transaction Type Code [2 bytes] Allegro/Title-21 code indicating operation to perform. The remaining fields for each command are as defined by Transcore based on the Transaction Type Code. They occur in the same order and require the same values as described in the [Transcore doc reference]. 58 Allegro/Title-21 Tag Commands Read Tag ID Single (21h) The Read Tag ID Single/Tag Detect command performs a search operation and returns the first Allegro/Title-21 tag it finds. Read Tag ID Single Request Fields Field Value Description TM OpCode 0x21 TM OpCode Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options Bit 4 (LSB=bit 0)) Note: This and following • 1 - Metadata flags must be passed and the corresponding Metadata shall be returned with the tag EPC. fields are optional. Metadata Flags (to specify more than one OR the values together) • 0 - Metadata flags must not be passed and Meta Data will not be returned. 0x0000 When no flags are set no meta data will be returned, only the tag EPC. 0x0001 When bit 0 is set the Read Count will be returned 0x0002 When bit 1 is set the LQI/RSSI will be returned 0x0004 When bit 2 is set the Antenna ID will be returned 0x0008 When bit 3 is set the Frequency will be returned 0x0010 When bit 4 is set the Timestamp will be returned 0x0020 When bit 5 is set the RFU (ThingMagic Only) will be returned 0x0040 When bit 6 is set the Protocol is returned. Examples An example, without TM Options, command: FF 02 SOH Length 21 OpCode 00 FA D6 Timeout (ms) CRC 1B 59 Allegro/Title-21 Tag Commands ACK Response FF 04 21 SOH Length OpCode 00 00 ?? ?? Status ?? ?? Tag ID CRC NACK Response FF 00 21 SOH Length OpCode ?? ?? Status ?? ?? CRC No Response FF SOH 60 00 Length 21 TM OpCode 04 00 Status B4 CRC ?? 83 ?? Allegro/Title-21 Tag Commands Write Request (24h; A003h) The Write Request command writes data to the specified area of the specified tag. A nonacknowledge (NACK) error response shall be returned if an invalid password was included in the request. This command contains the following request fields: Write Request Fields Field Value Description TM OpCode 0x24 TM OpCode for tag modification operations Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options 0x00 Reserved for Future Use. Transaction Type Code 0xA003 Allegro/Title-21 code indicating operation to perform. Options [1 byte] Command specific options Page Number [2 bytes] Indicates which page of the tag is to be written to. Tag ID [4 bytes] Optional, based on value of Options parameter. Indicates the ID of the tag to operate on. User Password/ Global Password [4/8 bytes] Optional, based on the value of the Options parameter. The password to operation on the tag, if required. Page Data Byte Count [1 byte] Indicates the number of data bytes to follow. Page Data Bytes [N bytes] Data to write to the tag. Examples An example command requesting ? be written to tag ? with a User Password = 0x? is: FF 0E + N 24 ?? ?? 00 A0 03 ?? ?? ?? SOH Length TM OpCode Timeout (ms) TM Option Transaction Type Code Option Page Number ?? ?? ?? Tag ID ?? ?? ?? ?? ?? ?? User/Global Password Page Data Count NN NN Page Data ?? ?? CRC 61 Allegro/Title-21 Tag Commands ACK Response FF 0C + (N+1) SOH Length 24 00 00 00 A0 03 ?? ?? TM OpCode Status TM Option Transaction Type Code Options ?? ?? ?? Tag ID ?? ?? ?? NN Page Number Page Data Count (if requested) NN ?? Page Data NACK Response FF 0B 24 04 0A 00 A0 03 ?? SOH Length TM OpCode Status TM Option Transaction Type Code Options Tag ID ?? ?? CRC No Response FF 00 24 04 00 SOH Length TM OpCode Status E4 26 CRC Title-21 ACK Request (24h; C000h) The Title-21 ACK Request command informs the tag that the reader has successfully received the tag ID. This will result in the tag not responding to any message whose transaction type is identical to the most recently received message for a specified period of 10 seconds, as defined in Title 21 release 1. This command contains the following request fields: 62 ?? CRC Allegro/Title-21 Tag Commands Title-21 ACK Request Fields Field Value Description TM OpCode 0x24 TM OpCode for tag modification operations Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options 0x00 Reserved for Future Use. Transaction Type Code 0xC000 Allegro/Title-21 code indicating operation to perform. Tag ID [4 bytes] Indicates the ID of the tag to operate on. Reader ID [4 bytes] The reader number for the reader that is acknowledging the receipt of the message. Transaction Status Code [2 bytes] Code indicating the status of the transaction. Examples An example command requesting an ACK from tag XXX from reader XXX is: FF 0D 24 ?? ?? 00 C0 00 ?? SOH Length OpCode Timeout (ms) TM Option Transaction Type Code ?? ?? ?? ?? Tag ID ?? ?? ?? Reader ID ?? ?? Transaction Status Code ?? ?? CRC ACK Response FF 03 24 ?? ?? 00 C0 00 SOH Length TM OpCode Status TM Option Transaction Type Code ?? ?? CRC NACK Response FF 0B 24 ?? ?? 00 C0 00 ?? SOH Length TM OpCode Status TM Option Transaction Type Code Options ?? ?? ?? Tag ID ?? ?? ?? CRC 63 Allegro/Title-21 Tag Commands No Response FF 00 24 04 00 SOH Length TM OpCode Status E4 26 CRC General ACK Request (24h; F00Fh) The General ACK Request, or Sign Off Request, command informs the tag that it should not respond to any commands from the reader for the specified time period. This command contains the following request fields: General ACK Request Fields Field 64 Value Description TM OpCode 0x24 TM OpCode for tag modification operations Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options 0x00 Reserved for Future Use. Transaction Type Code 0xF00F Allegro/Title-21 code indicating operation to perform. Options [1 byte] Command specific options Tag ID [4 bytes] Indicates the ID of the tag to operate on. Time Out [1 byte] Indicates the amount of time the tag shall ignore commands from the reader, in seconds from 0-127. Condition Code Bits [1 byte] Represents a condition applicable to a tolling environment. LCD Message Page Pointer [1 byte] Tag memory page where the LCD message to be displayed is stored in ASCII. Valid range = 0x02 0x0F. Allegro/Title-21 Tag Commands Examples An example command requesting an ACK from tag XXX from reader XXX is: FF 0C 24 ?? ?? 00 F0 0F ?? SOH Length OpCode Timeout (ms) TM Option Transaction Type Code Option ?? ?? ?? ?? Tag ID ?? ?? ?? Time Out Condition Code LCD Page Ptr ?? ?? CRC ACK Response FF 03 24 ?? ?? 00 F0 0F ?? SOH Length TM OpCode Status TM Option Transaction Type Code ?? CRC NACK Response FF 0A 24 ?? ?? 00 F0 0F ?? SOH Length TM OpCode Status TM Option Transaction Type Code Options Tag ID ?? ?? CRC No Response FF 00 24 04 00 SOH Length TM OpCode Status E4 26 CRC Title-21 Read Request (28h; 8000h) The Title-21 Read Request command reads the Title-21 tag ID from the tag. This command contains the following request fields: 65 Allegro/Title-21 Tag Commands Title-21 Read Request Fields Field Value Description TM OpCode 0x28 TM OpCode for Read operations Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options 0x00 Reserved for Future Use. Transaction Type Code 0x8000 Allegro/Title-21 code indicating operation to perform. Agency Code [2 byte] Agency operating the reader installation. Examples An example command requesting an ACK from tag XXX from reader XXX is: FF 04 28 ?? ?? 00 80 00 ?? ?? SOH Length OpCode Timeout (ms) TM Option Transaction Type Code Agency Code ?? ?? CRC ACK Response FF 0A 28 00 00 00 80 00 SOH Length TM OpCode Status TM Option Transaction Type Code ?? ?? ?? ?? Tag ID 0B 28 ?? ?? 00 80 00 SOH Length TM OpCode Status TM Option Transaction Type Code ?? No Response 66 FF 00 28 04 00 SOH Length TM OpCode Status 25 AA CRC ?? CRC NACK Response FF ?? ?? CRC Allegro/Title-21 Tag Commands Read Request (28h; C003h) The Read Request command reads data from the specified area of the specified tag. This command contains the following request fields: Read Request Fields Field Value Description TM OpCode 0x28 TM OpCode for tag modification operations Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options 0x00 Reserved for Future Use. Transaction Type Code 0xC003 Allegro/Title-21 code indicating operation to perform. Options [1 byte] Command specific options. • Determines whether the AntiPlayBack/BIST data will be included in the response. Start Page Number [2 bytes] Indicates which page of the tag is to be read. Page Count [1 byte] Number of pages to read. Tag ID [4 bytes] Optional, based on value of Options parameter. Indicates the ID of the tag to operate on. User Password/ Global Password [4/8 bytes] Optional, based on the value of the Options parameter. The password to operation on the tag, if required. Examples An example command format is: FF 0C 28 ?? ?? 00 C0 03 ?? ?? ?? ?? SOH Length TM OpCode Timeout (ms) TM Option Transaction Type Code Option Page Number Page Count ?? ?? ?? Tag ID ?? ?? ?? CRC 67 Allegro/Title-21 Tag Commands ACK Response FF ?? + N 28 00 00 00 C0 03 ?? ?? SOH Length TM OpCode Status TM Option Transaction Type Code Options ?? ?? ?? Tag ID ?? ?? ?? .. .. ?? NN Page Number AntiPlayBack (0, 1, 2) [Based on Options] Page Count NN Page Data NACK Response FF 0B 28 04 0A 00 C0 03 ?? SOH Length TM OpCode Status TM Option Transaction Type Code Options ?? ?? ?? Tag ID ?? ?? ?? CRC No Response FF 00 28 04 00 SOH Length TM OpCode Status 25 AA CRC Random Number Request (28h; D001h) The Random Number Request command requests a 32-bit random number from the specified tag which is used in the P/W authentication scheme. This command also specifies which page is to be read or written to with the encrypted P/W on the next cycle. This command contains the following request fields: 68 ?? ?? CRC Allegro/Title-21 Tag Commands Random Number Request Fields Field Value Description TM OpCode 0x28 TM OpCode for tag modification operations Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options 0x00 Reserved for Future Use. Transaction Type Code 0xD001 Allegro/Title-21 code indicating operation to perform. Options [1 byte] Command specific options Tag ID [4 bytes] Indicates the ID of the tag to operate on. Page Number [2 bytes] Species which page is to be operated on in the next transaction. Next Command [2 bytes] Specifies which command the reader will be sending ot the tag on the next transaction, by Transaction Type Code. Only Read and Write Request commands are supported. Examples An example command: FF 0C 28 ?? ?? 00 D0 01 ?? SOH Length TM OpCode Timeout (ms) TM Option Transaction Type Code Option Tag ID ?? ?? ?? ?? Page Number Next Command ?? ?? CRC ACK Response FF ?? + N 28 00 00 00 D0 01 SOH Length TM OpCode Status TM Option Transaction Type Code ?? ?? ?? ?? ?? ?? Random Number ?? ATA Page Number ?? CRC NACK Response FF 0B 28 04 0A 00 D0 01 ?? SOH Length TM OpCode Status TM Option Transaction Type Code Options ?? ?? ?? Tag ID ?? ?? ?? CRC 69 Allegro/Title-21 Tag Commands No Response FF 00 28 04 00 SOH Length TM OpCode Status 25 AA CRC TDMA Read Request (28h; E003h) The TDMA Read Request command returns the tag ID from the first tag to respond only. This command contains the following request fields: TDMA Read Request Fields Field Value Description TM OpCode 0x28 TM OpCode for tag modification operations Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options 0x00 Reserved for Future Use. Transaction Type Code 0xE003 Allegro/Title-21 code indicating operation to perform. Options [1 byte] Command specific options Number of Slots [1 byte] Specifies how many slots are available for the tags to choose from. Valid values from 0x01-0xFF Examples An example command is: FF ?? 28 ?? ?? 00 E0 03 ?? ?? SOH Length TM OpCode Timeout (ms) TM Option Transaction Type Code Option Number of Slots ?? ?? CRC ACK Response 70 FF 0B 28 00 00 00 E0 03 ?? SOH Length TM OpCode Status TM Option Transaction Type Code Option ?? ?? ?? Tag ID ?? ?? ?? CRC Allegro/Title-21 Tag Commands NACK Response FF 0B 28 04 0A 00 E0 03 ?? ?? SOH Length TM OpCode Status TM Option Transaction Type Code Options ?? ?? ?? Tag ID ?? ?? CRC No Response FF 00 28 04 00 SOH Length TM OpCode Status 25 AA CRC Jump to Reset Request (2Ch; D203h) The Jump to Reset Request command requests the tag perform a hard reset. The reset will occur the same as a hardware reset and the decision is made by the tag to perform a cold boot or a warm boot by analyzing the first 32 bits of page 0000 in the tag. If the bits are all 0s or all 1s, then a cold boot will be performed, otherwise a warm boot will occur. This command contains the following request fields: Jump to Reset Request Fields Field Value Description TM OpCode 0x2C TM OpCode for tag modification operations Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options 0x00 Reserved for Future Use. Transaction Type Code 0xD203 Allegro/Title-21 code indicating operation to perform. Examples An example command is: FF 05 2C ?? ?? 00 D2 03 SOH Length TM OpCode Timeout (ms) TM Option Transaction Type Code ?? ?? CRC 71 Allegro/Title-21 Tag Commands NACK Response 72 FF 00 2C 04 00 SOH Length TM OpCode Status 65 2E CRC eGo/SeGo Tag Command Set eGo/SeGo Tag Command Set The eGo/SeGo tag commands are used to operate oneGo/SeGo tags and perform operations specific to those tags. These commands can only be used when the Tag Protocol of the reader is set to eGo/SeGo (0x001B or 0x001C) using Set Current Tag Protocol (93h). These commands cannot be run when in Bootloader mode, only in Application mode. eGo/SeGo Tag Commands OpCode Command Name 0x21 Read Tag ID Single (21h) 0x22 Read Tag ID Multiple (22h) 0x24 Write Tag Data (24h) 0x25 Lock Tag Data (25h) 0x28 Read Tag Data (28h) 0x2D Custom Tag Operations (2Dh) 73 eGo/SeGo Tag Command Set Command Syntax All eGo/SeGo tag commands follow the same standard syntax. Each command has the following common fields followed by additional fields required for the specific operation being performed: Standard Request Fields Field Value TM OpCode 0xXX Description TM OpCode as defined in eGo/SeGo Tag Com- mands Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options 0x01 Must be set to 0x01, indicating Command Type and eGo/SeGo specific fields to follow. Command Type [1 byte] Depending on the operation indicates either the Group Select Options to apply or a specific subcommand. Group Select Options The following table defines the Command Type values to use for the desired Group Select Option when performing a Read Tag ID Single (21h), Read Tag ID Multiple (22h) or Write Tag Data (24h). The Group Select Option along with the Select Fields (Byte Address, Byte Mask and Word Data) determine which tags will respond to the specified query. Group Select Options Command Type Value 74 Group Select Option Tag Selection Behavior 0x00 GROUP_SELECT_EQ All tags in the field whose data EQUALS the specified Select Fields will respond. 0x01 GROUP_SELECT_NE All tags in the field whose data does NOT EQUAL the specified Select Fields will respond. 0X02 GROUP_SELECT_GT All tags in the field whose data is GREATER THAN the specified Select Fields will respond. eGo/SeGo Tag Command Set Command Type Value Group Select Option Tag Selection Behavior 0X03 GROUP_SELECT_LT All tags in the field whose data is LESS THAN the specified Select Fields will respond. 0X04 GROUP_UNSELECT_EQ All tags except those in the field whose data EQUALS the specified Select Fields will respond. 0X05 GROUP_UNSELECT_NE All tags except those in the field whose data does NOT EQUAL the specified Select Fields will respond. 0X06 GROUP_UNSELECT_GT All tags except those in the field whose data is GREATER THAN the specified Select Fields will respond. 0X07 GROUP_UNSELECT_LT All tags except those in the field whose data is LESS THAN the specified Select Fields will respond. 75 eGo/SeGo Tag Command Set Read Tag ID Single (21h) The Read Tag ID Single command executes a query for tags matching the criteria specified by the Command Type and subsequent fields and returns the first tag found. Read Tag ID Single Request Fields Field Value Description TM OpCode 0x21 TM OpCode Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options Bit 0 • 1 - Indicates Command Type and additional fields to follow. Bit 4 (LSB=bit 0)) • 0 - Metadata flags must not be passed and Meta Data will not be returned. • 1 - Metadata flags must be passed and the corresponding Metadata shall be returned with the tag EPC. 0x0000 When no flags are set no meta data will be returned, only the tag EPC (including PC bits and tag CRC) 0x0001 When bit 0 is set the Read Count will be returned 0x0002 When bit 1 is set the LQI/RSSI will be returned 0x0004 When bit 2 is set the Antenna ID will be returned 0x0008 When bit 3 is set the Frequency will be returned 0x0010 When bit 4 is set the Timestamp will be returned 0x0020 When bit 5 is set the RFU (ThingMagic Only) will be returned 0x0040 When bit 6 is set the Protocol is returned. Command Type [1 byte] Indicates the Group Select criteria to apply as defined in Group Select Options. Byte Address [1 byte] Byte Mask [1 byte] Word Data [8 bytes] Metadata Flags (to specify more than one OR the values together) 76 eGo/SeGo Tag Command Set Examples An example command: FF 0E 21 SOH Length OpCode ?? ?? 01 00 ?? Timeout (ms) TM Option Command Type Byte Address ?? ?? Byte Mask ?? ?? ?? ?? ?? ?? ?? Word Data ?? CRC ACK Response FF 0C 21 SOH Length OpCode ?? ?? Status 01 ?? TM Option Command Type ?? ?? ?? ?? ?? ?? ?? Tag Data ?? ?? ?? ?? ?? CRC NACK Response FF 02 21 SOH Length OpCode FF 00 ?? ?? Status 01 ?? ?? TM Option Command Type CRC ?? No Response SOH Length 21 TM OpCode 04 00 Status B4 83 CRC Read Tag ID Multiple (22h) The Read Tag ID Multiple command performs a search for the specified period of time then returns the number of tags that have been found. Afterwards, multiple Get Tag Buffer (29h) commands can be sent to receive the found tag IDs. Standard Syntax The search criteria for the Standard Syntax which allows control over the select criteria is specified by the Command Type and subsequent fields. 77 ?? eGo/SeGo Tag Command Set Read Tag ID Multiple Request Fields Field Value Description TM OpCode 0x22 TM OpCode TM Options 0x01 Indicates Command Type and additional fields to follow. Search Flags 0x0000 Reserved for Future Use. Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. Command Type [1 byte] Indicates the Group Select criteria to apply as defined in Group Select Options. Byte Address [1 byte] Byte Mask [1 byte] Word Data [8 bytes] Examples An example command requesting : FF 10 22 01 SOH Length OpCode TM Option 00 00 ?? ?? 00 ?? ?? Search Flags Timeout (ms) Command Type Byte Address Byte Mask ?? ?? ?? ?? ?? Word Data ?? 22 SOH Length OpCode ?? ?? Status 01 00 00 ?? TM Option Search Flags Command Type ?? ?? Tag IDs Detected 78 02 22 SOH Length OpCode ?? ?? Status 01 ?? ?? TM Option Command Type CRC ?? CRC NACK Response FF ?? ?? ?? CRC ACK Response FF ?? ?? ?? ?? eGo/SeGo Tag Command Set No Response FF 00 SOH 22 Length 04 00 TM OpCode 84 Status E0 CRC Minimal Syntax The Read Tag ID Multiple command can also be used in a reduced syntax format. In this case only the Timeout is specified. This syntax performs a search for the specified period of time with no selection criteria, returning the number of tags that have been found. Example FF 02 22 03 E8 SOH Length OpCode Timeout (ms) E5 6A CRC An example response is as follows: FF 01 22 SOH Length OpCode 00 00 Status 02 # Tag IDs Found 46 BA CRC Write Tag Data (24h) The Write Tag Data command writes data to a tag. The tag to write to, the location and the data to write are specified in the fields as defined below: 79 eGo/SeGo Tag Command Set Write Tag Data Request Fields Field Value Description TM OpCode 0x24 TM OpCode Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options [1 byte] excluding bits 5&6 (LSB = bit 0) Note: TM Options field combines bits 0-4 indicating the verification method and bits 5 & 6 for authentication information. For the final TM Options setting, the two “fields” should be OR’d. • 0x00 = A READ is executed after the WRITE has reported success for verification. Lock if requested. Note: When 0x00 the Command Type is implicity = 0x0D and the Command Type 1 byte field should be removed from the request command. • 0x01 = No verification is executed after WRITE reports success. • 0x02 = A READ_VERIFY is executed after the WRITE reports success for verification. • 0x03 = Only used with Command Type = 0x0E or 0x93. Indicates extra Select fields will be specified. bits 5 & 6 (LSB = bit 0) Specify authentication method to use: • 0x00 = authentication is disabled and Key values must not be passed. • 0x20 = RFU • 0x40 = authentication is enabled and Key values must be passed. • 0x60 = RFU Command Type Note: If TM Options bits 0-4=0 then the Command Type is implicity = 0x0D and this byte should not be specified in the request command. 80 0x0D Indicates the eGo/SeGo Write by Byte operation will be used. 0x8D Indicates the eGo/SeGo Write by Page operation will be used 0x0E Indicates the eGo/SeGo Write Multiple operation will be used. 0x93 Indicates the eGo/SeGo Streamlined Group Select Equal Page Write operation will be used. eGo/SeGo Tag Command Set Field Lock Value [1 byte] Description • 0x00 = no lock • 0x01 = lock the data specified by Write Data Write by Page won’t lock if authentication information is not specified. Write multiple won’t lock Write Address [1|4byte] Indicates the start address of tag memory to be written: • 4 Byte Address when TM Option = 0xX0 • 1 Byte Address otherwise Select Command Type [1 byte] Indicates the Group Select criteria to apply as defined in Group Select Options. Only passed when TM Option=0x03. For Command Type = 0x0E, indicates Select Type For Command Type = 0x93, RFU Select Address [1 byte] Only passed when TM Option=0x03. Select Mask [1 byte] Only passed when TM Option=0x03. For Command Type = 0x0E, indicates Select Mask For Command Type = 0x93, RFU Tag ID | Select Data [8 bytes] When: • Command Type = 0x0D, 0x0E or 0x8D: 8 bytes = Tag ID • Command Type = 0x93 AND TM Options=0x03: [1 byte] = Select Data [7 bytes] = RFU • Command Type = 0x93 AND TM Options=0x01 or 0x02 [1 byte] = Select Address [1 byte] = Select Data [6 bytes] = RFU Write Data [1|8 byte] Indicates the data to be written to the specified tag starting at the specified address. • 1 Byte when Command=0x0D and 0x0E • 8 Bytes (1 page) when Command=0x8D and 0x93 Key Address [1 byte] Only passed when authentication enabled in TM Options. Key Length in Bytes [1 byte] Only passed when authentication enabled in TM Options. 81 eGo/SeGo Tag Command Set Field Value Key Description [0-N bytes] Only passed when authentication enabled in TM Options. Note: Value passed with MSB first. Examples An example command requesting : FF 0F 24 ?? ?? 01 0D SOH Length OpCode Timeout (ms) TM Option Command Type ?? ?? Lock Write Address ?? ?? ?? ?? ?? ?? ?? ?? Tag ID ACK Response When Command Type = 0x0D or 0x0E, FF 03 24 ?? ?? SOH Length OpCode Status ?? 0D | OE ?? TM Option Command Type Verified Write Data ?? ?? CRC When Command Type = 0x8D FF 0A 24 SOH Length OpCode ?? ?? Status ?? 8D TM Option Command Type ?? ?? ?? ?? ?? ?? ?? ?? ?? Verified Write Data ?? CRC When Command Type = 0x93 FF 13 24 SOH Length OpCode ?? ?? Status ?? 93 ?? TM Option Command Type Tag ID Length ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? Tag ID (length defined by ID Length) Verified Write Data Note ACK Status will be: 0x0000 FAULT_SUCCESS_CODE 0x0403 FAULT_WRITE_PASSED_LOCKED_FAILED 82 ?? CRC ?? ?? ?? Write Data CRC ?? eGo/SeGo Tag Command Set NACK Response FF 02 24 SOH Length OpCode ?? ?? Status 01 TM Option 0D ?? Command Type ?? CRC No Response FF 00 SOH Length 24 TM OpCode 04 00 Status E4 26 CRC Lock Tag Data (25h) The Lock Tag Data command locks and unlocks a tag’s memory locations. The tag to (un)lock and memory location to be (un)locked are specified in the fields as defined below: Lock Tag Data Request Fields Field Value Description TM OpCode 0x25 TM OpCode Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options 0x01 Indicates Command Type and additional fields to follow. Note: TM Options field bits 5 & 6 (LSB = bit 0) Specify authentication method to use: • 0x00 = authentication is disabled and Key values must not be passed. combines bit 0 indicating general processing information and bits 5 & 6 indicating authentication method. For the final TM Options setting, the two “fields” should be OR’d. • 0x20 = RFU • 0x40 = authentication is enabled and Key values must be passed. • 0x60 = RFU 83 eGo/SeGo Tag Command Set Field Value Command Type Description 0x00 Performs a QueryLock, immediate followed by an UnLock 0x01 Performs a QueryLock, immediate followed by a Lock 0x0F LockByte operation. Performs QLock/Lock/QLock 0x10 UnLock Byte. Performs QLock/UnLock/QLock 0x11 QueryLock 0x8F Lock Page. Performs QLock/Lock/QLock 0x90 UnLock Page. Performs QLock/UnLock/QLock Lock Address [1 byte] Indicates the address of tag memory to be (un)locked. Tag ID [8 byte] Indicates the Tag ID of the tag to be (un)locked. Key Address [1 byte] Only passed when authentication enabled in TM Options. Key Length in Bytes [1 byte] Only passed when authentication enabled in TM Options. Key [0-N bytes] Only passed when authentication enabled in TM Options. Note: Value passed with MSB first. Examples An example command requesting : FF 0D 25 ?? ?? 01 0F SOH Length OpCode Timeout (ms) TM Option Command Type 84 ?? Lock Address ?? Tag ID ?? ?? ?? ?? ?? ?? ?? ?? CRC ?? eGo/SeGo Tag Command Set ACK Response When Command Type = 0x00 or 0x01 FF 03 25 ?? ?? SOH Length OpCode ?? Status 00 | 01 TM Option ?? Command Type ?? (Un)Lock Response ?? CRC When Command Type = all others FF 04 25 ?? ?? SOH Length OpCode Status ?? ?? TM Option ?? Command Type Lock Response ?? ?? Query Lock Response CRC ?? NACK Response FF 03 SOH Length 25 ?? ?? OpCode Status ?? TM Option ?? ?? Command Type Lock Response ?? ?? CRC No Response FF SOH 00 Length 25 TM OpCode 04 00 Status F4 07 CRC Note For eGo Plus tags a key must be provided for lock/unlock operations. If a key is not provided then the tag will not respond. In that case a status=0x0400 is the expected command response. Read Tag Data (28h) The Read Tag Data command reads data from a tag. The tag to read from and the location to read the data from are specified in the fields as defined below: 85 eGo/SeGo Tag Command Set Read Tag Data Request Fields Field Value Description TM OpCode 0x28 TM OpCode Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options [1 byte] Indicates Command Type and additional fields to follow: • 0x01 = For Standard Read Operations bits 5 & 6 (LSB = bit 0) Specify authentication method to use: • 0x00 = authentication is disabled and Key values must not be passed. Note: TM Options field combines bits 0-4 indicating general processing information and bits 5 & 6 indicating authentication method. For the final TM Options setting, the two “fields” should be OR’d. Command Type • 0x20 = RFU • 0x40 = authentication is enabled and Key values must be passed. • 0x60 = RFU 0x0C eGo/SeGo Read, or Protected Read 0x0B eGo/SeGo Data_Read 0x12 eGo/SeGo Read_Verify Note: Requires a Write to occur immediately before. 0x80 eGo/SeGo Streamline_Group_Select_Equal_Page_Read Note: Only works with eGo Plus tags. 0x92 eGo/SeGo Read_Verify_Page Note: Requires a Write to occur immediately before. RFU [1 byte] Reserved for Future Use Read Byte Count [1 byte] Number of bytes starting at Read Address to read. Can request 1 to 8 bytes. Read Address [1 byte] Indicates the start address of tag memory to be read. 86 eGo/SeGo Tag Command Set Field Value Tag ID | Select Data Description [8 bytes] When: • Command Type = 0x0B, 0x0C, 0x12 or 0x92: 8 bytes = Tag ID • Command Type = 0x80 [1 byte] = Select Address [1 byte] = Select Data [6 bytes] = RFU Key Address [1 byte] Only passed when authentication enabled by TM Options. Key Length in Bytes [1 byte] Only passed when authentication enabled by TM Options. Key [0-N bytes] Only passed when authentication enabled by TM Options. Note: Value passed with MSB first. Examples An example command requesting : FF 0F 28 SOH Length OpCode ?? ?? Timeout (ms) 01 0C ?? ?? ?? TM Option Command Type RFU Read Byte Count Read Address ?? ?? ?? ?? ?? ?? ?? ?? Tag ID CRC ACK Response FF ?? 28 ?? ?? SOH Length OpCode Status 01 0C TM Option Command Type ?? Read Data ?? ?? CRC When Command Type = 0x80 FF ?? 28 SOH Length OpCode ?? ?? Status ?? 80 ?? TM Option Command Type Tag ID Length ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? Tag ID (length defined by ID Length) Read Data CRC ?? 87 ?? eGo/SeGo Tag Command Set NACK Response FF 02 28 SOH Length OpCode ?? ?? Status 01 TM Option 0C ?? Command Type ?? CRC No Response FF SOH 00 28 Length TM OpCode 04 00 Status 25 AA CRC Custom Tag Operations (2Dh) The Custom Tag Operations command provides access to several eGo/SeGo tag specific operations including: Fail, Success, Initialize, Resend, Read_All_Data, Read_All_Lock, and RN_Request. The operation to be performed is indicated by the Command Type field: Custom Tag Operations Request Fields Field 88 Value Description TM OpCode 0x2D TM OpCode Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options 0x01 Indicates Command Type to follow. Command Type 0x08 Fail 0x09 Success 0x0A Initialize 0x15 Resend 0x81 RN Request 0x82 Tag Authentication. When specified the Key fields also must be passed. 0x83 Mutual Authentication. When specified the Key fields also must be passed. eGo/SeGo Tag Command Set Field Value Description Key Address [1 byte] Only passed when Command=0x82 or 0x83. Key Length in Bytes [1 byte] Only passed when Command=0x82 or 0x83. Key [0-N bytes] Only passed when Command=0x82 or 0x83. Note: Value passed with MSB first. Examples An example command requesting : FF 04 2D SOH Length OpCode ?? ?? Timeout (ms) 01 TM Option 0C ?? Command Type ?? CRC ACK Response FF 05 2D SOH Length OpCode ?? ?? Status 01 TM Option 0C Command Type ?? ... NN Tag Data (0-N based on Command Type) ?? ?? CRC NACK Response FF 02 2D SOH Length OpCode ?? ?? Status 01 TM Option ?? ?? Command Type ?? CRC No Response FF SOH 00 Length 2D TM OpCode 04 00 Status 75 0F CRC 89 eGo/SeGo Tag Command Set 90 ATA Tag Command Set ATA Tag Command Set The ATA tag commands are used to perform operations specific to ATA tags. These commands can only be used when the Tag Protocol of the reader is set to ATA (0x001D) using Set Current Tag Protocol (93h). These commands cannot be run when in Bootloader mode, only in Application mode. ATA Tag Commands OpCode 0x21 0x22 Command Name Read Tag ID Single (21h) Read Tag ID Multiple (22h) [Not yet Implemented] 91 ATA Tag Command Set Command Syntax All ATA tag commands follow the same standard syntax. Each command has the following common fields followed by additional fields required for the specific operation being performed: Standard Request Fields Field 92 Value Description TM OpCode 0xXX TM OpCode as defined in ATA Tag Commands Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. ATA Tag Command Set Read Tag ID Single (21h) The Read Tag ID Single/Tag Detect command performs a search operation and returns the first ATA tag it finds. Read Tag ID Single Request Fields Field Value Description TM OpCode 0x21 TM OpCode Timeout [2 bytes] Indicates how long the command should spend attempting the operation, in milliseconds. TM Options Bit 4 (LSB=bit 0)) Note: This and following • 1 - Metadata flags must be passed and the corresponding Metadata shall be returned with the tag EPC. fields are optional. Metadata Flags (to specify more than one OR the values together) • 0 - Metadata flags must not be passed and Meta Data will not be returned. 0x0000 When no flags are set no meta data will be returned, only the tag EPC. 0x0001 When bit 0 is set the Read Count will be returned 0x0002 When bit 1 is set the LQI/RSSI will be returned 0x0004 When bit 2 is set the Antenna ID will be returned 0x0008 When bit 3 is set the Frequency will be returned 0x0010 When bit 4 is set the Timestamp will be returned 0x0020 When bit 5 is set the RFU (ThingMagic Only) will be returned 0x0040 When bit 6 is set the Protocol is returned. Examples An example, without TM Options, command: FF 02 SOH Length 21 OpCode ?? ?? ?? Timeout (ms) CRC ?? 93 ATA Tag Command Set ACK Response FF 0A 21 ?? ?? SOH Length OpCode ?? ?? ?? ?? Status ?? ?? Tag ID 00 21 SOH Length OpCode ?? ?? Status ?? ?? CRC No Response FF SOH 00 Length 21 TM OpCode Read Tag ID Multiple (22h) [Not yet implemented] 94 04 00 Status B4 CRC ?? ?? CRC NACK Response FF ?? 83 ?? Gen2 Tag Commands Gen2 Tag Commands The Gen2 tag commands are used to operate on Gen2 tags and perform operations specific to those tags. These commands can only be used when the Tag Protocol of the reader is set to Gen2 (0x0005) using Set Current Tag Protocol (93h). These commands cannot be run when in Bootloader mode, only in Application mode. Gen2 Tag Commands OpCode Command Name Arguments Return BL App 0x21 Read Tag Single (21h) Timeout (ms) Tag ID 0x22 Read Tag Multiple (22h) Timeout (ms), Antennas Flag Multiple Tag IDs 0x23 Write Tag EPC (23h) Timeout (ms), lock bit, password, tag ID None 0x24 Write Tag Data (24h) Timeout (ms), lock bit, address, data None 0x25 Lock Tag (25h) Timeout (ms), protocol specific data None 0x26 Kill Tag (26h) Timeout (ms), protocol specific data None 0x28 Read Tag Data (28h) Timeout (ms), Address, Tag ID Tag data 0x29 Get Tag Buffer (29h) various various 0x2A Clear Tag Buffer (2Ah) none none 0x2D Gen2 Tag Specific (2Dh) Timeout (ms), Chip Type, option, Kill password, Access password, Tag ID none 0x2E Erase Block Tag Specific (2Eh) Timeout (ms), chip type, option addr, mem bank, number of words to erase none 95 Gen2 Tag Commands Tag Singulation/Select Functionality Many of the Gen2 tag commands now support the ability to singulate a specific tag or inventory only tags matching a defined criteria, i.e. matching on values in the EPC, TID and User Memory banks. Select Algorithm and Parameters The algorithm used to perform a Gen2 Select and its impact on subsequent Gen2 Query operations on a population of tags is determined by several user defined settings which either correspond directly to or are used to determine the various Gen2 Select and Query parameters as defined by the EPCGlobal Gen2 v1.2 Specification. The current user controlled options are: Gen2 Session (User Controlled) This setting determines which tag inventory flag is altered when a tag responds to a Gen2 Query (each flag has a unique persistence profile, as defined by the Gen2 Specification). The value of Gen2 Session is set using the Set Protocol Configuration (9Bh) command. The supported values are 0, 1, 2, or 3. Select Invert (User Controlled) This setting is used to determine the Gen2 Action value sent in the Gen2 Select command. The value of Select Invert is defined using bit 3 of the Select Option field in the Tag Singulation Fields. The supported values are: 0 (False) - Tags which match the Select criteria are to respond. Set Gen2 Action=0. 1 (True) - Tags which DO NOT match the Select criteria are to respond. Set Gen2 Action=4. The settings specified for Gen2 Session and Select Invert determine the settings within the Select command which is sent before the corresponding Gen2 Query and the settings in the subsequent Gen2 Query(s). These implicit settings used by the Gen2 Select are: Gen2 Action (defined by Select Invert) This parameter can be one of 8 values, as defined by the Gen2 specification, which determine which of 4 possible flag actions (assert, de-assert, negate, or leave alone) will be done if the criteria matches and, similarly, which of the 4 possible flag actions will be done if the criteria does not match. Only two values are currently used: 96 Gen2 Tag Commands 0 - Assert (or put in state “A” for inventory flags) the target flag if there IS a match; de-assert (or put in state “B” for inventory flags) the target flag if there IS NOT a match. 4 - Assert (or put in state “A” for inventory flags) the target flag if there IS NOT a match; de-assert (or put in state “B” for inventory flags) the target flag if there IS a match Gen2 Target (Static) This setting determines which inventory flag or SL flag is going to have its state determined by the matching algorithm. Currently always set to ‘4’, indicating the Gen2 Select command modifies a tag’s SL flag. The following table defines the currently supported User Settings and the resulting behavior of the Gen2 Select and Gen2 Query: Gen2 Select and Query Behavior User Settings • Gen2 Session = 0,1,2,3 • Invert = 0 Select Behavior Gen2 Select Settings: • Target = 4 • Action = 0 If tags match the criteria, put their SL flag in the ‘Assert’ state; and SL of non-matching tags into the ‘De-assert’ state. • Gen2 Session = 0,1,2,3 • Invert = 1 Gen2 Select Settings: • Target = 4 • Action = 4 If tags match the criteria, put their SL flag in the ‘Deassert’ state; and SL of non-matching tages into the ‘Assert’ state. Query Behavior Gen2 Query Settings: • SEL = 3 • Target = “A” • Session = [User Defined] Ask tags to respond if their SL flag is in the ‘Assert’ state and their session appropriate inventory flag is in the ‘A’ state. Once a tag responds, it puts the inventory flag in the ‘B’ state, preventing further matches until the inventory flag’s Comments Tag state persistence before a Query is based on SL flag persistence; Tag state persistence after a Query is based on inventory flag corresponding to the Session used. Flag Persistence Rules returns it to the ‘A’ state. Select Process The following defines how the Select process works when attempting to select tags that match a defined criteria: 97 Gen2 Tag Commands 1. The Reader issues a Select containing the desired tag memory values and instructions for the tag to assert if its contents matches that specified in the request (and, conversely, de-assert the SL flag if it does not match) as defined by the Tag Singulation Fields. The de-assert will generally have no effect because the deasserted state is the default, but is helpful if tags still have their SL flag asserted from a previous Select. – Tags that are selected, at this point, are not selected within a specific Session. The persistence of their state depends entirely on that of the SL flag. 2. A Query is issued which specifies the flag settings which must match before a tag will respond: – The SL flag must be asserted – The Session flag for session 0, 1, 2, or 3 (specific Session value is in the Query and depends on the reader’s Session setting) must be ‘A’ (the default value). 3. Matching tags will respond to the Query, but after responding, will change their own state in the following way: – The Inventory flag corresponding to the Session specified in the Query will be changed to the ‘B’ state. – The SL flag will remain asserted (per its ongoing Flag Persistence Rules) 4. If subsequent indentical Queries are issued (identical to the first), this tag will remain silent until the Flag Persistence Rules for the inventory flag that was put into the ‘B’ state cause the flag to fall back into the ‘A’ state. At that point, the tag will respond again (assuming that the persistence rules of the SL flag are still keeping it in the ‘assert’ state). Note A search with Invert=1 specified will perform the same steps except in step 1 the tag will “de-assert if its contents matches that specified in the request (and, conversely, assert the SL flag if it does not match) as defined by the Tag Singulation Fields.” Note A Select will be performed once per antenna when Select is specified during a Read Tag Multiple (22h) with multiple antennas configured. Flag Persistence Rules Session 0 Keeps state as long as tag is energized 98 Gen2 Tag Commands Returns to default state as soon as the tag is no longer energized Its state will often get reset during the course of executing a single command, for example, between inventory rounds, or when there is a frequency hop, or when a new antenna is selected during a Read Tag Multiple search. the result is that when the session is set to ‘0’, all tags will respond to every appropriate Query, considerably lengthening the time to inventory a large population of tags. Session 0 is typically used for operations where a single tag is expected to be in the field, for example, printers. Session 1 Keeps its state between 0.5 and 5 seconds, regardless of whether the tag is energized or not. The intent is that when the session is set to 1 the tag will respond to an appropriate Query immediately, and then respond periodically if the Query is repeated by the reader. This allows a larger population of tags to be reliable read. Session 1 is typically used in applications where a large population of tags is being continuously inventoried allowing for it to be determined when tags enter and leave the field. Session 2, 3 and SL Flags Keeps state as long as the tag is energized. Keeps its state for at least 2 seconds after the tag is no longer energized and will refresh its state if the tag is re-energized during that period. The intent is that when the session is set to ‘2’ or ‘3’ a tag will only respond once to an appropriate Query, then remain silent as the Query is repeated by the reader to elicit responses from other tags. Typically used in operations when you are performing an action on tag or population of tags which you do not want/need repeated. Operations supporting Tag Singulation/Select The commands currently supporting tag singulation through Select are: Read Tag Single (21h) Read Tag Multiple (22h) Write Tag Data (24h) Lock Tag (25h) Kill Tag (26h) 99 Gen2 Tag Commands Read Tag Data (28h) The following fields apply to all the specified commands. Please check each command for exact order, and any exceptions, as they may not all correspond with the order below. Tag Singulation Fields Field Select Option Select Address Values Description 0x00 Select functionality is disabled. First tag found will be the tag operated on. No other Tag Singulation Fields should be specified. Option field must always be specified. 0x01 Select on the value of the EPC. Requires all fields except the Select Address field. 0x02 Select on contents of TID memory bank (Gen2 bank 0x02). Requires all fields. 0x03 Select on contents of User Memory memory bank (Gen2 bank 0x03). Requires all fields. 0x04 Select on contents of the EPC memory bank (Gen2 bank 0x01). Requires all fields. 0x08 Sets Invert Flag. This results in tags NOT matching the specified Tag Singulation Fields will be returned, as defined in Select Algorithm and Parameters. 4 bytes Contains the offset, in bits, within the memory bank, specified by the Option value, at which the comparison is to start. NOTE: specifying Option=0x04 and Select Address=0x20 is the equivalent, for Gen2 v1 tags, of specifying Option=0x01, both specify a comparison against the tag EPC ID data. Note: Addresses are always zero-based. Specifying 0x00 indicates starting at the first address location. 100 Select Data Length 1 byte Contains the length of the data (Select Data) to be compared, in bits, to the EPC when Option=0x01, or to the data beginning at Select Address for other options. Select Data M bytes Contains the data to be compared against the specified tag data (memory bank and address, or EPC as specified by the Option value) Gen2 Tag Commands Read Tag Single (21h) The Read Tag Single command will search for a tag for the specified timeout or a single tag is found, whichever comes first. The search criteria is specified using the Tag Singulation Fields. If Option=0x00 is specified it will return with the first tag it finds, otherwise it will only return Success and the found EPC if a tag matching the specified criteria is found. If no tag is read, a fault code is returned. In addition to the Tag Singulation Fields the basic Read Tag Single command takes a 16bit timeout value in milliseconds. The command will return after a tag is found or the timeout expires, whichever happens first. The basic syntax which returns only the tag EPC is defined in Get Tag EPC. With additional Option bits set Read Tag Single can also return Tag Read Meta Data using the syntax in Get Tag EPC and Meta Data. Get Tag EPC The following example shows a search requesting a tag matching the following criteria for a max timeout of 1000 ms. This example uses the Tag Singulation/Select Functionality with Option=0x03, indicating Tag Selection based on the contents of User Memory, specifically: Memory Bank = User Memory. Starting Address = bit 32 Select Data = 0x1234 FF 0A 21 03 E8 03 SOH Length OpCode Timeout (ms) Option 00 00 00 Select Address 20 10 Select Data Length 12 34 E5 Select Data AC CRC If Option=0x00 or 0x01 were used then the unused Tag Singulation Fields must be removed from the request. The response to this command varies depending upon the number of bits in the tag EPC of the tag found. The general response format is shown here: 101 Gen2 Tag Commands FF M+3 21 SOH Length OpCode 00 00 Status 03 M bytes Option EPC ?? ?? TagCRC ?? ?? CRC Get Tag EPC and Meta Data In addition to getting the tag EPC value returned you can also get Tag Read Meta Data for the found tag. This version of Read Tag Single requires bit 4 of the Option flag to be set and takes an additional Metadata Flags field which defines what metadata will be returned The following table lists the supported values for these fields. 102 Gen2 Tag Commands Read Tag Single Get EPC and Metadata Request Fields Field Option Value Description Bit 4=0 (0x0X) No Metadata flags are specified and Meta Data will not be returned. This is the Get Tag EPC syntax. The lower bits (X) are specified as defined by Tag Singulation/Select Functionality. Bit 4=1 (0x1X) Indicates that Metadata flags are to follow and the corresponding Metadata shall be returned with the tag EPC. The lower bits (X) are specified as defined by Tag Singulation/Select Functional- ity. Metadata Flags (to specify more than one OR the values together) 0x0000 When no flags are set no meta data will be returned, only the tag EPC (including PC bits and tag CRC) 0x0001 When bit 0 is set the Read Count will be returned 0x0002 When bit 1 is set the LQI/RSSI will be returned 0x0004 When bit 2 is set the Antenna ID will be returned 0x0008 When bit 3 is set the Frequency will be returned 0x0010 When bit 4 is set the Timestamp will be returned 0x0020 When bit 5 is set the RFU (ThingMagic Only) will be returned 0x0040 When bit 6 is set the Protocol is returned. These fields are followed by the Tag Singulation/Select Functionality, used the same as defined in the Get Tag EPC syntax, if necessary. A response can contain the following information: 103 Gen2 Tag Commands Read Tag Single Get EPC and Metadata Response Fields Field Length Value SOH 1 byte 0xFF Length 1 byte Based on data returned OpCode 1 byte 0x21 Options 1 byte As sent in request Metadata Flags 2 bytes Metadata contained in response Read Count1 1 byte Tag EPC/Antenna Read Count RSSI1 1 byte Return Signal Strength Indicator Antenna ID1 1 byte Antenna ID, 4 MSBs for TX and 4 LSBs for RX Frequency1 3 bytes Frequency in kHz Timestamp1 4 bytes RTC Timestamp RFU1 2 bytes Reserved for Future Use - ThingMagic Only Protocol ID 1 byte Protocol ID of tag read EPC ID N bytes Tag EPC. Tag CRC 2 bytes Tag EPC CRC CRC 2 bytes Message CRC 1 - Conditionally returned depending on the Metadata Fields specified in the request. An example command requesting AntennaID and Timestamp 104 Gen2 Tag Commands Metadata Flags = 0x0004 OR 0x0010 = 0x0014 with no tag singulation criteria, just return the first tag found, is as follows: FF 05 21 01 SOH Length OpCode E8 10 Timeout 00 Options 14 2F Metadata Flags 6D CRC Here is an example response to the example request specified above. The response contains the tag EPC info of the found tag and the requested tag read metadata: AntennaID and Timestamp: 11 Ant ID FF 16 21 SO Length OpCode 00 5F Timestamp 04 00 00 Status 01 23 10 00 Options 45 14 Metadata Flags 67 89 EF Tag EPC 37 01 23 45 67 E6 C8 Tag CRC C4 CRC Here is another example request and response showing the use of Tag Singulation/Select Functionality and getting the tag metadata for the specified tag: This command requests the same tag read metadata as the previous example (AntennaID and Timestamp) except now it is selecting a tag with a specific EPC value (EPC=0x111122223333444455556666), which requires adding the appropriate Tag Singulation Fields after the Read Tag Single Get EPC and Metadata Request Fields along with 105 Gen2 Tag Commands updating the Option field to set the appropriate flag for the tag singulation based on EPC value FF 12 21 SOH Length OpCode 60 11 01 E8 11 Timeout 11 22 22 Options 33 Select Data Length 00 33 44 14 Metadata Flags 44 55 55 66 9F 66 Select Data (EPC) CRC The response contains the requested metadata and the tag EPC matching the requested tag EPC: 22 Ant ID FF 16 21 SOH Length OpCode 0F C8 CD B7 00 00 Status 11 11 00 Options 11 Timestamp 22 14 Metadata Flags 22 33 33 44 44 55 55 Tag EPC FE 66 66 18 35 Tag CRC 7D CRC Read Tag Multiple (22h) The Read Tag Multiple command supports several different levels of functionality. In addition to performing a Basic Search Operation for all tags in the field it can also perform advanced searching and perform operations on the tags found. The different syntax for Read Tag Multiple are defined as follows: Basic Tag Inventory - Searches for and returns all tags in the field. Tag Inventory with Select - Searches for and returns all tags in the field meeting Select criteria as defined by Tag Singulation Fields specified. Tag Inventory With Embedded Operations - Allows for operations (Write Tag Data, Lock Tag, Kill Tag, Read Tag Data) to be performed on each tag inventoried. 106 Gen2 Tag Commands Basic Tag Inventory The Read Tag Multiple command performs a search for the specified period of time then returns the number of tags that have been found. Afterwards, multiple Get Tag Buffer commands can be sent to receive the found tag EPCs along with tag read metadata, including the antenna the tag was read on. The command allows the user to specify the method to use when multiple monostatic antennas are connected. The user can set the two byte Search Flag to enable automatic Multi-Antenna Search: 107 Gen2 Tag Commands Read Tag Multiple Search Flags Antenna Usage Flag Value 0x0000 Use single antenna as configured by the most recent Set Antenna command. 0x0001 Automatically search on both monostatic antennas, starting with Antenna 1. The search cycles through antennas moving to the next antenna when no more tags are found on the current antenna. It stops when the search timeout expires. 10x0002 Automatically search on both monostatic antennas, starting with Antenna 2. The search cycles through antennas moving to the next antenna when no more tags are found on the current antenna. It stops when the search timeout expires. 0x0004 An embedded command is specified in the request and will be executed on each inventoried tag. Note: This bit should only be set when using the Tag Inventory With Embedded Operations syntax. Note: 1- Only one of these flags should be set since both Antenna 1 and 2 cannot be the starting antenna. 2 -Multiple Flags can be set (perform a binary OR) to specify different behaviors. ex: Search Flags = 0x0006 indicates a multiple antenna search starting on antenna1 is to be performed and the embedded command specified it to be executed on each tag. For example, the syntax for a Read Tag Multiple with automatic multi-antenna search starting with antenna1 is: FF 04 22 00 01 03 E8 SOH Length OpCode Antennas Flag Timeout (ms) 3F 8E CRC The response format for both is the following: 108 FF 01 22 SOH Length OpCode 00 00 Status 02 # Tag IDs Found 46 BA CRC Gen2 Tag Commands Tag Inventory with Select If you want to inventory only tags meeting a specific criteria this syntax should be used. The search criteria is specified using the Tag Singulation Fields. If Option=0x00 is specified it will perform the same search as the Basic Tag Inventory syntax. Otherwise, it will return the number of tags found matching the specified criteria. The tag EPCs and Meta Data will be available in the Tag Buffer. If no tags are found, a fault code is returned. The required fields are as follows: Read Tag Multiple with Select Fields Field Value Description Select Options [1 byte] The Options value of the Tag Singulation Fields Search Flags [2 bytes] Read Tag Multiple Search Flags indicating antenna usage. Bit 3 must be 0, no embedded commands. Timeout [2 bytes] Indicates how long the command should spend searching. Access Password [4 bytes] The Access Password of the tags expected to be inventoried, if they are locked. If the tags are not locked specify 0x00000000. Note: If the memory used for tag singulation of inventoried flags is read locked and have different passwords, only tags with matching passwords will be successfully inventoried. The remaining, appropriate fields depending on the value of Select Options. Tag Singulation Fields Here is an example request and response showing the use of Tag Singulation/Select Functionality to inventory tags which meet a specific criteria: This command will inventory all tags with an EPC value ending in 0x66, which requires adding the appropriate Tag Singulation Fields to the Basic Tag Inventory syntax FF 0F 22 04 SOH Length OpCode Options (EPC Mem) 00 00 Search Flags 03 E8 Timeout 109 Gen2 Tag Commands 00 00 00 Access Password 00 00 00 00 78 Select Address (bits) 08 66 Select Data Length (bits) Select Data C0 CRC Note The Select Options field of the Tag Singulation Fields in the request is specified at the beginning of the command followed by the Search Flags, Timeout, Access Password then the rest of the Tag Singulation Fields. This is different than the typical format for Select fields. Also, this syntax always requires an Access Password be specified. If the tags are not locked it can be set to 0x00000000 The response contains the number of tags found matching the Select criteria specified. Use Get Tag Buffer (29h) to access the tag EPCs and Tag Read Meta Data: FF 04 22 SOH Length OpCode 00 00 Status 04 Options (EPC Mem) 00 00 Search Flags 02 Tag Found B7 6E CRC Tag Inventory With Embedded Operations In addition to inventorying tags, Read Tag Multiple can be used to perform an operation on each tag in a population of tags. Starting with the Tag Inventory with Select syntax to define the population of tags the operation is to be performed on, the Search Flag bit 3 (0x0004) can be set to indicate embedded commands are to be performed on the inventoried commands. The required fields are as follows: 110 Gen2 Tag Commands Read Tag Multiple Embedded Command Fields Field Value Description Select Options [1 byte] The Options value of the Tag Singulation Fields Search Flags [2 bytes] Bit 3 of the Read Tag Multiple Search Flags must be set indicating this request contains embedded command(s). Timeout [2 bytes] Indicates how long the command should spend searching AND performing the embedded command. It may be desirable to specify a longer timeout if a large number of tags are likely to get the embedded command executed on them. Access Password [4 bytes] The Access Password of the tags expected to be inventoried, if they are locked. If the tags are not locked specify 0x00000000. Note: If inventoried flags are locked and have different passwords, only tags with matching passwords will get a successful execution of the embedded command. Tag Singulation Fields The remaining, appropriate fields depending on the value of Select Options. Embedded Command Count [1 byte] The number of embedded commands to follow. [Currently only supports one] Embedded Command Length [1 byte] Length of embedded commands. Follows standard Length value calculation: number of bytes after OpCode. Embedded Command OpCode [1 byte] The OpCode of the embedded command. Currently supports: • Write Tag Data (24h) • Lock Tag (25h) • Kill Tag (26h) • Read Tag Data (28h) The fields and values required by the embedded command. Note: The embedded commands do not support Tag Singulation as it is already performed during the inventory operation. The Options field for the embedded command must be 0x00. Note: The Timeout field for embedded commands must be 0x0000. Here is an example request and response showing the use of Tag Singulation/Select Functionality to inventory tags which meet a specific criteria and then setting the Access 111 Gen2 Tag Commands password on each using Write Tag Data (24h) as an embedded command: This command will inventory all tags with an EPC value ending in 0x34, which requires adding the appropriate Tag Singulation Fields to the Basic Tag Inventory syntax then will use Write Tag Data (24h) to write 0x12345678 into the Reserved Memory Bank starting at Word address 0x00000002 (Access Password) FF 1E 22 04 00 SOH Length OpCode Options (EPC Mem) 04 Search Flags 03 01 0C 24 Embd Cmd Count Embd Cmd Length Embd Cmd OpCode 03 E8 00 Timeout E8 Embd Cmd Timeout (Not Used) 00 00 00 Access Password 00 00 Embd Cmd Options (Must be 0x00) 00 00 00 00 00 78 Select Data Address (bits) 02 Write Address (Words) 00 12 Write MemBank 34 08 34 Select Data Length (bits) Select Data 56 78 ?? Write Data ?? CRC The response contains the number of tags found matching the Select criteria specified and the number of embedded command operations which succeeded and failed. Use Get Tag Buffer (29h) to access the tag EPCs and Tag Read Meta Data for the Tags Found. Tags in the buffer may or may not have had successful execution of the embedded command on them: FF 0A 22 SOH Length OpCode 00 00 Status 04 Options 00 04 Search Flags 03 01 24 Tag Found Embd Cmd Count Embd Cmd OpCode 00 03 Operations Succeeded 00 00 ?? Operations Failed Note Depending on the Gen2 Session/User Mode used the Operations Succeeded/Failed counts can be misleading since in Session 0, for example, the tag may respond many times during an inventory round and the command may be attempted many times. This would result in counts higher than the actual number of tags the operation succeeded or failed on. The above commands were run in User Mode = Portal. Write Tag EPC (23h) The Write Tag EPC command takes the following data elements: 112 ?? CRC Gen2 Tag Commands FF M+4 SOH 23 Length OpCode 03 E8 Timeout (ms) 00 00 RFU M bytes RFU ?? ?? CRC Tag EPC (M bytes) 1.16-bit timeout value in milliseconds. Due to tag difference some tags may require more time to write than others. Experimentation may be required to determine the optimal timeout. 2.Reserved for Future Use, this field is required but ignored. 3.Reserved for Future Use, this field is required but ignored 4.Up to 496-bit (Depending on EPC Length parameter set in Set Reader Configuration) tag ID to write to the Tag. The reader sends a Fault Code / ACK response back to the host. An example of Write Tag EPC command sequence of events and format is shown next: 1. Starts a timer on the reader. 2. Wakes the tag. 3. Programs the tag with the EPC ID 4. Reads the tag and verifies if the write succeeded. Note The verify operation uses the same power level as the write operation. It does not change to the Read power level. Sends back an ACK if OK or a fault code for timeout or other faults. 5. FF 0C 23 03 E8 00 00 SOH Length OpCode Timeout (ms) RFU RFU 11 22 33 44 55 EPC ID 66 77 88 5D D8 CRC Bytes 6 and 7, identified as Reserved for Future Use (RFU) are ignored, although still required in the command. EPC values up to 496-bits are supported, depending on EPC Length parameter setting in Set Reader Configuration(9Ah). Write Tag Data (24h) The Write Tag Data command writes to the specified memory bank and data address location within that memory bank of a tag. The tag which will be written to can be specified using the Tag Singulation Fields or, if Option=0x00 of the Tag Singulation Fields is specified, it will attempt to write to the first tag it finds. If no tag is in the field, the memory 113 Gen2 Tag Commands location doesn’t exist or is unwriteable, or the Select criteria cannot be satisfied a fault code is returned. In addition to the Tag Singulation Fields the Write Tag Data command takes several fields which specify the data which will be written to the tag. These fields are: 114 Gen2 Tag Commands Write Tag Data Fields Field Value Write Address Description 4 bytes The Address field is the offset in the specified Memory Bank, in 16-bit words, where the contents of the Data field is written. It corresponds to the WordPtr argument in the Gen2 specification. Note: Addresses are always zero-based. Specifying 0x00 indicates starting at the first address location. Write MemBank 1 byte The MemBank field specifies which of the tag’s memory banks the data is to be written to. The values correspond to the Memory Bank values as specified in the Gen2 specification. They are: 0x00 = Reserved 0x01 = EPC 0x02= TID 0x03 = User Memory Write Data N bytes The data to be written to the tag in Memory bank [MemBank] starting at address [Address]. Access Password 4 byes The Access Password for the tag, if the tag is locked. For an unlocked tag AccessPwd=0x00000000. Note: When Option=0x00 is specified the Access Password is not used. The following example will attempt to write to Reserved Memory to set the Kill password=0x11112222. It will write this data to a tag matching the following criteria for a max timeout of 1000 ms. Memory Bank = User Memory. Starting Address = bit 32 Select Data = 0x1234 The Reserved Memory bank is not locked so the Access Password is zero FF 17 24 03 E8 03 SOH Length OpCode Timeout (ms) Option 00 00 00 00 Write Address 11 11 00 00 Write MemBank 22 Write Data 22 00 00 00 Access Password 3E 00 00 00 Select Address 20 10 Select Data Length 71 CRC 115 12 34 Select Data Gen2 Tag Commands If Option=0x00 or 0x01 is used then the unused Tag Singulation Fields must be removed from the request. Note If Option=00, the write tag data is performed without any select criteria resulting the first tag found being written. In that case there is no way to determine what tag gets written to unless there is only one tag in the RF field. Lock Tag (25h) The Lock Tag command locks the specified memory bank of a tag. The tag which will be locked can be specified using the Tag Singulation Fields or, if Option=0x00 of the Tag Singulation Fields is specified, it will attempt to lock the first tag it finds. If no tag is in the field, the memory location doesn’t exist or is unlockable, or the Select criteria cannot be satified a fault code is returned. In addition to the Tag Singulation Fields the Lock Tag command takes several fields which specify how the tag is to be locked. These fields are: Lock Tag Fields Field Value Description AccessPwd 4 byes The Access Password for the tag. In order to lock a tag the Access Password must be non-zero. To set the access password using the Write Tag Data (24h) command. Mask Bits1 2 bytes The Mask bits specify which fields should be modified according to the Actions bits. When a Mask Bit =0 the corresponding Action bit is not applied and the current lock setting is retained. When a Mask Bit =1 the corresponding Action bit is applied and the new lock setting is implemented. Action Bits1 2 bytes The Action bits specify whether to assert or deassert a lock behavior for the associated memory location. Action Bits are only applied if the corresponding Mask Bits =1. 1-The Mask and Action bits correspond to the identically named fields described in Section 6.3.2.10.3.5 of the Gen2 specification. The values of the Mask and Action bits indicate how a tag is to be locked. The 10 Least Significant Bits of each 16-bit argument are used to indicate the lock behavior for each 116 Gen2 Tag Commands memory bank (Action Bits) and which of those behaviors to apply (Mask Bits). These bits and their corresponding behaviors are: First Byte 15 Bit 14 13 12 11 10 Unused Second Byte Kill Pwd Access Pwd EPC Mem TID Mem User Mem Mask Set? Set? Set? Set? Set? Set? Set? Set? Set? Set? Action R/W Perm R/W Perm Perm Perm Perm For each bit in the Mask field where Set?=1 the corresponding Action bit will be applied and the specified lock setting (R/W, W. Permanent) will be asserted (1) or de-asserted (0). Please see the Gen2 specification for more information on Lock Action functionality. Note Passing 0xFFFF in the Mask field and 0x0000 in the Action field unlocks all the memory banks. The following example shows an attempt to apply a temporary (not permanent) Write lock on the EPC memory (Option=0x01) of a tag whose EPC ID=0x111122223333444455556666 and whose access password=0x11223344: FF 18 25 SOH Length OpCode 03 E8 Timeout (ms) 01 Option 11 22 33 Access Password 44 00 20 Mask Bits 00 20 Action Bits 60h Select Data Length 11 11 22 22 33 33 44 44 55 55 66 66 Select EPC ID Kill Tag (26h) The Kill Tag command kills the specified tag. The tag which will be killed can be specified using the Tag Singulation Fields or, if Option=0x00 of the Tag Singulation Fields is 117 9E 7A CRC Gen2 Tag Commands specified, it will attempt to kill the first tag it finds. If no tag is in the field, the kill password is zero, or the Select criteria cannot be satified a fault code is returned. In addition to the Tag Singulation Fields the Kill command takes the tag’s Kill Password and an extra 1 byte field for future use (RFU). The following example shows an attempt to kill a tag whose EPC ID=0x112233445566778899AA and whose Kill password=0x11112222: FF 13 26 SOH Length OpCode 03 E8 Timeout (ms) 01 Option 11 11 22 Kill Password 22 00 50 RFU Select Data Length 11 22 33 44 55 66 77 88 99 AA Select EPC ID DD CRC Note If the tag’s kill password is set to 0, the protocol does not allow the tag to be killed. A non-zero kill password must be set (using the Write Tag Data command) before the kill command succeeds. The RFU field should be set to 0. Read Tag Data (28h) The Read Tag Data command reads the specified memory bank at data address location within that memory bank of a tag. The tag which will be read can be specified using the Tag Singulation Fields or, if Option=0x00 of the Tag Singulation Fields is specified, it will attempt to read from the first tag it finds. If no tag is in the field, the memory location doesn’t exist or is read locked, or the Select criteria cannot be satified a fault code is returned. In addition to the Tag Singulation Fields the Read Tag Data command takes several fields which specify the data which will be read from the tag. These fields are: 118 DB Gen2 Tag Commands Read Tag Data Fields Field Value Description Read MemBank 1 byte The MemBank field specifies which of the tag’s memory banks the data is to be read from. The values correspond to the Memory Bank values as specified in the Gen2 specification. They are: 0x00 = Reserved 0x01 = EPC 0x02= TID 0x03 = User Memory Read Address 4 bytes The Address field is the offset in the specified Memory Bank, in 16-bit words, to start reading from. It corresponds to the WordPtr argument in the Gen2 specification. Note: Addresses are always zero-based. Specifying 0x00 indicates starting at the first address location. WordCount 1 byte The number of words (16 bit chunks) of data to read from memory bank [MemBank] starting at offset [ReadAddress]. Access Password 4 byes The Access Password for the tag, if the tag is read locked. For an unlocked tag AccessPwd=0x00000000. The Basic syntax which returns only the requested Tag Data is defined in Get Tag Data. With additional Option bits set, Read Tag Data can also return Tag Read Meta Data using the syntax in Get Tag Data and Meta Data. 119 Gen2 Tag Commands Get Tag Data The following example will attempt to read the Kill Password (the first 2 words) from Reserved Memory. It will read this data from a tag matching the following criteria for a max timeout of 1000 ms. Memory Bank = User Memory. Starting Address = bit 32 Select Data = 0x1234 The Reserved Memory bank is not locked so the Access Password is zero FF 14 28 03 E8 03 00 SOH Length OpCode Timeout (ms) Option Read MemBank 00 00 00 20 Select Address 00 10 Select Data Length 00 00 00 02 Read Address 12 34 WordCount D1 Select Data 00 00 00 00 Access Password E7 CRC If Option=0x00 or 0x01 is used then the unused Tag Singulation Fields (including the Access Password) must be removed from the request. The response to this Read Data command example is: FF 05 28 SOH Length OpCode 00 00 Status 03 11 Option 11 Data 22 22 10 BF CRC Read Tag Data Response The length field of the data returned is 2 times the WordCount value in the original command, because the return packet length is counted in bytes, plus 1 byte for the Option specified. Get Tag Data and Meta Data In addition to getting the tag data returned you can also get Tag Read Meta Data for the found tag. This version of Read Tag Data requires bit 4 of the Option flag to be set and takes an additional Metadata Flags field which defines what metadata will be returned. The following table lists the supported values for these fields. 120 Gen2 Tag Commands Read Tag Data Get Data and Metadata Request Fields Field Option Value Description Bit 4=0 (0x0X) No Metadata flags are specified and Meta Data will not be returned. This is the Get Tag Data syntax. The lower bits (X) are specified as defined by Tag Singulation/Select Functionality. Bit 4=1 (0x1X) Indicates that Metadata flags are to follow and the corresponding Metadata shall be returned with the tag EPC. The lower bits (X) are specified as defined by Tag Singulation/Select Functional- ity. Metadata Flags (to specify more than one OR the values together) 0x0000 When no flags are set no meta data will be returned, only the tag EPC (including PC bits and tag CRC) 0x0001 When bit 0 is set the Read Count will be returned 0x0002 When bit 1 is set the LQI/RSSI will be returned 0x0004 When bit 2 is set the Antenna ID will be returned 0x0008 When bit 3 is set the Frequency will be returned 0x0010 When bit 4 is set the Timestamp will be returned 0x0020 When bit 5 is set the RFU (ThingMagic Only) will be returned 0x0040 When bit 6 is set the Protocol is returned. These fields are followed by the Read Tag Data Fields then the Tag Singulation/Select Func- tionality (set appropriate bits in the Option field defined above, do not specified an additional Option field), used the same as defined in the Get Tag Data syntax, as necessary. A response can contain the following information: 121 Gen2 Tag Commands Read Tag Data Get Data and Metadata Response Fields Field Length Value SOH 1 byte 0xFF Length 1 byte Based on data returned OpCode 1 byte 0x21 Options 1 byte As sent in request Metadata Flags 2 bytes Metadata contained in response Read Count1 1 byte Tag EPC/Antenna Read Count RSSI1 1 byte Return Signal Strength Indicator Antenna ID1 1 byte Antenna ID, 4 MSBs for TX and 4 LSBs for RX Frequency1 3 bytes Frequency in kHz Timestamp1 4 bytes RTC Timestamp RFU1 2 bytes Reserved for Future Use - ThingMagic Only Protocol ID 1 byte Protocol ID of tag read Tag Data N bytes Request Tag Data. CRC 2 bytes Message CRC 1 - Conditionally returned depending on the Metadata Fields specified in the request. The following example will attempt to read the Access Password (the first 2 words) from Reserved Memory. It will read this data from a tag matching the following criteria for a max timeout of 1000 ms. Memory Bank = EPC. Starting Address = bit 120 (beginning of the last byte of the EPC value: 16 PC bits + 16 CRC bits + 88 EPC bits) Select Data = 0x34 122 Gen2 Tag Commands The Reserved Memory bank is not locked so the Access Password is zero FF 15 28 03 E8 14 00 14 00 SOH Length OpCode Timeout (ms) Option Meta Data Flags Read MemBank 00 00 00 78 Select Address 00 00 00 02 Read Address 08 34 Select Data Length Select Data 9C 02 00 WordCount 00 00 00 Access Password 0E CRC The response to this Read Data command example is: FF 0C 28 SOH Length OpCode 00 00 Status 14 Option 00 14 Meta Data Flags 22 00 Antenna ID 00 00 Timestamp 15 12 34 56 Tag Read Data 78 B2 B4 CRC Get Tag Buffer (29h) See Get Tag Buffer (29h) in Multi-Protocol Tag Commands. Clear Tag Buffer (2Ah) See Clear Tag Buffer (2Ah) in Multi-Protocol Tag Commands. Gen2 Tag Specific (2Dh) The Gen2 Tag Specific command is a generic command providing an interface for operations proprietary to certain Gen2 tag silicon. The supported commands are grouped by tag silicon type, indicated by the Chip Type field. Each Chip Type may have multiple unique commands associated with it, indicated by the Sub Command field. Alien Higgs Silicon (Chip Type=0x01) Tags with Alien Higgs Silicon support the following proprietary commands: 123 Gen2 Tag Commands Alien Higgs Sub Commands Alien Higgs Command Sub Command value 0x01 Partial Load Image 0x03 Full Load Image Partial Load Image Sub Command=0x01 If the first bit of Sub Command is 1 (Sub Command=0x01), the Gen2 Tag Specific command writes an EPC with a length of up to 96-bits, plus the Kill and Access passwords without locking in a single command. The format for this command is as follows: FF 18 SO Length 11 2D 03 OpCode 22 33 44 E8 Timeout (ms) 55 66 77 Tag ID 124 88 99 01 01 Chip Type Sub Command AA BB CC 45 00 64 CRC 00 00 Kill Password 00 00 00 00 00 Access Password Gen2 Tag Commands Full Load Image Sub Command=0x03 If the second bit of Sub Command is 1 (Sub Command=0x03), the Gen2 Tag Specific command will also modify the Lock bits (locking the tag according to the Alien Higgs Lock Bits) and the Alien Higgs PC Bits. The format is extended as follows: FF 1C SO Length 00 2D 03 OpCode 02 Lock Bits 30 00 E8 Timeout (ms) 11 22 33 44 55 01 03 Chip Type Sub Command 66 PC Word 77 88 99 01 AA 23 45 67 Kill Password Tag ID 89 Access Password CRC The Lock Bits correspond to the Higgs TID Bank configuration bits with the same name and are shown in the following table: Alien Higgs Lock Bits Bit Number 15 14 13 12 11 10 Field Name> Default Values Lock Values APW Lock APW P-lock KPW Lock KPW P-lock EPC Lock EPC Plock Currently, only the first six bits of this field are used. A value of zero in each bit field keeps the corresponding memory segment unlocked. To lock any of the Kill and Access passwords or the EPC, temporarily or permanently, set the corresponding bit fields in the Lock Bits word to 1. For additional information, refer to the Higgs Tags Application Notes 125 EF Gen2 Tag Commands (Currently available at http://www.alientechnology.com/docs/ Load_Image_Application_Note_1.pdf - Contact Alien Technology for more details). The PC Word field, in the table on the previous page, corresponds to the PC Word in the Tag EPC memBank defined in the Gen2 Specification and is shown in the following table: Alien Higgs PC Bits Bit Number 15 14 Field Name 13 12 11 PC Bits Default Values NSI Bits 10 RFU RFU The PC Word in the Write Tag Specific command allows you to specify the NSI Bits and the length of the EPC that you want to write into the tag. The RFU bits are always zero and the PC Bits are determined by the EPC length as specified in the Gen2 Specification and the Higgs Tags Application Notes. To use the extended format of the Gen2 Tag Specific command but keep the NSI bits intact, set option=0x03. This signals the reader to ignore the NSI bits of the PC Word sent to the reader along with the command. In the example on the previous page, after the execution of the Gen2 Tag Specific command, the reader writes the 96-bit EPC 0x112233445566778899AABBCC, the Kill Password 0x01234567, the Access Password 0x89ABCDEF into the tag without changing the NSI bits of the tag and locks the EPC memBank. However, to access and write the NSI bits into the tag, set the third bit of the option field to 1 (option=0x07). In the example, if option is set to 0x07, the NSI bits are overwritten by zeros. The following table summarizes the option field values and the action that is taken: 126 Gen2 Tag Commands Bit Number Action Invalid Value Gen2 Tag Specific without locking and without NSI bits being overwritten Invalid Value Gen2 Tag Specific with locking and without NSI bits being overwritten Invalid Value Gen2 Tag Specific without locking and with NSI bits being overwritten by zeros Invalid Value Gen2 Tag Specific with locking and with NSI bits being overwritten by values that you specify NXP Silicon (Chip Type=0x02) Tags with NXP Silicon support the following proprietary commands as specified in the SL31CS1202 G2XM UCode Functional Specification (please contact NXP for details): NXP Sub Commands Sub Command value NXP Command 0x01 Set ReadProtect 0x02 Reset ReadProtect 0x03 Change EAS 0x04 EAS Alarm 0x05 Calibrate All NXP-proprietary commands contain the following fields: 127 Gen2 Tag Commands NXP Common Fields Field Value Length 1 byte OpCode 0x2D Timeout 2 bytes Option 0x02 for NXP Sub Command NXP Sub Commands Access Password 4 bytes, tag’s access password Note: Must be non-zero for Set/ Reset ReadProtect and Change EAS Note: EAS Alarm does not take the Access Password field. In addition to the common fields some commands have additional required fields as indicated below. Set ReadProtect The NXP command Set ReadProtect causes the commands Read, Write, Kill, Lock, Access, Set ReadProtect, Change EAS, EAS Alarm and Calibrate to be disabled until a “Reset ReadProtect” is received. This command uses only the common fields and is invoked with the following command: FF 08 SO Length 2D OpCode 03 E8 Timeout (ms) 02 01 Chip Type Sub Command 12 34 56 78 Access Password CRC The response to the Set ReadProtect command is a simple ACK with standard status: 128 FF 00 2D SOH Length OpCode 00 00 Status 1D 25 CRC Gen2 Tag Commands Reset ReadProtect The NXP command Reset ReadProtect restores normal operation to a tag which is in ReadProtect mode. This command uses only the common fields and is invoked with the following command: FF 08 SO Length 2D 03 OpCode E8 Timeout (ms) 02 02 Chip Type Sub Command 12 34 56 78 Access Password CRC The response to the Reset ReadProtect command is a simple ACK with standard status: FF 00 2D SOH Length OpCode 00 00 1D Status 25 CRC Change EAS The NXP command Change EAS sets or resets the EAS system bit. When set, the tag will return an alarm code if an “EAS Alarm” command is received. This command takes an additional field: Change EAS (1 byte: 0x01=Set EAS; 0x02=Reset EAS) It is invoked with the following command: FF 09 SO Length 2D 03 OpCode E8 Timeout (ms) 02 03 00 Chip Type Sub Command 00 00 00 Access Password 00 Change EAS CRC The response to the Change EAS command is a simple ACK with standard status: FF 00 2D SOH Length OpCode 00 00 Status 1D 25 CRC EAS Alarm The NXP command EAS Alarm causes the tag to return coded information, but only when the tag has its EAS system bit set. This command requires several fields in addition to the common fields 129 Gen2 Tag Commands Divide Ratio as Per Gen2 (DR) (1 byte: Current fixed to 0x01, M5e and M5e-C only support DR=64/3) Miller Cycles (M) (1 byte: Current fixed to 0x02, M5e and M5e-C only support M=4) TrExt as Per Gen2 (1 byte: Current fixed to 0x01, M5e and M5e-C only support extended Pilot Tone) It is invoked with the following command: FF 07 2D SO Length 03 OpCode E8 Timeout (ms) 02 04 01 02 01 Chip Type Sub Command DR TrEx CRC The response to the EAS Alarm command contains 8 bytes of EAS Alarm Data, only if Status=0x0000. The format of the response is: FF 0A 2D 00 SOH Length OpCode 00 Status 02 04 [8 bytes] Chip Type Sub Command [EAS Alarm Data] ?? ?? CRC Calibrate The NXP command Calibrate causes the tag to return a random data pattern that is useful in some frequency spectrum measurements. This command uses only the common fields and is invoked with the following command: FF 08 2D SO Length 03 OpCode E8 Timeout (ms) 02 05 Chip Type Sub Command 11 11 22 22 Access Password CRC The response to the Calibrate command contains 32 bytes of Calibrate Data, only if Status=0x0000. The format of the response is: 130 FF 42 2D SOH Length OpCode 00 00 Status 02 05 [64 bytes] Chip Type Sub Command [Calibrate Data] ?? ?? CRC Gen2 Tag Commands Note If the tag is a G2XL without User Memory the Calibrate Data response field will contain 64 bytes of ‘00’. 131 Gen2 Tag Commands Erase Block Tag Specific (2Eh) The Erase Block Tag Specific command is used for Tag specific block erases. The format for this command is as follows: FF 0A 2E 03 E8 00 00 SOH Length OpCode Timeout (ms) Chip Type Option 00 00 00 Address 02 01 01 Mem Bank Word Count 38 CRC Currently, the only acceptable Chip Type is 0x00 (indicates standard support of any tag supporting the Block Erase command as specified in the Gen2 Specification) and the only permissible option is 00 (Block Erase). The 32-bit Address field is the zero-based offset from the MemBank origin, in 16-bit words, where the contents of the tag memory will be erased. It corresponds to the WordPtr argument in the Gen2 command specification. The 8-bit MemBank field specifies which of the tag’s memory banks is to be addressed. It corresponds to the Gen2 argument of the same name. Its values are as mentioned for Write Tag Data command. Word Count specifies the number of 16-bit words to be erased. In the format example, data starting at word=0x02 (the third word) of EPC memory, which corresponds with the first word of the EPC ID, is erased . 132 Get Configuration Commands Get Configuration Commands The Get commands listed in the following table are used to get settable parameters from the Mercury Embedded module. All of the commands have a data length of zero, and return data or a fault code. These commands cannot be run in the Bootloader. Get Configuration Commands OpCode Command Name Arguments Return 0x10 Get Hardware Version (10h) Option, Mask Hardware Information 0x61 Get Antenna Configuration (61h) Option Antenna configuration 0x62 Get Read TX Power (62h) Return Option (1 byte) Read TX Power Setting (and optionally Min. and Max power) 0x63 Get Current Tag Protocol (63h) none Current Tag Protocol 0x64 Get Write TX Power (64h) none Write TX Power Setting 0x65 Get Frequency Hop Table (65h) none Current Frequency Hop Table 0x66 Get User GPIO Inputs (66h) none GPIO Input Data 0x67 Get Current Region (67h) none Current region being used 0x68 Get Power Mode (68h) none Current power mode setting 0x69 Get User Mode (69h) none Current user mode setting 0x6A Get Reader Configuration(6Ah) none Current reader configuration options set 0x6B Get Protocol Configuration (6Bh) Protocol, Parameter (2 bytes) Parameter Value 0x6C Get Reader Statistics (6Ch) Option, Statistics Reader Statistics 0x70 Get Available Protocols (70h) none Available Protocols 0x71 Get Available Regions (71h) none Available regions. 0x72 Get Current Temperature (72h) none Current module temperature 133 Get Configuration Commands Get Hardware Version (10h) The Get Hardware Version command is used to get information about the module it is executed on. Most of the information is not currently user-relavant but will often be required by ThingMagic Support to help diagnose problems. Get Hardware Version Fields Field Value Option Description 0x00 Indicates the Data Flags will following specifying the information to be returned 0x01 M6e-TC Only - Indicates the FPGA TM and TC versions should be returned. Note: Do Not pass Data Flags when using Option=0x01. Data Flags 0x00 When no flags are set all data will be returned. The format of this command is: FF 02 10 00 00 SOH Length OpCode Option Data Flags F0 93 CRC Example The following command returns the FPGA TM and TC versions: FF 01 10 01 SOH Length OpCode Option ?? ?? CRC The follow is an example response containing the FPGA TM and TC versions: 134 FF 08 10 00 00 12 34 56 78 00 10 01 04 SOH Length OpCode Status FPGA TM Version FPGA TC Version B9 5E CRC Get Configuration Commands Get Antenna Configuration (61h) The Get Antenna Configuration command returns the current antenna configuration including which antennas are set to transmit and receive, and which ports have antennas attached. Reliable antenna detection requires that an attached antenna pass at least a small amount of DC current. Many antennas do not pass DC current. Due to such antennas an indication that a port is terminated is always accurate, but an indication that a port is not terminated may not be accurate. The format of the command is: FF 00 61 00 SOH Length OpCode Option 1D 6E CRC The reply is formatted similar to the Set Antenna Port command. Data byte 01 returns the current TX antenna, and data byte 02 returns the current RX antenna. The default, and currently only, antenna configuration is TX on port #1 and RX on port #1. FF 02 61 SOH Length OpCode 00 00 Status 01 01 4E TX Ant Num RX Ant Num 21 CRC The Get Antenna Configuration command also includes an option that also returns information on which port(s) the antenna is connected. For example, a command is sent: FF 01 61 01 SOH Length OpCode Option 1D 6E CRC The response returns the ports for TX and RX and also detects whether an antenna is connected to the port: 135 Get Configuration Commands FF 05 61 00 SOH Length OpCode 00 Status 01 01 00 ?/ TX Ant Num RX Ant Num Port 1 Not Connected ?? CRC Get Read TX Power (62h) The Get Read TX Power command returns the current TX power and, optionally, the minimum and maximum power levels supported by the module (and region setting) for reading tags, in centi-dBm. The option field allows you to specify what data you want returned: Option Data returned 0x00 Returns only the current TX power. 0x01 Returns the current TX power and the maximum and minimum power levels for this module. The following example gets the full set of power data: FF 01 62 01 SOH Length OpCode Option BE BC CRC The example response contains the option specified followed by 2 byte fields for each power value: current = 0x0BB8 = 3000 centi-dBm = 30.00 dBm max = 0x0BB8 = 3000 centi-dBm = 30. 00 dBm min. = 0x01F4 = 500 centi-dBm = 5.00 dBm FF 07 62 SOH Length OpCode 00 00 Status 01 Option 0B B8 Current centi-dBm 0B B8 Max centi-dBm 01 F4 Min centi-dBm 1F B7 CRC Get Current Tag Protocol (63h) The Get Current Tag Protocol command returns the currently set tag protocol(s). This is the protocol being used by the reader. The following table assigns a 16-bit code to each available protocol. This table will be updated as new protocols are added: 136 Get Configuration Commands Tag Protocol IDs Protocol Name 16-bit Code None Selected 0x0000 EPC0 / EPC0+ Matrics 0x0001 EPC1 0x0002 ISO 18000-6B 0x0003 EPC0+ Impinj 0x0004 GEN2 0x0005 UCODE 0x0006 iPico 0x0007 eGo 0x001B SeGo 0x001C ATA 0x001D Allegro/Title-21 0x001E The command format is shown in the following example: FF 00 63 SOH Length OpCode 1D 6C CRC Note The supported protocols vary depending on the hardware and firmware in use. The reply is similar to the Set Current Tag Protocol command. Only one protocol can be set at a time: FF 02 63 SOH Length OpCode 00 00 Status 00 1B Current Protocol ?? ?? CRC 137 Get Configuration Commands Get Write TX Power (64h) The Get Write TX Power command returns the current TX power and, optionally, the minimum and maximum power levels supported by the module for reading tags, in centidBm. The option field allows you to specify what data you want returned: Option Data returned 0x00 Returns only the current TX power. 0x01 Returns the current TX power and the maximum and minimum power levels for this module. The following example gets the full set of power data: FF 01 64 01 SOH Length OpCode Option B8 BC CRC The example response contains the option specified followed by 2 byte fields for each power value: current = 0x0BB8 = 3000 centi-dBm = 30.00 dBm max = 0x0BB8 = 3000 centi-dBm = 30.00 dBm min. = 0x01F4 = 500centi-dBm = 5.00 dBm FF 07 64 SOH Length OpCode 00 00 Status 01 Option 0B B8 Default centi-dBm 0B B8 Max centi-dBm 01 F4 Min centi-dBm FF BC CRC Get Frequency Hop Table (65h) The Get Frequency Hop Table command gets the current frequency hop table used in the Microprocessor: 138 Get Configuration Commands FF 00 65 1D SOH Length OpCode 6A CRC The reply format is similar to the Set Frequency Hop Table command. The length must be set to a multiple of four, and a maximum of 62 hop frequencies is returned. The frequencies are returned in kHz. Thus, frequency #1 (0xDC370) corresponds to 902,000 kHz: FF 0C 65 SOH Length OpCode 00 00 00 0D Status C3 70 00 Freq #1 0D F6 38 00 0E Freq #2 26 Freq #3 12 60 B2 CRC Get User GPIO Inputs (66h) The Get User GPIO Inputs command returns the status of the User Input GPIO lines: FF 00 66 SOH Length OpCode 1D 69 CRC The status of the GPIO lines is returned. FF 02 66 SOH Length OpCode 00 00 Status 00 01 Input #1 Input #2 CA B2 CRC Get Current Region (67h) The Get Current Region command gets the current region and, optionally, specific parameters for that region set in the reader. Currently available region codes are shown in the following table. Details on the Regulatory Compliance for each region can be found in Regional Support:: 139 Get Configuration Commands Region codes Region Code NA 0x01 Open 0xFF To get the current region send the following command: FF 00 67 SOH Length OpCode 1D 68 CRC The command generates the following reply, which indicates that the reader is set to the NA region: FF 01 67 SOH Length OpCode 00 00 Status 01 Region B4 80 CRC Get Power Mode (68h) The Get Power Mode command returns the current Power Mode of the unit. The values for the available Power Modes are shown in the table. Available power modes Hex 140 Power Mode 0x00 Full power mode 0x01 Minimal saving mode . 0x02 Medium saving mode. 0x03 Maximum saving mode. 0x04-0xFF Reserved for future use. Get Configuration Commands Note If Set Power Mode (98h) is called using the USB interface and mode 0x03 is specified the module will instead be set to 0x02. In order to set the module to mode 0x03 the command must be called using the RS232 interface. The command gets the current power mode setting from the module: FF 00 68 1D SOH Length OpCode 67 CRC The example reply shows that the system is in the medium power saving mode: FF 01 68 SOH Length OpCode 00 00 Status 02 Power Mode A4 BD CRC Get User Mode (69h) The Get User Mode command returns the type of application in which the M5e/M5eCompact can be used. The available user modes are shown in the table: Available User Modes Hex User Mode 0x00 NONE (Default) 0x01 PRINTER 0x02 Unsupported 0x03 PORTAL 0x04 HAND HELD The command gets the current user mode setting from the module: 141 Get Configuration Commands FF 00 69 1D SOH Length OpCode 66 CRC The example reply shows the current user mode setting: FF 01 69 SOH Length OpCode 00 00 Status 01 97 User Mode 8F CRC Get Reader Configuration(6Ah) The Get Reader Configuration command returns the current reader configuration for the setting specified by the key field as defined in Set Reader Configuration(9Ah) when using Option=0x01. When using Option=0x00 it will use the previous format of the command. Send the following command to get the current PA Protection setting: FF 02 6A 01 07 SOH Length OpCode Option Key 2E 49 CRC The example reply shows the current configuration setting: FF 03 6A SOH Length OpCode 00 00 Status 01 07 01 Option Key Value 39 45 CRC Get Protocol Configuration (6Bh) The Get Protocol Configuration command is used to get current protocol-specific configuration parameters settings as specified in Set Protocol Configuration (9Bh). Send the following command to get the current Gen2 Session configuration parameter value: 142 Get Configuration Commands FF 02 6B 05 00 3A SOH Length OpCode Protocol Parameter 6F CRC The example reply shows the Gen2 session is set to S2 (0x02): FF 03 6B SOH Length OpCode 00 00 Status 05 00 02 Protocol Parameter Value 08 76 CRC Get Reader Statistics (6Ch) The Get Reader Statistics command allows the user to get and reset various statistics on the reader operation. The command takes the following fields: Get Reader Statistics Request Fields Field Option (1 byte) Value • 0x00 - Get statistics specified by the Statistics Flag • 0x01 - Reset the specified statistic. Statistics Flag (1 byte) Each bit corresponds to a specific statistic to be returned. See the Available Statistics table for bit values. 143 Get Configuration Commands Available Statistics Statistics Flag Bit Bit 0 (0x01) Statistic RF On Time (ms)- Indicates the aggregate time the transmitter has been on, in milliseconds, since the counter was last reset. Returned value contains 8 bytes (4 on the M5e-Compact), 4 bytes for each antenna. Note: Clock rolls over every 232 milliseconds and must be taken into account by user application. Note: Multiple statistics can be requested by a single command by performing a binary OR (setting each desired Statistics Flag bit to 1) on the desired flags and sending the result as the Statistics Flag byte. The response to a Get Reader Statistics command contains the following information: 144 Get Configuration Commands Get Statistics Response Fields Field Description Status (2 bytes) Standard response status Option (1 byte) Same as the Requested Value Requested Statistics Flag (1 byte) Same as the Requested Value For each individual statistics requested as part of the Requested Statistics Flag the following fields will be repeated according to the Statistics Response value. They will be in bit value order. Statistic Flag (1 byte) The bit corresponding to the requested statistic. Data Length (1 byte) Indicates how many bytes are in this statistics response value. Statistics Response Value (N bytes as indicated by Data Length) The response value of the statistic as specified in Available Statistics To request the RF On Time send the following command: FF 02 6C 00 01 4F SOH Length OpCode Option Statistics Flag 89 CRC The response, containing the RF On Time would look like: FF 08 6C SOH Length OpCode 00 00 Status 00 01 01 04 00 Option Requested Stats Flag Stat Flag (RF On) Data Length 00 08 4C Antenna1 RF On Time D7 D9 CRC To reset the RF On Time statistic send the following command: FF 02 6C 01 01 SOH Length OpCode Option Statistics Flag 4E 89 CRC 145 Get Configuration Commands Get Available Protocols (70h) The Get Available Protocols command returns the list of protocols that the reader is capable of reading. The protocol codes are defined in Get Current Tag Protocol (63h). The total number of protocols in the system cannot exceed 32. The command is generated as follows: FF 00 70 SOH Length OpCode 1D 7F CRC The following Microprocessor response shows that the reader is capable of reading one protocol – GEN2: FF 02 70 00 SOH Length OpCode 00 00 Status 05 3B Protocol #1 75 CRC Get Available Regions (71h) The Get Available Regions command returns the list of regions that the reader is capable of working in. The total number of regions in the system cannot exceed 248. The list of region codes are found in Region codes. The command is generated as follows: FF 00 71 1D SOH Length OpCode 7E CRC The response shows that this reader is capable of reading in two regions – NA and Open: 146 FF 02 71 SOH Length OpCode 00 00 Status 01 FF Region#1 Region#2 ?? ?? CRC Get Configuration Commands Get Current Temperature (72h) The Get Current Temperature command returns the current board component temperature on the module in degrees Celsius as a signed 8-bit integer. This information can be used to determine if the module is exceeding its recommended operating temperature range. If the returned value exceeds the values specified in the table below an effort should be made to reduce the ambient temperature of the module or reduce the module’s duty cycle. Module Warning Temperature 105°C M6e-TC The command is generated as follows: FF 00 72 SOH Length OpCode 1D 7D CRC The response returns a signed 8-bit integer in degrees Celsius, 0x24 = 36oC FF 01 72 SOH Length OpCode 00 00 Status 24 Temperature in Celsius 48 23 CRC 147 Set Configuration Commands Set Configuration Commands The Set commands are used to set configurable values in the firmware. Since the values are not stored in flash, these values are reset to the default values whenever the application firmware is restarted. These commands cannot be run in the Bootloader. The application responds with a fault code / ACK to all commands. The following table lists the Set commands: Set Configuration Commands OpCode 148 Command Name Arguments Retur 0x91 Set Antenna Port (91h) Antenna Port Selected none 0x92 Set Read TX Power (92h) Read TX Power Setting none 0x93 Set Current Tag Protocol (93h) Protocol ID none 0x94 Set Write TX Power (94h) Power in centi-dBm none 0x95 Set Frequency Hop Table (95h) Table of hop frequencies in kHz none 0x96 Set User GPIO Outputs (96h) GPIO output states none 0x97 Set Current Region (97h) Region Codes, LBT none 0x98 Set Power Mode (98h) PowerMode Enums, Timeout (ms) none 0x99 Set User Mode (99h) UserMode Enums, Timeout (ms) none 0x9A Set Reader Configuration(9Ah) Reader Configuration Options (bitwise) none 0x9B Set Protocol Configuration (9Bh) Protocol, Parameter, Value (3 bytes) none Set Configuration Commands Set Antenna Port (91h) The Set Antenna Port command sets the antenna port to the number specified. The transmitter and receiver ports are specified, currently on port 0x01 is supported on the M6e-TC. Each antenna port is an 8-bit value set up as a bit mask. Thus, only one of the eight bits should be set at a time. The example below sets both antennas to bit mask 0x01, which would correspond to the first antenna in the system. FF 02 91 01 01 SOH Length OpCode TX Ant Num Rx Ant Num 70 3B CRC Valid settings for this command are: TX = 1 RX = 1 All other settings will result in an error. Set Read TX Power (92h) The Set Read TX Power command sets the power level to be used for reading tags. The power is specified as a 16-bit value in centi-dBm. For instance, a power of 25 dBm is 2500 centi-dBm, which is 0x09C4. FF 02 92 SOH Length OpCode 09 C4 Power in centi-dBm 48 9D CRC 149 Set Configuration Commands Set Current Tag Protocol (93h) To select a protocol, send the Set Current Tag Protocol code to the reader. A table of valid protocol codes is found in Get Current Tag Protocol (63h). The following example sets the protocol to GEN2: FF 02 93 SOH Length OpCode 00 05 Current Protocol 51 7D CRC Only protocols that are enabled in the reader are available. These protocols are listed in the version information for the application, described in Get Boot Loader/Firmware Version (03h). Set Write TX Power (94h) The Set Write TX Power command sets the power level to use for writing to tags. This is necessary because a write operation may require a different RF power setting than a read command. The format and arguments of this command are identical to the Set Read TX Power command: FF 02 94 SOH Length OpCode 09 C4 Power in centi-dBm 28 5B CRC Set Frequency Hop Table (95h) The Set Frequency Hop Table command sets the list of frequencies to use when hopping. Each frequency is encoded as a 32-bit value in kHz. For instance, 915MHz is encoded as 915000kHz, which is 0x000DF638. The maximum number of hop frequencies is 62, since that is the maximum number of 32-bit values that can be sent using a message packet. If fewer values are used, only those values are populated in the table and the rest of the slots are ignored. 150 Set Configuration Commands Note The data length of this message encodes the number of frequencies to populate into the hop table. The length must be divisible by four for the message to be properly formatted. This example shows a command that sets up a table with only three values: FF 0C 95 00 SOH Length OpCode 0D C3 70 00 0D Freq #1 F6 38 00 Freq #2 0E 26 Freq #3 12 C1 8F CRC The generated hop table has values of 902MHz, 915MHz, and 927.25MHz. For the US region, valid frequencies are 902MHz – 928MHz. If any of the values in the table are invalid, then none of the values are recorded. The Set Frequency Hop Table command should be used for debug only, as there should be no reason to modify the frequency hop table in the field. Any changes to the frequency hop table could put you out of compliance with the Local Regulatory Requirements (for example, FCC, ETSI, MIC). Set User GPIO Outputs (96h) There are two GPIO outputs available for use. The Set User GPIO Outputs command has been “overloaded” to create a mechanism to return the current state of both GPIO pins. To set either GPIO Output pin, send the following command. Note that the data length is 2 bytes: FF 02 96 01 01 SOH Length OpCode GPIO # Output Value 28 E0 CRC 151 Set Configuration Commands This example sets the GPIO Output #1 to ‘1’ (high). To get the current status of the GPIO output pins, send the same command, with the length set to 0: FF 00 96 1D SOH Length OpCode 99 CRC The response looks similar to the Get User GPIO Inputs command: FF 02 96 00 SOH Length OpCode 00 Status 00 01 29 Output #1 Output #2 E0 CRC Set Current Region (97h) The Set Current Region command sets the current region for use in the reader. The list of region codes are found in Region codes. See Regional Support for more information on regional functionality. Setting the region performs the following: 1. Frequency hop table is set to the default for the region. 2. Any other region specific settings are set (i.e. LBT) to default values unless otherwise specified. Currently only LBT is configurable for regions supporting it. The Set Current Region command supports two command syntaxes: The basic syntax for all regions where only the region code is specified. For example, to set the region to KR: FF 01 97 03 4B SOH Length OpCode Region BE CRC The extended syntax allowing the region code plus LBT Enabled (if supported by Region) to be set. For example, to set the Region to EU3 and Enable LBT: 152 FF 02 97 08 01 SOH Length OpCode Region LBT Enable 19 FD CRC Set Configuration Commands Note When LBT is disabled in the Open region the M6e-TC will implement frequency hopping as implemented for the NA region with a frequency hop interval of 400ms. Set Power Mode (98h) The Set Power Mode command can set the M6e-TC to four different power management modes. See Available power modes. Use the Set Power Mode command to set the power mode to maximum saving mode by sending the following: FF 01 98 03 SOH Length OpCode Power Mode 44 BE CRC Set User Mode (99h) Use the Set User Mode command to set the user mode to the type of application in which the M6e-TC will be configured for the optimal Search Strategy settings for a particular protocol. Send the following to set the user mode to printer: FF 01 99 01 SOH Length OpCode User Mode 45 BC CRC The list of user modes and their corresponding session are found in Available User Modes. Setting the User Mode to an unsupported value will not modify the current setting. Set Reader Configuration(9Ah) The Set Reader Configuration command is used to set several configuration options on the reader. The Option byte indicates whether to use the new key/value pair setting or the previous, bitwise, settings. One example configuration and the corresponding Options value is specified in the command example below. For other combinations the hex value for Options will need to be calculated by OR’ing the bits for each setting. 153 Set Configuration Commands Available Configuration Options Option Key Value Reader Configuration setting 0x00 Indicates the deprecated format of this command will be used. 0x01 Maximum EPC Length = 0x02 0x00 Maximum EPC length of 96 bits (Default) 0x01 Maximum EPC length of 496 bits Record the highest RSSI seen = 0x06 0x00 The RSSI Tag Read Meta Data value is the value for the last read tag for each tag buffer entry when this is Disabled. (Default) 0x01 When Enabled the RSSI Tag Read Meta Data value will be the highest value recorded during the Read Tag Multiple (22h) search operation. 0x00 Disable - Turns off Power Amplifier Protection. NOT RECOMMENDED. 0x01 Enable (Default) 0x00 Tag Data is a unique characteristic of a Tag Buffer Entry. 0x01 Tag Data is ignored for Tag Buffer Entry uniqueness (Default) PA Protection = 0x07 Tag Data as Unique Identifier of Tag Buffer entry. = 0x08 Send the following to enable the 496 bit EPC mode: FF 03 9A 01 02 01 SOH Length OpCode Option Key Value AD 5C CRC Note Multiple settings cannot be applied in a single command. Set Protocol Configuration (9Bh) The Set Protocol Configuration command is used to set protocol-specific configuration parameters. The table below defines the currently available protocol-specific parameters which can be set and the supported settings. Additional parameters will be supported in the future. 154 Set Configuration Commands Protocol Configuration Settings Protocol Value 0x05 (Gen2) Parameter Option Gen2 Session used for Inventory commands. (0x00) Value N/A 0x00 (S0 - Default) 0x01 (S1) 0x02 (S2) 0x03 (S3) Gen2 Q Value (0x12) 0x1B (eGo) n/a 0x1C (SeGo) n/a 0x1D (ATA) n/a 0x1E(Allegro/Title-21) n/a Dynamic (0x00) Automatically adjust Q value. N/A Static (0x01) - User specified Q Value between 0 and 15. 1 byte (0x00-0x0F) Note Setting the parameters using Set Protocol Configuration will override the implicit value set by a previous call to Set User Mode. Likewise, a subsequent call to Set User Mode will override the parameters set by Set Protocol Configuration. Get Protocol Configuration will always return the current setting regardless of whether it was set by Set Protocol Configuration or Set User Mode. Set Gen2 Session The following example sets the Gen2 session to S2: FF 03 9B 05 00 02 SOH Length OpCode Protocol Parameter Value DC EA CRC 155 Set Configuration Commands Set Q Value The Q valued can be set to a static user specified value or to dynamically change based on ThingMagic internal algorithms. When using the dynamic Q setting the Value parameter is dropped in the command. The following example statically sets the Q value to 6: FF 04 9B 05 12 01 06 SOH Length OpCode Protocol Parameter Option Value 80 A9 CRC The following example sets dynamic Q value adjusting: 156 FF 03 9B 05 12 00 SOH Length OpCode Protocol Parameter Option CE E8 CRC FCC Test Commands FCC Test Commands The following OpCodes are used for test purposes including regulatory certification testing. These commands cannot be run in the Bootloader. Note Set Power Mode to Full 0x00 before running FCC commands. FCC Test Commands OpCode Command Name Arguments Return BL App 0xC1 Set Operating Frequency (C1h) Frequency in kHz none 0xC3 Transmit CW Signal (C3h) CW mode, [timeout] none 157 FCC Test Commands Set Operating Frequency (C1h) The Set Operating Frequency command takes a 32-bit frequency value, expressed in kHz. For instance, to set the frequency to 915.26MHz, send the data value 915260 (0x000D F73C) to the reader. FF 04 C1 SOH Length OpCode 00 0D F7 3C F3 Freq to Set B7 CRC Transmit CW Signal (C3h) The Transmit CW Signal command turns the Continuous Wave (CW) signal On or Off or enables a PRBS signal. Sending 0x00 turns Off the CW signal; sending 0x01 turns On the CW signal; Sending 0x02 turns on a PRBS signal. The CW signal is transmitted at the last used power level. This example shuts off CW: FF 01 C3 00 SOH Length OpCode CW 1F BD CRC Some regulatory testing requires a PRBS (Pseudo-Random Bit Sequence) signal to simulate data transmission. To send a PRBS signal, along with sending CW=0x02, the Length field must be changed to 0x03. This indicates PRBS will be used and an extra 2 byte Timeout field must be added. When this PRBS mode is used the CW signal is on until the timeout expires, during that period the reader does not respond to commands. The following example generates a PRBS CW signal for 256 ms, 100% duty cycle: 158 FF 03 C3 02 SOH Length OpCode CW/PRBS 01 00 Timeout 01 00 CRC FCC Test Commands Get Operating Frequency (C8h) The Get Operating Frequency command returns the currently operating frequency, as set by Set Operating Frequency (C1h) for testing. The operating frequency is returned as a 32-bit value, expressed in kHz. For instance, for the frequency 915.26MHz, the value 0x000D F73C will be returned. FF 00 C1 SOH Length OpCode 1D C7 CRC 159 FCC Test Commands 160 Appendix A: Hardware Details This Appendix details the mechanicals for the M6e-TC including the pin 1 location for the serial connector. Mechanicals The following figures detail the hardware layout of the M6e-TC Module. Appendix A: Hardware Details 161 Mechanicals M6e-TC Mechanicals Antenna Connector The M6e-TC has one MMCX connector for interfacing to the antenna. 162 Appendix A: Hardware Details Mechanicals Communications Connector The communications interface on the module provides power, serial communications signals, and access to the GPIO inputs and outputs. The M6e-TC has a 14-pin connector. For the interface pin-out, see M6e-TC Digital Connectors. The following figure shows a diagram of the M6e-TC communications interface as you face the boards. M6e-TC Pin 1 Digital Connector Antenna Port Connectors The connectors used for the communications interface on the M6e-TC are as follows: JST SM14B-SRSS-TB Mating Connector: Connector Shell: JST SHR-14V-S-B Crimp Contacts: JST SSH-003T-PO.2-H Appendix A: Hardware Details 163 Mechanicals 164 Appendix A: Hardware Details Appendix B: Using the ArbSer Application This appendix explains how to use the ArbSer application. This application provides some simple commands for using the Mercury embedded modules to read tags. The ArbSer program is a simple terminal program with which you can communicate with the M4e, M5e, M5e-C, and M6e-TC modules. It provides several pre-formed commands, as well as a raw message interface that can be used to generate any command. The source code is part of the developer’s kit to provide an example of the message format and CRC calculation. The executable was built using a Windows 2000 PC. If the host PC’s operating system is different, the executable should be rebuilt using Microsoft Visual C++ 6.0, or other compatible compiler. If building ArbSer on another platform, some work may be necessary to integrate the serial port properly. ArbSer provides a help message if it is called with no argument: C:\> ArbSer ArbSer Version 3.2.0. Usage: ArbSer
Source Exif Data:
File Type : PDF File Type Extension : pdf MIME Type : application/pdf PDF Version : 1.6 Linearized : Yes Page Mode : UseOutlines XMP Toolkit : Adobe XMP Core 4.0-c321 44.398116, Tue Aug 04 2009 14:24:39 Producer : Acrobat Distiller 7.0.5 (Windows) Create Date : 2009:08:05 11:00:30Z Creator Tool : FrameMaker 8.0 Modify Date : 2009:11:20 06:10:32-06:00 Metadata Date : 2009:11:20 06:10:32-06:00 Format : application/pdf Creator : ThingMagic Inc. Title : M6e-Transcore Developer’s Guide Document ID : uuid:833166c3-0cbc-4302-8c87-881d30d98ad6 Instance ID : uuid:b2869293-23f7-4848-9e54-fdf597bc7533 Page Count : 204 Author : ThingMagic Inc.EXIF Metadata provided by EXIF.tools