mirror of
https://github.com/DreamSourceLab/DSView.git
synced 2025-01-13 13:32:53 +08:00
232 lines
6.2 KiB
Python
232 lines
6.2 KiB
Python
##
|
|
## This file is part of the libsigrokdecode project.
|
|
##
|
|
## Copyright (C) 2019-2020 Benjamin Vernoux <bvernoux@gmail.com>
|
|
##
|
|
## 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 <http://www.gnu.org/licenses/>.
|
|
##
|
|
## 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
|
|
## ...
|
|
|