## ## This file is part of the libsigrokdecode project. ## ## Copyright (C) 2019-2020 Benjamin Vernoux ## ## This program is free software; you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with this program; if not, see . ## ## v0.1 - 17 September 2019 B.VERNOUX using ST25R3916 Datasheet DS12484 Rev 1 (January 2019) ## v0.2 - 28 April 2020 B.VERNOUX using ST25R3916 Datasheet DS12484 Rev 2 (December 2019) https://www.st.com/resource/en/datasheet/st25r3916.pdf ## v0.3 - 17 June 2020 B.VERNOUX using ST25R3916 Datasheet DS12484 Rev 3 (04 June 2020) https://www.st.com/resource/en/datasheet/st25r3916.pdf ## ST25R3916 Datasheet DS12484 Rev 3 (04 June 2020) §4.4 Direct commands dir_cmd = { # addr: 'name' # Set Default 0xC0: 'SET_DEFAULT', 0xC1: 'SET_DEFAULT', # Stop All Activities 0xC2: 'STOP', 0xC3: 'STOP', # Transmit With CRC 0xC4: 'TXCRC', # Transmit Without CRC 0xC5: 'TXNOCRC', # Transmit REQA 0xC6: 'TXREQA', # Transmit WUPA 0xC7: 'TXWUPA', # NFC Initial Field ON 0xC8: 'NFCINITFON', # NFC Response Field ON 0xC9: 'NFCRESFON', # Go to Sense (Idle) 0xCD: 'GOIDLE', # Go to Sleep (Halt) 0xCE: 'GOHALT', # Mask Receive Data / Stops receivers and RX decoders 0xD0: 'STOPRX', # Unmask Receive Data / Starts receivers and RX decoders 0xD1: 'STARRX', # Change AM Modulation state 0xD2: 'SETAMSTATE', # Measure Amplitude 0xD3: 'MAMP', # Reset RX Gain 0xD5: 'RSTRXGAIN', # Adjust Regulators 0xD6: 'ADJREG', # Calibrate Driver Timing 0xD8: 'CALDRVTIM', # Measure Phase 0xD9: 'MPHASE', # Clear RSSI 0xDA: 'CLRRSSI', # Clear FIFO 0xDB: 'CLRFIFO', # Enter Transparent Mode 0xDC: 'TRMODE', # Calibrate Capacitive Sensor 0xDD: 'CALCAPA', # Measure Capacitance 0xDE: 'MCAPA', # Measure Power Supply 0xDF: 'MPOWER', # Start General Purpose Timer 0xE0: 'STARGPTIM', # Start Wake-up Timer 0xE1: 'STARWTIM', # Start Mask-receive Timer 0xE2: 'STARMSKTIM', # Start No-response Timer 0xE3: 'STARNRESPTIM', # Start PPON2 Timer 0xE4: 'STARPPON2TIM', # Stop No-response Timer 0xE8: 'STOPNRESTIM', # RFU / Not Used 0xFA: 'RFU', # Register Space-B Access 0xFB: 'REGSPACEB', # Register Test access 0xFC: 'TESTACCESS' # Other codes => RFU / Not Used } ## ST25R3916 Datasheet DS12484 Rev 2 (December 2019) §4.5 Registers Table 17. List of registers - Space A ## ST25R3916 Datasheet DS12484 Rev 2 (December 2019) §4.3.3 Serial peripheral interface (SPI) Table 11. SPI operation modes regsSpaceA = { # addr: 'name' # §4.5 Registers Table 17. List of registers - Space A # IO configuration 0x00: 'IOCFG1', 0x01: 'IOCFG2', # Operation control and mode definition 0x02: 'OPCTRL', 0x03: 'MODEDEF', 0x04: 'BITRATE', # Protocol configuration 0x05: 'TYPEA', 0x06: 'TYPEB', 0x07: 'TYPEBF', 0x08: 'NFCIP1', 0x09: 'STREAM', 0x0A: 'AUX', # Receiver configuration 0x0B: 'RXCFG1', 0x0C: 'RXCFG2', 0x0D: 'RXCFG3', 0x0E: 'RXCFG4', # Timer definition 0x0F: 'MSKRXTIM', 0x10: 'NRESPTIM1', 0x11: 'NRESPTIM2', 0x12: 'TIMEMV', 0x13: 'GPTIM1', 0x14: 'GPTIM2', 0x15: 'PPON2', # Interrupt and associated reporting 0x16: 'MSKMAINIRQ', 0x17: 'MSKTIMNFCIRQ', 0x18: 'MSKERRWAKEIRQ', 0x19: 'TARGIRQ', 0x1A: 'MAINIRQ', 0x1B: 'TIMNFCIRQ', 0x1C: 'ERRWAKEIRQ', 0x1D: 'TARGIRQ', 0x1E: 'FIFOSTAT1', 0x1F: 'FIFOSTAT2', 0x20: 'COLLDISP', 0x21: 'TARGDISP', # Definition of number of transmitted bytes 0x22: 'NBTXB1', 0x23: 'NBTXB2', 0x24: 'BITRATEDET', # A/D converter output 0x25: 'ADCONVOUT', # Antenna calibration 0x26: 'ANTTUNECTRL1', 0x27: 'ANTTUNECTRL2', # Antenna driver and modulation 0x28: 'TXDRV', 0x29: 'TARGMOD', # External field detector threshold 0x2A: 'EXTFIELDON', 0x2B: 'EXTFIELDOFF', # Regulator 0x2C: 'REGVDDCTRL', # Receiver state display 0x2D: 'RSSIDISP', 0x2E: 'GAINSTATE', # Capacitive sensor 0x2F: 'CAPACTRL', 0x30: 'CAPADISP', # Auxiliary display 0x31: 'AUXDISP', # Wake-up 0x32: 'WAKETIMCTRL', 0x33: 'AMPCFG', 0x34: 'AMPREF', 0x35: 'AMPAAVGDISP', 0x36: 'AMPDISP', 0x37: 'PHASECFG', 0x38: 'PHASEREF', 0x39: 'PHASEAAVGDISP', 0x3A: 'PHASEDISP', 0x3B: 'CAPACFG', 0x3C: 'CAPAREF', 0x3D: 'CAPAAAVGDISP', 0x3E: 'CAPADISP', # IC identity 0x3F: 'ICIDENT', ## ST25R3916 Datasheet DS12484 Rev 2 (December 2019) §4.3.3 Serial peripheral interface (SPI) Table 11. SPI operation modes 0xA0: 'PT_memLoadA', 0xA8: 'PT_memLoadF', 0xAC: 'PT_memLoadTSN', 0xBF: 'PT_memRead' } ## ST25R3916 Datasheet DS12484 Rev 2 (December 2019) §4.5 Registers Table 18. List of registers - Space B regsSpaceB = { # addr: 'name' # §4.5 Registers Table 18. List of registers - Space B # Protocol configuration 0x05: 'EMDSUPPRCONF', 0x06: 'SUBCSTARTIM', # Receiver configuration 0x0B: 'P2PRXCONF', 0x0C: 'CORRCONF1', 0x0D: 'CORRCONF2', # Timer definition 0x0F: 'SQUELSHTIM', 0x15: 'NFCGUARDTIM', # Antenna driver and modulation 0x28: 'AUXMODSET', 0x29: 'TXDRVTIM', # External field detector threshold 0x2A: 'RESAMMODE', 0x2B: 'TXDRVTIMDISP', # Regulator 0x2C: 'REGDISP', # Protection 0x30: 'OSHOOTCONF1', 0x31: 'OSHOOTCONF2', 0x32: 'USHOOTCONF1', 0x33: 'USHOOTCONF2' } ## ST25R3916 Datasheet DS12484 Rev 2 (December 2019) §4.4.17 Test access regsTest = { # addr: 'name' # §4.4.17 Test access (Typo in datasheet it is not register 0x00 but 0x01) 0x01: 'ANTSTOBS' } ## Optional TODO add important status bit fields / ANN_STATUS ## Interrupt and associated reporting => Registers Space A from Address (hex) 0x16 to 0x21 ## §4.5.58 RSSI display register ## §4.5.59 Gain reduction state register ## ...