 389ff92cc1
			
		
	
	
		389ff92cc1
		
			
		
	
	
	
	
		
			
			* Makefile, Scripts: new linter * About: remove ID from IC * Firmware: remove double define for DIVC/DIVR * Scripts: check folder names too. Docker: replace syntax check with make lint. * Reformat Sources and Migrate to new file naming convention * Docker: symlink clang-format-12 to clang-format * Add coding style guide
		
			
				
	
	
		
			1385 lines
		
	
	
		
			65 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1385 lines
		
	
	
		
			65 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
 | |
| /******************************************************************************
 | |
|   * \attention
 | |
|   *
 | |
|   * <h2><center>© COPYRIGHT 2020 STMicroelectronics</center></h2>
 | |
|   *
 | |
|   * Licensed under ST MYLIBERTY SOFTWARE LICENSE AGREEMENT (the "License");
 | |
|   * You may not use this file except in compliance with the License.
 | |
|   * You may obtain a copy of the License at:
 | |
|   *
 | |
|   *        www.st.com/myliberty
 | |
|   *
 | |
|   * Unless required by applicable law or agreed to in writing, software 
 | |
|   * distributed under the License is distributed on an "AS IS" BASIS, 
 | |
|   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
 | |
|   * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
 | |
|   * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
 | |
|   * See the License for the specific language governing permissions and
 | |
|   * limitations under the License.
 | |
|   *
 | |
| ******************************************************************************/
 | |
| 
 | |
| /*
 | |
|  *      PROJECT:   ST25R3916 firmware
 | |
|  *      Revision: 
 | |
|  *      LANGUAGE:  ISO C99
 | |
|  */
 | |
| 
 | |
| /*! \file
 | |
|  *
 | |
|  *  \author Gustavo Patricio
 | |
|  *
 | |
|  *  \brief ST25R3916 communication declaration file
 | |
|  *  
 | |
|  *  This driver provides basic abstraction for communication with the ST25R3916
 | |
|  *  
 | |
|  *
 | |
|  * \addtogroup RFAL
 | |
|  * @{
 | |
|  *
 | |
|  * \addtogroup RFAL-HAL
 | |
|  * \brief RFAL Hardware Abstraction Layer
 | |
|  * @{
 | |
|  *
 | |
|  * \addtogroup ST25R3916
 | |
|  * \brief RFAL ST25R3916 Driver
 | |
|  * @{
 | |
|  * 
 | |
|  * \addtogroup ST25R3916_COM
 | |
|  * \brief RFAL ST25R3916 Communications
 | |
|  * @{
 | |
|  * 
 | |
|  */
 | |
| 
 | |
| #ifndef ST25R3916_COM_H
 | |
| #define ST25R3916_COM_H
 | |
| 
 | |
| /*
 | |
| ******************************************************************************
 | |
| * INCLUDES
 | |
| ******************************************************************************
 | |
| */
 | |
| #include "platform.h"
 | |
| #include "st_errno.h"
 | |
| 
 | |
| /*
 | |
| ******************************************************************************
 | |
| * GLOBAL DEFINES
 | |
| ******************************************************************************
 | |
| */
 | |
| #define ST25R3916_SPACE_B 0x40U /*!< ST25R3916 Space-B indicator                          */
 | |
| #define ST25R3916_SPACE_B_REG_LEN 16U /*!< Number of register in the space B                    */
 | |
| 
 | |
| #define ST25R3916_FIFO_STATUS_LEN 2 /*!< Number of FIFO Status Register                       */
 | |
| 
 | |
| #define ST25R3916_PTM_A_LEN 15U /*!< Passive target memory A config length                */
 | |
| #define ST25R3916_PTM_B_LEN 0U /*!< Passive target memory B config length                */
 | |
| #define ST25R3916_PTM_F_LEN 21U /*!< Passive target memory F config length                */
 | |
| #define ST25R3916_PTM_TSN_LEN 12U /*!< Passive target memory TSN data length                */
 | |
| 
 | |
| /*! Full Passive target memory length */
 | |
| #define ST25R3916_PTM_LEN \
 | |
|     (ST25R3916_PTM_A_LEN + ST25R3916_PTM_B_LEN + ST25R3916_PTM_F_LEN + ST25R3916_PTM_TSN_LEN)
 | |
| 
 | |
| /* IO configuration registers */
 | |
| #define ST25R3916_REG_IO_CONF1 0x00U /*!< RW IO Configuration Register 1                       */
 | |
| #define ST25R3916_REG_IO_CONF2 0x01U /*!< RW IO Configuration Register 2                       */
 | |
| 
 | |
| /* Operation control and mode definition registers */
 | |
| #define ST25R3916_REG_OP_CONTROL 0x02U /*!< RW Operation Control Register                        */
 | |
| #define ST25R3916_REG_MODE 0x03U /*!< RW Mode Definition Register                          */
 | |
| #define ST25R3916_REG_BIT_RATE 0x04U /*!< RW Bit Rate Definition Register                      */
 | |
| 
 | |
| /* Protocol Configuration registers */
 | |
| #define ST25R3916_REG_ISO14443A_NFC \
 | |
|     0x05U /*!< RW ISO14443A and NFC 106 kBit/s Settings Register    */
 | |
| #define ST25R3916_REG_EMD_SUP_CONF \
 | |
|     (ST25R3916_SPACE_B | 0x05U) /*!< RW EMD Suppression Configuration Register            */
 | |
| #define ST25R3916_REG_ISO14443B_1 \
 | |
|     0x06U /*!< RW ISO14443B Settings Register 1                     */
 | |
| #define ST25R3916_REG_SUBC_START_TIME \
 | |
|     (ST25R3916_SPACE_B | 0x06U) /*!< RW Subcarrier Start Time Register                    */
 | |
| #define ST25R3916_REG_ISO14443B_2 \
 | |
|     0x07U /*!< RW ISO14443B Settings Register 2                     */
 | |
| #define ST25R3916_REG_PASSIVE_TARGET \
 | |
|     0x08U /*!< RW Passive Target Definition Register                */
 | |
| #define ST25R3916_REG_STREAM_MODE \
 | |
|     0x09U /*!< RW Stream Mode Definition Register                   */
 | |
| #define ST25R3916_REG_AUX 0x0AU /*!< RW Auxiliary Definition Register                     */
 | |
| 
 | |
| /* Receiver Configuration registers */
 | |
| #define ST25R3916_REG_RX_CONF1 0x0BU /*!< RW Receiver Configuration Register 1                 */
 | |
| #define ST25R3916_REG_RX_CONF2 0x0CU /*!< RW Receiver Configuration Register 2                 */
 | |
| #define ST25R3916_REG_RX_CONF3 0x0DU /*!< RW Receiver Configuration Register 3                 */
 | |
| #define ST25R3916_REG_RX_CONF4 0x0EU /*!< RW Receiver Configuration Register 4                 */
 | |
| #define ST25R3916_REG_P2P_RX_CONF \
 | |
|     (ST25R3916_SPACE_B | 0x0BU) /*!< RW P2P Receiver Configuration Register 1             */
 | |
| #define ST25R3916_REG_CORR_CONF1 \
 | |
|     (ST25R3916_SPACE_B | 0x0CU) /*!< RW Correlator configuration register 1               */
 | |
| #define ST25R3916_REG_CORR_CONF2 \
 | |
|     (ST25R3916_SPACE_B | 0x0DU) /*!< RW Correlator configuration register 2               */
 | |
| 
 | |
| /* Timer definition registers */
 | |
| #define ST25R3916_REG_MASK_RX_TIMER \
 | |
|     0x0FU /*!< RW Mask Receive Timer Register                       */
 | |
| #define ST25R3916_REG_NO_RESPONSE_TIMER1 \
 | |
|     0x10U /*!< RW No-response Timer Register 1                      */
 | |
| #define ST25R3916_REG_NO_RESPONSE_TIMER2 \
 | |
|     0x11U /*!< RW No-response Timer Register 2                      */
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL \
 | |
|     0x12U /*!< RW Timer and EMV Control                             */
 | |
| #define ST25R3916_REG_GPT1 0x13U /*!< RW General Purpose Timer Register 1                  */
 | |
| #define ST25R3916_REG_GPT2 0x14U /*!< RW General Purpose Timer Register 2                  */
 | |
| #define ST25R3916_REG_PPON2 0x15U /*!< RW PPON2 Field waiting Timer Register                */
 | |
| #define ST25R3916_REG_SQUELCH_TIMER \
 | |
|     (ST25R3916_SPACE_B | 0x0FU) /*!< RW Squelch timeout Register                          */
 | |
| #define ST25R3916_REG_FIELD_ON_GT \
 | |
|     (ST25R3916_SPACE_B | 0x15U) /*!< RW NFC Field on guard time                           */
 | |
| 
 | |
| /* Interrupt and associated reporting registers */
 | |
| #define ST25R3916_REG_IRQ_MASK_MAIN \
 | |
|     0x16U /*!< RW Mask Main Interrupt Register                      */
 | |
| #define ST25R3916_REG_IRQ_MASK_TIMER_NFC \
 | |
|     0x17U /*!< RW Mask Timer and NFC Interrupt Register             */
 | |
| #define ST25R3916_REG_IRQ_MASK_ERROR_WUP \
 | |
|     0x18U /*!< RW Mask Error and Wake-up Interrupt Register         */
 | |
| #define ST25R3916_REG_IRQ_MASK_TARGET \
 | |
|     0x19U /*!< RW Mask 3916 Target Interrupt Register               */
 | |
| #define ST25R3916_REG_IRQ_MAIN 0x1AU /*!< R  Main Interrupt Register                           */
 | |
| #define ST25R3916_REG_IRQ_TIMER_NFC \
 | |
|     0x1BU /*!< R  Timer and NFC Interrupt Register                  */
 | |
| #define ST25R3916_REG_IRQ_ERROR_WUP \
 | |
|     0x1CU /*!< R  Error and Wake-up Interrupt Register              */
 | |
| #define ST25R3916_REG_IRQ_TARGET 0x1DU /*!< R  ST25R3916 Target Interrupt Register               */
 | |
| #define ST25R3916_REG_FIFO_STATUS1 \
 | |
|     0x1EU /*!< R  FIFO Status Register 1                            */
 | |
| #define ST25R3916_REG_FIFO_STATUS2 \
 | |
|     0x1FU /*!< R  FIFO Status Register 2                            */
 | |
| #define ST25R3916_REG_COLLISION_STATUS \
 | |
|     0x20U /*!< R  Collision Display Register                        */
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS \
 | |
|     0x21U /*!< R  Passive target state status                       */
 | |
| 
 | |
| /* Definition of number of transmitted bytes */
 | |
| #define ST25R3916_REG_NUM_TX_BYTES1 \
 | |
|     0x22U /*!< RW Number of Transmitted Bytes Register 1            */
 | |
| #define ST25R3916_REG_NUM_TX_BYTES2 \
 | |
|     0x23U /*!< RW Number of Transmitted Bytes Register 2            */
 | |
| 
 | |
| /* NFCIP Bit Rate Display Register */
 | |
| #define ST25R3916_REG_NFCIP1_BIT_RATE \
 | |
|     0x24U /*!< R  NFCIP Bit Rate Detection Display Register         */
 | |
| 
 | |
| /* A/D Converter Output Register */
 | |
| #define ST25R3916_REG_AD_RESULT 0x25U /*!< R  A/D Converter Output Register                     */
 | |
| 
 | |
| /* Antenna tuning registers */
 | |
| #define ST25R3916_REG_ANT_TUNE_A 0x26U /*!< RW Antenna Tuning Control (AAT-A) Register 1         */
 | |
| #define ST25R3916_REG_ANT_TUNE_B 0x27U /*!< RW Antenna Tuning Control (AAT-B) Register 2         */
 | |
| 
 | |
| /* Antenna Driver and Modulation registers */
 | |
| #define ST25R3916_REG_TX_DRIVER 0x28U /*!< RW TX driver register                                */
 | |
| #define ST25R3916_REG_PT_MOD 0x29U /*!< RW PT modulation Register                            */
 | |
| #define ST25R3916_REG_AUX_MOD \
 | |
|     (ST25R3916_SPACE_B | 0x28U) /*!< RW Aux Modulation setting Register                   */
 | |
| #define ST25R3916_REG_TX_DRIVER_TIMING \
 | |
|     (ST25R3916_SPACE_B | 0x29U) /*!< RW TX driver timing Register                         */
 | |
| #define ST25R3916_REG_RES_AM_MOD \
 | |
|     (ST25R3916_SPACE_B | 0x2AU) /*!< RW Resistive AM modulation register                  */
 | |
| #define ST25R3916_REG_TX_DRIVER_STATUS \
 | |
|     (ST25R3916_SPACE_B | 0x2BU) /*!< R  TX driver timing readout Register                 */
 | |
| 
 | |
| /* External Field Detector Threshold Registers */
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV \
 | |
|     0x2AU /*!< RW External Field Detector Activation Threshold Reg  */
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV \
 | |
|     0x2BU /*!< RW External Field Detector Deactivation Threshold Reg*/
 | |
| 
 | |
| /* Regulator registers */
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL \
 | |
|     0x2CU /*!< RW Regulated Voltage Control Register                */
 | |
| #define ST25R3916_REG_REGULATOR_RESULT \
 | |
|     (ST25R3916_SPACE_B | 0x2CU) /*!< R Regulator Display Register                         */
 | |
| 
 | |
| /* Receiver State Display Register */
 | |
| #define ST25R3916_REG_RSSI_RESULT \
 | |
|     0x2DU /*!< R RSSI Display Register                              */
 | |
| #define ST25R3916_REG_GAIN_RED_STATE \
 | |
|     0x2EU /*!< R Gain Reduction State Register                      */
 | |
| #define ST25R3916_REG_CAP_SENSOR_CONTROL \
 | |
|     0x2FU /*!< RW Capacitive Sensor Control Register                */
 | |
| #define ST25R3916_REG_CAP_SENSOR_RESULT \
 | |
|     0x30U /*!< R  Capacitive Sensor Display Register                */
 | |
| #define ST25R3916_REG_AUX_DISPLAY \
 | |
|     0x31U /*!< R Auxiliary Display Register                         */
 | |
| 
 | |
| /* Over/Undershoot Protection Configuration Registers */
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF1 \
 | |
|     (ST25R3916_SPACE_B | 0x30U) /*!< RW  Overshoot Protection Configuration Register 1    */
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF2 \
 | |
|     (ST25R3916_SPACE_B | 0x31U) /*!< RW  Overshoot Protection Configuration Register 2    */
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF1 \
 | |
|     (ST25R3916_SPACE_B | 0x32U) /*!< RW  Undershoot Protection Configuration Register 1   */
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF2 \
 | |
|     (ST25R3916_SPACE_B | 0x33U) /*!< RW  Undershoot Protection Configuration Register 2   */
 | |
| 
 | |
| /* Detection of card presence */
 | |
| #define ST25R3916_REG_WUP_TIMER_CONTROL \
 | |
|     0x32U /*!< RW Wake-up Timer Control Register                    */
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_CONF \
 | |
|     0x33U /*!< RW Amplitude Measurement Configuration Register      */
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_REF \
 | |
|     0x34U /*!< RW Amplitude Measurement Reference Register          */
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_AA_RESULT \
 | |
|     0x35U /*!< R  Amplitude Measurement Auto Averaging Display Reg  */
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_RESULT \
 | |
|     0x36U /*!< R  Amplitude Measurement Display Register            */
 | |
| #define ST25R3916_REG_PHASE_MEASURE_CONF \
 | |
|     0x37U /*!< RW Phase Measurement Configuration Register          */
 | |
| #define ST25R3916_REG_PHASE_MEASURE_REF \
 | |
|     0x38U /*!< RW Phase Measurement Reference Register              */
 | |
| #define ST25R3916_REG_PHASE_MEASURE_AA_RESULT \
 | |
|     0x39U /*!< R  Phase Measurement Auto Averaging Display Register */
 | |
| #define ST25R3916_REG_PHASE_MEASURE_RESULT \
 | |
|     0x3AU /*!< R  Phase Measurement Display Register                */
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_CONF \
 | |
|     0x3BU /*!< RW Capacitance Measurement Configuration Register    */
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_REF \
 | |
|     0x3CU /*!< RW Capacitance Measurement Reference Register        */
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_AA_RESULT \
 | |
|     0x3DU /*!< R  Capacitance Measurement Auto Averaging Display Reg*/
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_RESULT \
 | |
|     0x3EU /*!< R  Capacitance Measurement Display Register          */
 | |
| 
 | |
| /* IC identity  */
 | |
| #define ST25R3916_REG_IC_IDENTITY \
 | |
|     0x3FU /*!< R  Chip Id: 0 for old silicon, v2 silicon: 0x09      */
 | |
| 
 | |
| /*! Register bit definitions  \cond DOXYGEN_SUPRESS */
 | |
| 
 | |
| #define ST25R3916_REG_IO_CONF1_single (1U << 7)
 | |
| #define ST25R3916_REG_IO_CONF1_rfo2 (1U << 6)
 | |
| #define ST25R3916_REG_IO_CONF1_i2c_thd1 (1U << 5)
 | |
| #define ST25R3916_REG_IO_CONF1_i2c_thd0 (1U << 4)
 | |
| #define ST25R3916_REG_IO_CONF1_i2c_thd_mask (3U << 4)
 | |
| #define ST25R3916_REG_IO_CONF1_i2c_thd_shift (4U)
 | |
| #define ST25R3916_REG_IO_CONF1_rfu (1U << 3)
 | |
| #define ST25R3916_REG_IO_CONF1_out_cl1 (1U << 2)
 | |
| #define ST25R3916_REG_IO_CONF1_out_cl0 (1U << 1)
 | |
| #define ST25R3916_REG_IO_CONF1_out_cl_disabled (3U << 1)
 | |
| #define ST25R3916_REG_IO_CONF1_out_cl_13_56MHZ (2U << 1)
 | |
| #define ST25R3916_REG_IO_CONF1_out_cl_4_78MHZ (1U << 1)
 | |
| #define ST25R3916_REG_IO_CONF1_out_cl_3_39MHZ (0U << 1)
 | |
| #define ST25R3916_REG_IO_CONF1_out_cl_mask (3U << 1)
 | |
| #define ST25R3916_REG_IO_CONF1_out_cl_shift (1U)
 | |
| #define ST25R3916_REG_IO_CONF1_lf_clk_off (1U << 0)
 | |
| #define ST25R3916_REG_IO_CONF1_lf_clk_off_on (1U << 0)
 | |
| #define ST25R3916_REG_IO_CONF1_lf_clk_off_off (0U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_IO_CONF2_sup3V (1U << 7)
 | |
| #define ST25R3916_REG_IO_CONF2_sup3V_3V (1U << 7)
 | |
| #define ST25R3916_REG_IO_CONF2_sup3V_5V (0U << 7)
 | |
| #define ST25R3916_REG_IO_CONF2_vspd_off (1U << 6)
 | |
| #define ST25R3916_REG_IO_CONF2_aat_en (1U << 5)
 | |
| #define ST25R3916_REG_IO_CONF2_miso_pd2 (1U << 4)
 | |
| #define ST25R3916_REG_IO_CONF2_miso_pd1 (1U << 3)
 | |
| #define ST25R3916_REG_IO_CONF2_io_drv_lvl (1U << 2)
 | |
| #define ST25R3916_REG_IO_CONF2_slow_up (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_OP_CONTROL_en (1U << 7)
 | |
| #define ST25R3916_REG_OP_CONTROL_rx_en (1U << 6)
 | |
| #define ST25R3916_REG_OP_CONTROL_rx_chn (1U << 5)
 | |
| #define ST25R3916_REG_OP_CONTROL_rx_man (1U << 4)
 | |
| #define ST25R3916_REG_OP_CONTROL_tx_en (1U << 3)
 | |
| #define ST25R3916_REG_OP_CONTROL_wu (1U << 2)
 | |
| #define ST25R3916_REG_OP_CONTROL_en_fd_c1 (1U << 1)
 | |
| #define ST25R3916_REG_OP_CONTROL_en_fd_c0 (1U << 0)
 | |
| #define ST25R3916_REG_OP_CONTROL_en_fd_efd_off (0U << 0)
 | |
| #define ST25R3916_REG_OP_CONTROL_en_fd_manual_efd_ca (1U << 0)
 | |
| #define ST25R3916_REG_OP_CONTROL_en_fd_manual_efd_pdt (2U << 0)
 | |
| #define ST25R3916_REG_OP_CONTROL_en_fd_auto_efd (3U << 0)
 | |
| #define ST25R3916_REG_OP_CONTROL_en_fd_shift (0U)
 | |
| #define ST25R3916_REG_OP_CONTROL_en_fd_mask (3U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_MODE_targ (1U << 7)
 | |
| #define ST25R3916_REG_MODE_targ_targ (1U << 7)
 | |
| #define ST25R3916_REG_MODE_targ_init (0U << 7)
 | |
| #define ST25R3916_REG_MODE_om3 (1U << 6)
 | |
| #define ST25R3916_REG_MODE_om2 (1U << 5)
 | |
| #define ST25R3916_REG_MODE_om1 (1U << 4)
 | |
| #define ST25R3916_REG_MODE_om0 (1U << 3)
 | |
| #define ST25R3916_REG_MODE_om_bpsk_stream (0xfU << 3)
 | |
| #define ST25R3916_REG_MODE_om_subcarrier_stream (0xeU << 3)
 | |
| #define ST25R3916_REG_MODE_om_topaz (0x4U << 3)
 | |
| #define ST25R3916_REG_MODE_om_felica (0x3U << 3)
 | |
| #define ST25R3916_REG_MODE_om_iso14443b (0x2U << 3)
 | |
| #define ST25R3916_REG_MODE_om_iso14443a (0x1U << 3)
 | |
| #define ST25R3916_REG_MODE_om_targ_nfca (0x1U << 3)
 | |
| #define ST25R3916_REG_MODE_om_targ_nfcb (0x2U << 3)
 | |
| #define ST25R3916_REG_MODE_om_targ_nfcf (0x4U << 3)
 | |
| #define ST25R3916_REG_MODE_om_targ_nfcip (0x7U << 3)
 | |
| #define ST25R3916_REG_MODE_om_nfc (0x0U << 3)
 | |
| #define ST25R3916_REG_MODE_om_mask (0xfU << 3)
 | |
| #define ST25R3916_REG_MODE_om_shift (3U)
 | |
| #define ST25R3916_REG_MODE_tr_am (1U << 2)
 | |
| #define ST25R3916_REG_MODE_tr_am_ook (0U << 2)
 | |
| #define ST25R3916_REG_MODE_tr_am_am (1U << 2)
 | |
| #define ST25R3916_REG_MODE_nfc_ar1 (1U << 1)
 | |
| #define ST25R3916_REG_MODE_nfc_ar0 (1U << 0)
 | |
| #define ST25R3916_REG_MODE_nfc_ar_off (0U << 0)
 | |
| #define ST25R3916_REG_MODE_nfc_ar_auto_rx (1U << 0)
 | |
| #define ST25R3916_REG_MODE_nfc_ar_eof (2U << 0)
 | |
| #define ST25R3916_REG_MODE_nfc_ar_rfu (3U << 0)
 | |
| #define ST25R3916_REG_MODE_nfc_ar_mask (3U << 0)
 | |
| #define ST25R3916_REG_MODE_nfc_ar_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_BIT_RATE_txrate_106 (0x0U << 4)
 | |
| #define ST25R3916_REG_BIT_RATE_txrate_212 (0x1U << 4)
 | |
| #define ST25R3916_REG_BIT_RATE_txrate_424 (0x2U << 4)
 | |
| #define ST25R3916_REG_BIT_RATE_txrate_848 (0x3U << 4)
 | |
| #define ST25R3916_REG_BIT_RATE_txrate_mask (0x3U << 4)
 | |
| #define ST25R3916_REG_BIT_RATE_txrate_shift (4U)
 | |
| #define ST25R3916_REG_BIT_RATE_rxrate_106 (0x0U << 0)
 | |
| #define ST25R3916_REG_BIT_RATE_rxrate_212 (0x1U << 0)
 | |
| #define ST25R3916_REG_BIT_RATE_rxrate_424 (0x2U << 0)
 | |
| #define ST25R3916_REG_BIT_RATE_rxrate_848 (0x3U << 0)
 | |
| #define ST25R3916_REG_BIT_RATE_rxrate_mask (0x3U << 0)
 | |
| #define ST25R3916_REG_BIT_RATE_rxrate_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_ISO14443A_NFC_no_tx_par (1U << 7)
 | |
| #define ST25R3916_REG_ISO14443A_NFC_no_tx_par_off (0U << 7)
 | |
| #define ST25R3916_REG_ISO14443A_NFC_no_rx_par (1U << 6)
 | |
| #define ST25R3916_REG_ISO14443A_NFC_no_rx_par_off (0U << 6)
 | |
| #define ST25R3916_REG_ISO14443A_NFC_nfc_f0 (1U << 5)
 | |
| #define ST25R3916_REG_ISO14443A_NFC_nfc_f0_off (0U << 5)
 | |
| #define ST25R3916_REG_ISO14443A_NFC_p_len3 (1U << 4)
 | |
| #define ST25R3916_REG_ISO14443A_NFC_p_len2 (1U << 3)
 | |
| #define ST25R3916_REG_ISO14443A_NFC_p_len1 (1U << 2)
 | |
| #define ST25R3916_REG_ISO14443A_NFC_p_len0 (1U << 1)
 | |
| #define ST25R3916_REG_ISO14443A_NFC_p_len_mask (0xfU << 1)
 | |
| #define ST25R3916_REG_ISO14443A_NFC_p_len_shift (1U)
 | |
| #define ST25R3916_REG_ISO14443A_NFC_antcl (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_EMD_SUP_CONF_emd_emv (1U << 7)
 | |
| #define ST25R3916_REG_EMD_SUP_CONF_emd_emv_on (1U << 7)
 | |
| #define ST25R3916_REG_EMD_SUP_CONF_emd_emv_off (0U << 7)
 | |
| #define ST25R3916_REG_EMD_SUP_CONF_rx_start_emv (1U << 6)
 | |
| #define ST25R3916_REG_EMD_SUP_CONF_rx_start_emv_on (1U << 6)
 | |
| #define ST25R3916_REG_EMD_SUP_CONF_rx_start_emv_off (0U << 6)
 | |
| #define ST25R3916_REG_EMD_SUP_CONF_rfu1 (1U << 5)
 | |
| #define ST25R3916_REG_EMD_SUP_CONF_rfu0 (1U << 4)
 | |
| #define ST25R3916_REG_EMD_SUP_CONF_emd_thld3 (1U << 3)
 | |
| #define ST25R3916_REG_EMD_SUP_CONF_emd_thld2 (1U << 2)
 | |
| #define ST25R3916_REG_EMD_SUP_CONF_emd_thld1 (1U << 1)
 | |
| #define ST25R3916_REG_EMD_SUP_CONF_emd_thld0 (1U << 0)
 | |
| #define ST25R3916_REG_EMD_SUP_CONF_emd_thld_mask (0xfU << 0)
 | |
| #define ST25R3916_REG_EMD_SUP_CONF_emd_thld_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_SUBC_START_TIME_rfu2 (1U << 7)
 | |
| #define ST25R3916_REG_SUBC_START_TIME_rfu1 (1U << 6)
 | |
| #define ST25R3916_REG_SUBC_START_TIME_rfu0 (1U << 5)
 | |
| #define ST25R3916_REG_SUBC_START_TIME_sst4 (1U << 4)
 | |
| #define ST25R3916_REG_SUBC_START_TIME_sst3 (1U << 3)
 | |
| #define ST25R3916_REG_SUBC_START_TIME_sst2 (1U << 2)
 | |
| #define ST25R3916_REG_SUBC_START_TIME_sst1 (1U << 1)
 | |
| #define ST25R3916_REG_SUBC_START_TIME_sst0 (1U << 0)
 | |
| #define ST25R3916_REG_SUBC_START_TIME_sst_mask (0x1fU << 0)
 | |
| #define ST25R3916_REG_SUBC_START_TIME_sst_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_ISO14443B_1_egt2 (1U << 7)
 | |
| #define ST25R3916_REG_ISO14443B_1_egt1 (1U << 6)
 | |
| #define ST25R3916_REG_ISO14443B_1_egt0 (1U << 5)
 | |
| #define ST25R3916_REG_ISO14443B_1_egt_shift (5U)
 | |
| #define ST25R3916_REG_ISO14443B_1_egt_mask (7U << 5)
 | |
| #define ST25R3916_REG_ISO14443B_1_sof_1 (1U << 3)
 | |
| #define ST25R3916_REG_ISO14443B_1_sof_1_3etu (1U << 3)
 | |
| #define ST25R3916_REG_ISO14443B_1_sof_1_2etu (0U << 3)
 | |
| #define ST25R3916_REG_ISO14443B_1_sof_0 (1U << 4)
 | |
| #define ST25R3916_REG_ISO14443B_1_sof_0_11etu (1U << 4)
 | |
| #define ST25R3916_REG_ISO14443B_1_sof_0_10etu (0U << 4)
 | |
| #define ST25R3916_REG_ISO14443B_1_sof_mask (3U << 3)
 | |
| #define ST25R3916_REG_ISO14443B_1_eof (1U << 2)
 | |
| #define ST25R3916_REG_ISO14443B_1_eof_11etu (1U << 2)
 | |
| #define ST25R3916_REG_ISO14443B_1_eof_10etu (0U << 2)
 | |
| #define ST25R3916_REG_ISO14443B_1_half (1U << 1)
 | |
| #define ST25R3916_REG_ISO14443B_1_rx_st_om (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_ISO14443B_2_tr1_1 (1U << 7)
 | |
| #define ST25R3916_REG_ISO14443B_2_tr1_0 (1U << 6)
 | |
| #define ST25R3916_REG_ISO14443B_2_tr1_64fs32fs (1U << 6)
 | |
| #define ST25R3916_REG_ISO14443B_2_tr1_80fs80fs (0U << 6)
 | |
| #define ST25R3916_REG_ISO14443B_2_tr1_mask (3U << 6)
 | |
| #define ST25R3916_REG_ISO14443B_2_tr1_shift (6U)
 | |
| #define ST25R3916_REG_ISO14443B_2_no_sof (1U << 5)
 | |
| #define ST25R3916_REG_ISO14443B_2_no_eof (1U << 4)
 | |
| #define ST25R3916_REG_ISO14443B_rfu1 (1U << 3)
 | |
| #define ST25R3916_REG_ISO14443B_rfu0 (1U << 2)
 | |
| #define ST25R3916_REG_ISO14443B_2_f_p1 (1U << 1)
 | |
| #define ST25R3916_REG_ISO14443B_2_f_p0 (1U << 0)
 | |
| #define ST25R3916_REG_ISO14443B_2_f_p_96 (3U << 0)
 | |
| #define ST25R3916_REG_ISO14443B_2_f_p_80 (2U << 0)
 | |
| #define ST25R3916_REG_ISO14443B_2_f_p_64 (1U << 0)
 | |
| #define ST25R3916_REG_ISO14443B_2_f_p_48 (0U << 0)
 | |
| #define ST25R3916_REG_ISO14443B_2_f_p_mask (3U << 0)
 | |
| #define ST25R3916_REG_ISO14443B_2_f_p_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_fdel_3 (1U << 7)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_fdel_2 (1U << 6)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_fdel_1 (1U << 5)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_fdel_0 (1U << 4)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_fdel_mask (0xfU << 4)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_fdel_shift (4U)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_d_ac_ap2p (1U << 3)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_d_212_424_1r (1U << 2)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_rfu (1U << 1)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_d_106_ac_a (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_STREAM_MODE_rfu (1U << 7)
 | |
| #define ST25R3916_REG_STREAM_MODE_scf1 (1U << 6)
 | |
| #define ST25R3916_REG_STREAM_MODE_scf0 (1U << 5)
 | |
| #define ST25R3916_REG_STREAM_MODE_scf_sc212 (0U << 5)
 | |
| #define ST25R3916_REG_STREAM_MODE_scf_sc424 (1U << 5)
 | |
| #define ST25R3916_REG_STREAM_MODE_scf_sc848 (2U << 5)
 | |
| #define ST25R3916_REG_STREAM_MODE_scf_sc1695 (3U << 5)
 | |
| #define ST25R3916_REG_STREAM_MODE_scf_bpsk848 (0U << 5)
 | |
| #define ST25R3916_REG_STREAM_MODE_scf_bpsk1695 (1U << 5)
 | |
| #define ST25R3916_REG_STREAM_MODE_scf_bpsk3390 (2U << 5)
 | |
| #define ST25R3916_REG_STREAM_MODE_scf_bpsk106 (3U << 5)
 | |
| #define ST25R3916_REG_STREAM_MODE_scf_mask (3U << 5)
 | |
| #define ST25R3916_REG_STREAM_MODE_scf_shift (5U)
 | |
| #define ST25R3916_REG_STREAM_MODE_scp1 (1U << 4)
 | |
| #define ST25R3916_REG_STREAM_MODE_scp0 (1U << 3)
 | |
| #define ST25R3916_REG_STREAM_MODE_scp_1pulse (0U << 3)
 | |
| #define ST25R3916_REG_STREAM_MODE_scp_2pulses (1U << 3)
 | |
| #define ST25R3916_REG_STREAM_MODE_scp_4pulses (2U << 3)
 | |
| #define ST25R3916_REG_STREAM_MODE_scp_8pulses (3U << 3)
 | |
| #define ST25R3916_REG_STREAM_MODE_scp_mask (3U << 3)
 | |
| #define ST25R3916_REG_STREAM_MODE_scp_shift (3U)
 | |
| #define ST25R3916_REG_STREAM_MODE_stx2 (1U << 2)
 | |
| #define ST25R3916_REG_STREAM_MODE_stx1 (1U << 1)
 | |
| #define ST25R3916_REG_STREAM_MODE_stx0 (1U << 0)
 | |
| #define ST25R3916_REG_STREAM_MODE_stx_106 (0U << 0)
 | |
| #define ST25R3916_REG_STREAM_MODE_stx_212 (1U << 0)
 | |
| #define ST25R3916_REG_STREAM_MODE_stx_424 (2U << 0)
 | |
| #define ST25R3916_REG_STREAM_MODE_stx_848 (3U << 0)
 | |
| #define ST25R3916_REG_STREAM_MODE_stx_mask (7U << 0)
 | |
| #define ST25R3916_REG_STREAM_MODE_stx_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_AUX_no_crc_rx (1U << 7)
 | |
| #define ST25R3916_REG_AUX_rfu (1U << 6)
 | |
| #define ST25R3916_REG_AUX_nfc_id1 (1U << 5)
 | |
| #define ST25R3916_REG_AUX_nfc_id0 (1U << 4)
 | |
| #define ST25R3916_REG_AUX_nfc_id_7bytes (1U << 4)
 | |
| #define ST25R3916_REG_AUX_nfc_id_4bytes (0U << 4)
 | |
| #define ST25R3916_REG_AUX_nfc_id_mask (3U << 4)
 | |
| #define ST25R3916_REG_AUX_nfc_id_shift (4U)
 | |
| #define ST25R3916_REG_AUX_mfaz_cl90 (1U << 3)
 | |
| #define ST25R3916_REG_AUX_dis_corr (1U << 2)
 | |
| #define ST25R3916_REG_AUX_dis_corr_coherent (1U << 2)
 | |
| #define ST25R3916_REG_AUX_dis_corr_correlator (0U << 2)
 | |
| #define ST25R3916_REG_AUX_nfc_n1 (1U << 1)
 | |
| #define ST25R3916_REG_AUX_nfc_n0 (1U << 0)
 | |
| #define ST25R3916_REG_AUX_nfc_n_mask (3U << 0)
 | |
| #define ST25R3916_REG_AUX_nfc_n_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_RX_CONF1_ch_sel (1U << 7)
 | |
| #define ST25R3916_REG_RX_CONF1_ch_sel_PM (1U << 7)
 | |
| #define ST25R3916_REG_RX_CONF1_ch_sel_AM (0U << 7)
 | |
| #define ST25R3916_REG_RX_CONF1_lp2 (1U << 6)
 | |
| #define ST25R3916_REG_RX_CONF1_lp1 (1U << 5)
 | |
| #define ST25R3916_REG_RX_CONF1_lp0 (1U << 4)
 | |
| #define ST25R3916_REG_RX_CONF1_lp_1200khz (0U << 4)
 | |
| #define ST25R3916_REG_RX_CONF1_lp_600khz (1U << 4)
 | |
| #define ST25R3916_REG_RX_CONF1_lp_300khz (2U << 4)
 | |
| #define ST25R3916_REG_RX_CONF1_lp_2000khz (4U << 4)
 | |
| #define ST25R3916_REG_RX_CONF1_lp_7000khz (5U << 4)
 | |
| #define ST25R3916_REG_RX_CONF1_lp_mask (7U << 4)
 | |
| #define ST25R3916_REG_RX_CONF1_lp_shift (4U)
 | |
| #define ST25R3916_REG_RX_CONF1_z600k (1U << 3)
 | |
| #define ST25R3916_REG_RX_CONF1_h200 (1U << 2)
 | |
| #define ST25R3916_REG_RX_CONF1_h80 (1U << 1)
 | |
| #define ST25R3916_REG_RX_CONF1_z12k (1U << 0)
 | |
| #define ST25R3916_REG_RX_CONF1_hz_60_400khz (0U << 0)
 | |
| #define ST25R3916_REG_RX_CONF1_hz_60_200khz (4U << 0)
 | |
| #define ST25R3916_REG_RX_CONF1_hz_40_80khz (2U << 0)
 | |
| #define ST25R3916_REG_RX_CONF1_hz_12_200khz (1U << 0)
 | |
| #define ST25R3916_REG_RX_CONF1_hz_12_80khz (3U << 0)
 | |
| #define ST25R3916_REG_RX_CONF1_hz_12_200khz_alt (5U << 0)
 | |
| #define ST25R3916_REG_RX_CONF1_hz_600_400khz (8U << 0)
 | |
| #define ST25R3916_REG_RX_CONF1_hz_600_200khz (12U << 0)
 | |
| #define ST25R3916_REG_RX_CONF1_hz_mask (0xfU << 0)
 | |
| #define ST25R3916_REG_RX_CONF1_hz_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_RX_CONF2_demod_mode (1U << 7)
 | |
| #define ST25R3916_REG_RX_CONF2_amd_sel (1U << 6)
 | |
| #define ST25R3916_REG_RX_CONF2_amd_sel_mixer (1U << 6)
 | |
| #define ST25R3916_REG_RX_CONF2_amd_sel_peak (0U << 6)
 | |
| #define ST25R3916_REG_RX_CONF2_sqm_dyn (1U << 5)
 | |
| #define ST25R3916_REG_RX_CONF2_pulz_61 (1U << 4)
 | |
| #define ST25R3916_REG_RX_CONF2_agc_en (1U << 3)
 | |
| #define ST25R3916_REG_RX_CONF2_agc_m (1U << 2)
 | |
| #define ST25R3916_REG_RX_CONF2_agc_alg (1U << 1)
 | |
| #define ST25R3916_REG_RX_CONF2_agc6_3 (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_RX_CONF3_rg1_am2 (1U << 7)
 | |
| #define ST25R3916_REG_RX_CONF3_rg1_am1 (1U << 6)
 | |
| #define ST25R3916_REG_RX_CONF3_rg1_am0 (1U << 5)
 | |
| #define ST25R3916_REG_RX_CONF3_rg1_am_mask (0x7U << 5)
 | |
| #define ST25R3916_REG_RX_CONF3_rg1_am_shift (5U)
 | |
| #define ST25R3916_REG_RX_CONF3_rg1_pm2 (1U << 4)
 | |
| #define ST25R3916_REG_RX_CONF3_rg1_pm1 (1U << 3)
 | |
| #define ST25R3916_REG_RX_CONF3_rg1_pm0 (1U << 2)
 | |
| #define ST25R3916_REG_RX_CONF3_rg1_pm_mask (0x7U << 2)
 | |
| #define ST25R3916_REG_RX_CONF3_rg1_pm_shift (2U)
 | |
| #define ST25R3916_REG_RX_CONF3_lf_en (1U << 1)
 | |
| #define ST25R3916_REG_RX_CONF3_lf_op (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_RX_CONF4_rg2_am3 (1U << 7)
 | |
| #define ST25R3916_REG_RX_CONF4_rg2_am2 (1U << 6)
 | |
| #define ST25R3916_REG_RX_CONF4_rg2_am1 (1U << 5)
 | |
| #define ST25R3916_REG_RX_CONF4_rg2_am0 (1U << 4)
 | |
| #define ST25R3916_REG_RX_CONF4_rg2_am_mask (0xfU << 4)
 | |
| #define ST25R3916_REG_RX_CONF4_rg2_am_shift (4U)
 | |
| #define ST25R3916_REG_RX_CONF4_rg2_pm3 (1U << 3)
 | |
| #define ST25R3916_REG_RX_CONF4_rg2_pm2 (1U << 2)
 | |
| #define ST25R3916_REG_RX_CONF4_rg2_pm1 (1U << 1)
 | |
| #define ST25R3916_REG_RX_CONF4_rg2_pm0 (1U << 0)
 | |
| #define ST25R3916_REG_RX_CONF4_rg2_pm_mask (0xfU << 0)
 | |
| #define ST25R3916_REG_RX_CONF4_rg2_pm_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_P2P_RX_CONF_ook_fd (1U << 7)
 | |
| #define ST25R3916_REG_P2P_RX_CONF_ook_rc1 (1U << 6)
 | |
| #define ST25R3916_REG_P2P_RX_CONF_ook_rc0 (1U << 5)
 | |
| #define ST25R3916_REG_P2P_RX_CONF_ook_thd1 (1U << 4)
 | |
| #define ST25R3916_REG_P2P_RX_CONF_ook_thd0 (1U << 3)
 | |
| #define ST25R3916_REG_P2P_RX_CONF_ask_rc1 (1U << 2)
 | |
| #define ST25R3916_REG_P2P_RX_CONF_ask_rc0 (1U << 1)
 | |
| #define ST25R3916_REG_P2P_RX_CONF_ask_thd (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_CORR_CONF1_corr_s7 (1U << 7)
 | |
| #define ST25R3916_REG_CORR_CONF1_corr_s6 (1U << 6)
 | |
| #define ST25R3916_REG_CORR_CONF1_corr_s5 (1U << 5)
 | |
| #define ST25R3916_REG_CORR_CONF1_corr_s4 (1U << 4)
 | |
| #define ST25R3916_REG_CORR_CONF1_corr_s3 (1U << 3)
 | |
| #define ST25R3916_REG_CORR_CONF1_corr_s2 (1U << 2)
 | |
| #define ST25R3916_REG_CORR_CONF1_corr_s1 (1U << 1)
 | |
| #define ST25R3916_REG_CORR_CONF1_corr_s0 (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_CORR_CONF2_rfu5 (1U << 7)
 | |
| #define ST25R3916_REG_CORR_CONF2_rfu4 (1U << 6)
 | |
| #define ST25R3916_REG_CORR_CONF2_rfu3 (1U << 5)
 | |
| #define ST25R3916_REG_CORR_CONF2_rfu2 (1U << 4)
 | |
| #define ST25R3916_REG_CORR_CONF2_rfu1 (1U << 3)
 | |
| #define ST25R3916_REG_CORR_CONF2_rfu0 (1U << 2)
 | |
| #define ST25R3916_REG_CORR_CONF2_corr_s9 (1U << 1)
 | |
| #define ST25R3916_REG_CORR_CONF2_corr_s8 (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_gptc2 (1U << 7)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_gptc1 (1U << 6)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_gptc0 (1U << 5)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_gptc_no_trigger (0U << 5)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_gptc_erx (1U << 5)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_gptc_srx (2U << 5)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_gptc_etx_nfc (3U << 5)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_gptc_mask (7U << 5)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_gptc_shift (5U)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_rfu (1U << 4)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_mrt_step (1U << 3)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_mrt_step_512 (1U << 3)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_mrt_step_64 (0U << 3)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_nfc (1U << 2)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_nfc_on (1U << 2)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_nfc_off (0U << 2)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_emv (1U << 1)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_emv_on (1U << 1)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_emv_off (0U << 1)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_step (1U << 0)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_step_64fc (0U << 0)
 | |
| #define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_step_4096_fc (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_FIFO_STATUS2_fifo_b9 (1U << 7)
 | |
| #define ST25R3916_REG_FIFO_STATUS2_fifo_b8 (1U << 6)
 | |
| #define ST25R3916_REG_FIFO_STATUS2_fifo_b_mask (3U << 6)
 | |
| #define ST25R3916_REG_FIFO_STATUS2_fifo_b_shift (6U)
 | |
| #define ST25R3916_REG_FIFO_STATUS2_fifo_unf (1U << 5)
 | |
| #define ST25R3916_REG_FIFO_STATUS2_fifo_ovr (1U << 4)
 | |
| #define ST25R3916_REG_FIFO_STATUS2_fifo_lb2 (1U << 3)
 | |
| #define ST25R3916_REG_FIFO_STATUS2_fifo_lb1 (1U << 2)
 | |
| #define ST25R3916_REG_FIFO_STATUS2_fifo_lb0 (1U << 1)
 | |
| #define ST25R3916_REG_FIFO_STATUS2_fifo_lb_mask (7U << 1)
 | |
| #define ST25R3916_REG_FIFO_STATUS2_fifo_lb_shift (1U)
 | |
| #define ST25R3916_REG_FIFO_STATUS2_np_lb (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_COLLISION_STATUS_c_byte3 (1U << 7)
 | |
| #define ST25R3916_REG_COLLISION_STATUS_c_byte2 (1U << 6)
 | |
| #define ST25R3916_REG_COLLISION_STATUS_c_byte1 (1U << 5)
 | |
| #define ST25R3916_REG_COLLISION_STATUS_c_byte0 (1U << 4)
 | |
| #define ST25R3916_REG_COLLISION_STATUS_c_byte_mask (0xfU << 4)
 | |
| #define ST25R3916_REG_COLLISION_STATUS_c_byte_shift (4U)
 | |
| #define ST25R3916_REG_COLLISION_STATUS_c_bit2 (1U << 3)
 | |
| #define ST25R3916_REG_COLLISION_STATUS_c_bit1 (1U << 2)
 | |
| #define ST25R3916_REG_COLLISION_STATUS_c_bit0 (1U << 1)
 | |
| #define ST25R3916_REG_COLLISION_STATUS_c_pb (1U << 0)
 | |
| #define ST25R3916_REG_COLLISION_STATUS_c_bit_mask (3U << 1)
 | |
| #define ST25R3916_REG_COLLISION_STATUS_c_bit_shift (1U)
 | |
| 
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_rfu (1U << 7)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_rfu1 (1U << 6)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_rfu2 (1U << 5)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_rfu3 (1U << 4)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_state3 (1U << 3)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_state2 (1U << 2)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_state1 (1U << 1)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_state0 (1U << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_power_off (0x0U << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_idle (0x1U << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_ready_l1 (0x2U << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_ready_l2 (0x3U << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_rfu4 (0x4U << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_active (0x5U << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_rfu6 (0x6U << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_rfu7 (0x7U << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_rfu8 (0x8U << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_halt (0x9U << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_ready_l1_x (0xaU << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_ready_l2_x (0xbU << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_rfu12 (0xcU << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_active_x (0xdU << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_state_mask (0xfU << 0)
 | |
| #define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_state_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_NUM_TX_BYTES2_ntx4 (1U << 7)
 | |
| #define ST25R3916_REG_NUM_TX_BYTES2_ntx3 (1U << 6)
 | |
| #define ST25R3916_REG_NUM_TX_BYTES2_ntx2 (1U << 5)
 | |
| #define ST25R3916_REG_NUM_TX_BYTES2_ntx1 (1U << 4)
 | |
| #define ST25R3916_REG_NUM_TX_BYTES2_ntx0 (1U << 3)
 | |
| #define ST25R3916_REG_NUM_TX_BYTES2_ntx_mask (0x1fU << 3)
 | |
| #define ST25R3916_REG_NUM_TX_BYTES2_ntx_shift (3U)
 | |
| #define ST25R3916_REG_NUM_TX_BYTES2_nbtx2 (1U << 2)
 | |
| #define ST25R3916_REG_NUM_TX_BYTES2_nbtx1 (1U << 1)
 | |
| #define ST25R3916_REG_NUM_TX_BYTES2_nbtx0 (1U << 0)
 | |
| #define ST25R3916_REG_NUM_TX_BYTES2_nbtx_mask (7U << 0)
 | |
| #define ST25R3916_REG_NUM_TX_BYTES2_nbtx_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_NFCIP1_BIT_RATE_nfc_rfu1 (1U << 7)
 | |
| #define ST25R3916_REG_NFCIP1_BIT_RATE_nfc_rfu0 (1U << 6)
 | |
| #define ST25R3916_REG_NFCIP1_BIT_RATE_nfc_rate1 (1U << 5)
 | |
| #define ST25R3916_REG_NFCIP1_BIT_RATE_nfc_rate0 (1U << 4)
 | |
| #define ST25R3916_REG_NFCIP1_BIT_RATE_nfc_rate_mask (0x3U << 4)
 | |
| #define ST25R3916_REG_NFCIP1_BIT_RATE_nfc_rate_shift (4U)
 | |
| #define ST25R3916_REG_NFCIP1_BIT_RATE_ppt2_on (1U << 3)
 | |
| #define ST25R3916_REG_NFCIP1_BIT_RATE_gpt_on (1U << 2)
 | |
| #define ST25R3916_REG_NFCIP1_BIT_RATE_nrt_on (1U << 1)
 | |
| #define ST25R3916_REG_NFCIP1_BIT_RATE_mrt_on (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod3 (1U << 7)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod2 (1U << 6)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod1 (1U << 5)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod0 (1U << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_5percent (0x0U << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_6percent (0x1U << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_7percent (0x2U << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_8percent (0x3U << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_9percent (0x4U << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_10percent (0x5U << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_11percent (0x6U << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_12percent (0x7U << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_13percent (0x8U << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_14percent (0x9U << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_15percent (0xaU << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_17percent (0xbU << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_19percent (0xcU << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_22percent (0xdU << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_26percent (0xeU << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_40percent (0xfU << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_mask (0xfU << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_am_mod_shift (4U)
 | |
| #define ST25R3916_REG_TX_DRIVER_d_res3 (1U << 3)
 | |
| #define ST25R3916_REG_TX_DRIVER_d_res2 (1U << 2)
 | |
| #define ST25R3916_REG_TX_DRIVER_d_res1 (1U << 1)
 | |
| #define ST25R3916_REG_TX_DRIVER_d_res0 (1U << 0)
 | |
| #define ST25R3916_REG_TX_DRIVER_d_res_mask (0xfU << 0)
 | |
| #define ST25R3916_REG_TX_DRIVER_d_res_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_PT_MOD_ptm_res3 (1U << 7)
 | |
| #define ST25R3916_REG_PT_MOD_ptm_res2 (1U << 6)
 | |
| #define ST25R3916_REG_PT_MOD_ptm_res1 (1U << 5)
 | |
| #define ST25R3916_REG_PT_MOD_ptm_res0 (1U << 4)
 | |
| #define ST25R3916_REG_PT_MOD_ptm_res_mask (0xfU << 4)
 | |
| #define ST25R3916_REG_PT_MOD_ptm_res_shift (4U)
 | |
| #define ST25R3916_REG_PT_MOD_pt_res3 (1U << 3)
 | |
| #define ST25R3916_REG_PT_MOD_pt_res2 (1U << 2)
 | |
| #define ST25R3916_REG_PT_MOD_pt_res1 (1U << 1)
 | |
| #define ST25R3916_REG_PT_MOD_pt_res0 (1U << 0)
 | |
| #define ST25R3916_REG_PT_MOD_pt_res_mask (0xfU << 0)
 | |
| #define ST25R3916_REG_PT_MOD_pt_res_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_AUX_MOD_dis_reg_am (1U << 7)
 | |
| #define ST25R3916_REG_AUX_MOD_lm_ext_pol (1U << 6)
 | |
| #define ST25R3916_REG_AUX_MOD_lm_ext (1U << 5)
 | |
| #define ST25R3916_REG_AUX_MOD_lm_dri (1U << 4)
 | |
| #define ST25R3916_REG_AUX_MOD_res_am (1U << 3)
 | |
| #define ST25R3916_REG_AUX_MOD_rfu2 (1U << 2)
 | |
| #define ST25R3916_REG_AUX_MOD_rfu1 (1U << 1)
 | |
| #define ST25R3916_REG_AUX_MOD_rfu0 (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_TX_DRIVER_TIMING_d_rat_t3 (1U << 7)
 | |
| #define ST25R3916_REG_TX_DRIVER_TIMING_d_rat_t2 (1U << 6)
 | |
| #define ST25R3916_REG_TX_DRIVER_TIMING_d_rat_t1 (1U << 5)
 | |
| #define ST25R3916_REG_TX_DRIVER_TIMING_d_rat_t0 (1U << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_TIMING_d_rat_mask (0xfU << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_TIMING_d_rat_shift (4U)
 | |
| #define ST25R3916_REG_TX_DRIVER_TIMING_rfu (1U << 3)
 | |
| #define ST25R3916_REG_TX_DRIVER_TIMING_d_tim_m2 (1U << 2)
 | |
| #define ST25R3916_REG_TX_DRIVER_TIMING_d_tim_m1 (1U << 1)
 | |
| #define ST25R3916_REG_TX_DRIVER_TIMING_d_tim_m0 (1U << 0)
 | |
| #define ST25R3916_REG_TX_DRIVER_TIMING_d_tim_m_mask (0x7U << 0)
 | |
| #define ST25R3916_REG_TX_DRIVER_TIMING_d_tim_m_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_RES_AM_MOD_fa3_f (1U << 7)
 | |
| #define ST25R3916_REG_RES_AM_MOD_md_res6 (1U << 6)
 | |
| #define ST25R3916_REG_RES_AM_MOD_md_res5 (1U << 5)
 | |
| #define ST25R3916_REG_RES_AM_MOD_md_res4 (1U << 4)
 | |
| #define ST25R3916_REG_RES_AM_MOD_md_res3 (1U << 3)
 | |
| #define ST25R3916_REG_RES_AM_MOD_md_res2 (1U << 2)
 | |
| #define ST25R3916_REG_RES_AM_MOD_md_res1 (1U << 1)
 | |
| #define ST25R3916_REG_RES_AM_MOD_md_res0 (1U << 0)
 | |
| #define ST25R3916_REG_RES_AM_MOD_md_res_mask (0x7FU << 0)
 | |
| #define ST25R3916_REG_RES_AM_MOD_md_res_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_TX_DRIVER_STATUS_d_rat_r3 (1U << 7)
 | |
| #define ST25R3916_REG_TX_DRIVER_STATUS_d_rat_r2 (1U << 6)
 | |
| #define ST25R3916_REG_TX_DRIVER_STATUS_d_rat_r1 (1U << 5)
 | |
| #define ST25R3916_REG_TX_DRIVER_STATUS_d_rat_r0 (1U << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_STATUS_d_rat_mask (0xfU << 4)
 | |
| #define ST25R3916_REG_TX_DRIVER_STATUS_d_rat_shift (4U)
 | |
| #define ST25R3916_REG_TX_DRIVER_STATUS_rfu (1U << 3)
 | |
| #define ST25R3916_REG_TX_DRIVER_STATUS_d_tim_r2 (1U << 2)
 | |
| #define ST25R3916_REG_TX_DRIVER_STATUS_d_tim_r1 (1U << 1)
 | |
| #define ST25R3916_REG_TX_DRIVER_STATUS_d_tim_r0 (1U << 0)
 | |
| #define ST25R3916_REG_TX_DRIVER_STATUS_d_tim_mask (0x7U << 0)
 | |
| #define ST25R3916_REG_TX_DRIVER_STATUS_d_tim_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_l2a (1U << 6)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_l1a (1U << 5)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_l0a (1U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_75mV (0x0U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_105mV (0x1U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_150mV (0x2U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_205mV (0x3U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_290mV (0x4U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_400mV (0x5U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_560mV (0x6U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_800mV (0x7U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_mask (7U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_shift (4U)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_t3a (1U << 3)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_t2a (1U << 2)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_t1a (1U << 1)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_t0a (1U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_75mV (0x0U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_105mV (0x1U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_150mV (0x2U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_205mV (0x3U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_290mV (0x4U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_400mV (0x5U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_560mV (0x6U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_800mV (0x7U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_25mV (0x8U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_33mV (0x9U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_47mV (0xAU << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_64mV (0xBU << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_90mV (0xCU << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_125mV (0xDU << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_175mV (0xEU << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_250mV (0xFU << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_mask (0xfU << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_l2d (1U << 6)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_l1d (1U << 5)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_l0d (1U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_75mV (0x0U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_105mV (0x1U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_150mV (0x2U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_205mV (0x3U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_290mV (0x4U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_400mV (0x5U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_560mV (0x6U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_800mV (0x7U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_mask (7U << 4)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_shift (4U)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_t3d (1U << 3)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_t2d (1U << 2)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_t1d (1U << 1)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_t0d (1U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_75mV (0x0U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_105mV (0x1U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_150mV (0x2U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_205mV (0x3U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_290mV (0x4U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_400mV (0x5U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_560mV (0x6U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_800mV (0x7U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_25mV (0x8U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_33mV (0x9U << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_47mV (0xAU << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_64mV (0xBU << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_90mV (0xCU << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_125mV (0xDU << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_175mV (0xEU << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_250mV (0xFU << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_mask (0xfU << 0)
 | |
| #define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_reg_s (1U << 7)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_rege_3 (1U << 6)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_rege_2 (1U << 5)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_rege_1 (1U << 4)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_rege_0 (1U << 3)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_rege_mask (0xfU << 3)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_rege_shift (3U)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_mpsv2 (2U << 2)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_mpsv1 (1U << 1)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_mpsv0 (1U << 0)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd (0U)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_a (1U)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_d (2U)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_rf (3U)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_am (4U)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_rfu (5U)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_rfu1 (6U)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_rfu2 (7U)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_mpsv_mask (7U)
 | |
| #define ST25R3916_REG_REGULATOR_CONTROL_mpsv_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_REGULATOR_RESULT_reg_3 (1U << 7)
 | |
| #define ST25R3916_REG_REGULATOR_RESULT_reg_2 (1U << 6)
 | |
| #define ST25R3916_REG_REGULATOR_RESULT_reg_1 (1U << 5)
 | |
| #define ST25R3916_REG_REGULATOR_RESULT_reg_0 (1U << 4)
 | |
| #define ST25R3916_REG_REGULATOR_RESULT_reg_mask (0xfU << 4)
 | |
| #define ST25R3916_REG_REGULATOR_RESULT_reg_shift (4U)
 | |
| #define ST25R3916_REG_REGULATOR_RESULT_i_lim (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_RSSI_RESULT_rssi_am_3 (1U << 7)
 | |
| #define ST25R3916_REG_RSSI_RESULT_rssi_am_2 (1U << 6)
 | |
| #define ST25R3916_REG_RSSI_RESULT_rssi_am_1 (1U << 5)
 | |
| #define ST25R3916_REG_RSSI_RESULT_rssi_am_0 (1U << 4)
 | |
| #define ST25R3916_REG_RSSI_RESULT_rssi_am_mask (0xfU << 4)
 | |
| #define ST25R3916_REG_RSSI_RESULT_rssi_am_shift (4U)
 | |
| #define ST25R3916_REG_RSSI_RESULT_rssi_pm3 (1U << 3)
 | |
| #define ST25R3916_REG_RSSI_RESULT_rssi_pm2 (1U << 2)
 | |
| #define ST25R3916_REG_RSSI_RESULT_rssi_pm1 (1U << 1)
 | |
| #define ST25R3916_REG_RSSI_RESULT_rssi_pm0 (1U << 0)
 | |
| #define ST25R3916_REG_RSSI_RESULT_rssi_pm_mask (0xfU << 0)
 | |
| #define ST25R3916_REG_RSSI_RESULT_rssi_pm_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_GAIN_RED_STATE_gs_am_3 (1U << 7)
 | |
| #define ST25R3916_REG_GAIN_RED_STATE_gs_am_2 (1U << 6)
 | |
| #define ST25R3916_REG_GAIN_RED_STATE_gs_am_1 (1U << 5)
 | |
| #define ST25R3916_REG_GAIN_RED_STATE_gs_am_0 (1U << 4)
 | |
| #define ST25R3916_REG_GAIN_RED_STATE_gs_am_mask (0xfU << 4)
 | |
| #define ST25R3916_REG_GAIN_RED_STATE_gs_am_shift (4U)
 | |
| #define ST25R3916_REG_GAIN_RED_STATE_gs_pm_3 (1U << 3)
 | |
| #define ST25R3916_REG_GAIN_RED_STATE_gs_pm_2 (1U << 2)
 | |
| #define ST25R3916_REG_GAIN_RED_STATE_gs_pm_1 (1U << 1)
 | |
| #define ST25R3916_REG_GAIN_RED_STATE_gs_pm_0 (1U << 0)
 | |
| #define ST25R3916_REG_GAIN_RED_STATE_gs_pm_mask (0xfU << 0)
 | |
| #define ST25R3916_REG_GAIN_RED_STATE_gs_pm_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_mcal4 (1U << 7)
 | |
| #define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_mcal3 (1U << 6)
 | |
| #define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_mcal2 (1U << 5)
 | |
| #define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_mcal1 (1U << 4)
 | |
| #define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_mcal0 (1U << 3)
 | |
| #define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_mcal_mask (0x1fU << 3)
 | |
| #define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_mcal_shift (3U)
 | |
| #define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_g2 (1U << 2)
 | |
| #define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_g1 (1U << 1)
 | |
| #define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_g0 (1U << 0)
 | |
| #define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_g_mask (7U << 0)
 | |
| #define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_g_shift (0U)
 | |
| 
 | |
| #define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal4 (1U << 7)
 | |
| #define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal3 (1U << 6)
 | |
| #define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal2 (1U << 5)
 | |
| #define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal1 (1U << 4)
 | |
| #define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal0 (1U << 3)
 | |
| #define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal_mask (0x1fU << 3)
 | |
| #define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal_shift (3U)
 | |
| #define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal_end (1U << 2)
 | |
| #define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal_err (1U << 1)
 | |
| 
 | |
| #define ST25R3916_REG_AUX_DISPLAY_a_cha (1U << 7)
 | |
| #define ST25R3916_REG_AUX_DISPLAY_efd_o (1U << 6)
 | |
| #define ST25R3916_REG_AUX_DISPLAY_tx_on (1U << 5)
 | |
| #define ST25R3916_REG_AUX_DISPLAY_osc_ok (1U << 4)
 | |
| #define ST25R3916_REG_AUX_DISPLAY_rx_on (1U << 3)
 | |
| #define ST25R3916_REG_AUX_DISPLAY_rx_act (1U << 2)
 | |
| #define ST25R3916_REG_AUX_DISPLAY_en_peer (1U << 1)
 | |
| #define ST25R3916_REG_AUX_DISPLAY_en_ac (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF1_ov_tx_mode1 (1U << 7)
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF1_ov_tx_mode0 (1U << 6)
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF1_ov_pattern13 (1U << 5)
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF1_ov_pattern12 (1U << 4)
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF1_ov_pattern11 (1U << 3)
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF1_ov_pattern10 (1U << 2)
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF1_ov_pattern9 (1U << 1)
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF1_ov_pattern8 (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern7 (1U << 7)
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern6 (1U << 6)
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern5 (1U << 5)
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern4 (1U << 4)
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern3 (1U << 3)
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern2 (1U << 2)
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern1 (1U << 1)
 | |
| #define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern0 (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF1_un_tx_mode1 (1U << 7)
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF1_un_tx_mode0 (1U << 6)
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF1_un_pattern13 (1U << 5)
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF1_un_pattern12 (1U << 4)
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF1_un_pattern11 (1U << 3)
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF1_un_pattern10 (1U << 2)
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF1_un_pattern9 (1U << 1)
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF1_un_pattern8 (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern7 (1U << 7)
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern6 (1U << 6)
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern5 (1U << 5)
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern4 (1U << 4)
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern3 (1U << 3)
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern2 (1U << 2)
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern1 (1U << 1)
 | |
| #define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern0 (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_WUP_TIMER_CONTROL_wur (1U << 7)
 | |
| #define ST25R3916_REG_WUP_TIMER_CONTROL_wut2 (1U << 6)
 | |
| #define ST25R3916_REG_WUP_TIMER_CONTROL_wut1 (1U << 5)
 | |
| #define ST25R3916_REG_WUP_TIMER_CONTROL_wut0 (1U << 4)
 | |
| #define ST25R3916_REG_WUP_TIMER_CONTROL_wut_mask (7U << 4)
 | |
| #define ST25R3916_REG_WUP_TIMER_CONTROL_wut_shift (4U)
 | |
| #define ST25R3916_REG_WUP_TIMER_CONTROL_wto (1U << 3)
 | |
| #define ST25R3916_REG_WUP_TIMER_CONTROL_wam (1U << 2)
 | |
| #define ST25R3916_REG_WUP_TIMER_CONTROL_wph (1U << 1)
 | |
| #define ST25R3916_REG_WUP_TIMER_CONTROL_wcap (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d3 (1U << 7)
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d2 (1U << 6)
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d1 (1U << 5)
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d0 (1U << 4)
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d_mask (0xfU << 4)
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d_shift (4U)
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_aam (1U << 3)
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_aew1 (1U << 2)
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_aew0 (1U << 1)
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_aew_mask (0x3U << 1)
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_aew_shift (1U)
 | |
| #define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_ae (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_PHASE_MEASURE_CONF_pm_d3 (1U << 7)
 | |
| #define ST25R3916_REG_PHASE_MEASURE_CONF_pm_d2 (1U << 6)
 | |
| #define ST25R3916_REG_PHASE_MEASURE_CONF_pm_d1 (1U << 5)
 | |
| #define ST25R3916_REG_PHASE_MEASURE_CONF_pm_d0 (1U << 4)
 | |
| #define ST25R3916_REG_PHASE_MEASURE_CONF_pm_d_mask (0xfU << 4)
 | |
| #define ST25R3916_REG_PHASE_MEASURE_CONF_pm_d_shift (4U)
 | |
| #define ST25R3916_REG_PHASE_MEASURE_CONF_pm_aam (1U << 3)
 | |
| #define ST25R3916_REG_PHASE_MEASURE_CONF_pm_aew1 (1U << 2)
 | |
| #define ST25R3916_REG_PHASE_MEASURE_CONF_pm_aew0 (1U << 1)
 | |
| #define ST25R3916_REG_PHASE_MEASURE_CONF_pm_aew_mask (0x3U << 1)
 | |
| #define ST25R3916_REG_PHASE_MEASURE_CONF_pm_aew_shift (1U)
 | |
| #define ST25R3916_REG_PHASE_MEASURE_CONF_pm_ae (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_d3 (1U << 7)
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_d2 (1U << 6)
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_d1 (1U << 5)
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_d0 (1U << 4)
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_d_mask (0xfU << 4)
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_d_shift (4U)
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_aam (1U << 3)
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_aew1 (1U << 2)
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_aew0 (1U << 1)
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_aew_mask (0x3U << 1)
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_aew_shift (1U)
 | |
| #define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_ae (1U << 0)
 | |
| 
 | |
| #define ST25R3916_REG_IC_IDENTITY_ic_type4 (1U << 7)
 | |
| #define ST25R3916_REG_IC_IDENTITY_ic_type3 (1U << 6)
 | |
| #define ST25R3916_REG_IC_IDENTITY_ic_type2 (1U << 5)
 | |
| #define ST25R3916_REG_IC_IDENTITY_ic_type1 (1U << 4)
 | |
| #define ST25R3916_REG_IC_IDENTITY_ic_type0 (1U << 3)
 | |
| #define ST25R3916_REG_IC_IDENTITY_ic_type_st25r3916 (5U << 3)
 | |
| #define ST25R3916_REG_IC_IDENTITY_ic_type_mask (0x1fU << 3)
 | |
| #define ST25R3916_REG_IC_IDENTITY_ic_type_shift (3U)
 | |
| #define ST25R3916_REG_IC_IDENTITY_ic_rev2 (1U << 2)
 | |
| #define ST25R3916_REG_IC_IDENTITY_ic_rev1 (1U << 1)
 | |
| #define ST25R3916_REG_IC_IDENTITY_ic_rev0 (1U << 0)
 | |
| #define ST25R3916_REG_IC_IDENTITY_ic_rev_v0 (0U << 0)
 | |
| #define ST25R3916_REG_IC_IDENTITY_ic_rev_mask (7U << 0)
 | |
| #define ST25R3916_REG_IC_IDENTITY_ic_rev_shift (0U)
 | |
| 
 | |
| /*! \endcond DOXYGEN_SUPRESS */
 | |
| 
 | |
| /*
 | |
| ******************************************************************************
 | |
| * GLOBAL FUNCTION PROTOTYPES
 | |
| ******************************************************************************
 | |
| */
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Returns the content of a register within the ST25R3916
 | |
|  *
 | |
|  *  This function is used to read out the content of ST25R3916 registers.
 | |
|  *
 | |
|  *  \param[in]  reg: Address of register to read.
 | |
|  *  \param[out] val: Returned value.
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916ReadRegister(uint8_t reg, uint8_t* val);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Reads from multiple ST25R3916 registers
 | |
|  *
 | |
|  *  This function is used to read from multiple registers using the
 | |
|  *  auto-increment feature. That is, after each read the address pointer
 | |
|  *  inside the ST25R3916 gets incremented automatically.
 | |
|  *
 | |
|  *  \param[in]  reg: Address of the frist register to read from.
 | |
|  *  \param[in]  values: pointer to a buffer where the result shall be written to.
 | |
|  *  \param[in]  length: Number of registers to be read out.
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916ReadMultipleRegisters(uint8_t reg, uint8_t* values, uint8_t length);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Writes a given value to a register within the ST25R3916
 | |
|  *
 | |
|  *  This function is used to write \a val to address \a reg within the ST25R3916.
 | |
|  *
 | |
|  *  \param[in]  reg: Address of the register to write.
 | |
|  *  \param[in]  val: Value to be written.
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916WriteRegister(uint8_t reg, uint8_t val);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Writes multiple values to ST25R3916 registers
 | |
|  *
 | |
|  *  This function is used to write multiple values to the ST25R3916 using the
 | |
|  *  auto-increment feature. That is, after each write the address pointer
 | |
|  *  inside the ST25R3916 gets incremented automatically.
 | |
|  *
 | |
|  *  \param[in]  reg: Address of the frist register to write.
 | |
|  *  \param[in]  values: pointer to a buffer containing the values to be written.
 | |
|  *  \param[in]  length: Number of values to be written.
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916WriteMultipleRegisters(uint8_t reg, const uint8_t* values, uint8_t length);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Writes values to ST25R3916 FIFO
 | |
|  *
 | |
|  *  This function needs to be called in order to write to the ST25R3916 FIFO.
 | |
|  *
 | |
|  *  \param[in]  values: pointer to a buffer containing the values to be written
 | |
|  *                      to the FIFO.
 | |
|  *  \param[in]  length: Number of values to be written.
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916WriteFifo(const uint8_t* values, uint16_t length);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Read values from ST25R3916 FIFO
 | |
|  *
 | |
|  *  This function needs to be called in order to read from ST25R3916 FIFO.
 | |
|  *
 | |
|  *  \param[out]  buf: pointer to a buffer where the FIFO content shall be
 | |
|  *                       written to.
 | |
|  *  \param[in]  length: Number of bytes to read.
 | |
|  *  
 | |
|  *  \note: This function doesn't check whether \a length is really the
 | |
|  *  number of available bytes in FIFO
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916ReadFifo(uint8_t* buf, uint16_t length);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Writes values to ST25R3916 PTM
 | |
|  *
 | |
|  *  Accesses to the begging of ST25R3916 Passive Target Memory (PTM A Config)
 | |
|  *  and writes the given values 
 | |
|  *
 | |
|  *  \param[in]  values: pointer to a buffer containing the values to be written
 | |
|  *                      to the Passive Target Memory.
 | |
|  *  \param[in]  length: Number of values to be written.
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916WritePTMem(const uint8_t* values, uint16_t length);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Reads the ST25R3916 PTM
 | |
|  *
 | |
|  *  Accesses to the begging of ST25R3916 Passive Target Memory (PTM A Config)
 | |
|  *  and reads the memory for the given length 
 | |
|  *
 | |
|  *  \param[out] values: pointer to a buffer where the PTM content shall be
 | |
|  *                       written to.
 | |
|  *  \param[in]  length: Number of bytes to read.
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916ReadPTMem(uint8_t* values, uint16_t length);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Writes values to ST25R3916 PTM F config
 | |
|  *
 | |
|  *  Accesses ST25R3916 Passive Target Memory F config and writes the given values 
 | |
|  *
 | |
|  *  \param[in]  values: pointer to a buffer containing the values to be written
 | |
|  *                      to the Passive Target Memory 
 | |
|  *  \param[in]  length: Number of values to be written.
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916WritePTMemF(const uint8_t* values, uint16_t length);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Writes values to ST25R3916 PTM TSN Data
 | |
|  *
 | |
|  *  Accesses ST25R3916 Passive Target Memory TSN data and writes the given values 
 | |
|  *
 | |
|  *  \param[in]  values: pointer to a buffer containing the values to be written
 | |
|  *                      to the Passive Target Memory.
 | |
|  *  \param[in]  length: Number of values to be written.
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916WritePTMemTSN(const uint8_t* values, uint16_t length);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Execute a direct command
 | |
|  *
 | |
|  *  This function is used to start so-called direct command. These commands
 | |
|  *  are implemented inside the chip and each command has unique code (see
 | |
|  *  datasheet).
 | |
|  *
 | |
|  *  \param[in]  cmd : code of the direct command to be executed.
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916ExecuteCommand(uint8_t cmd);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Read a test register within the ST25R3916
 | |
|  *
 | |
|  *  This function is used to read the content of test address \a reg within the ST25R3916
 | |
|  *
 | |
|  *  \param[in]   reg: Address of the register to read
 | |
|  *  \param[out]  val: Returned read value
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916ReadTestRegister(uint8_t reg, uint8_t* val);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Writes a given value to a test register within the ST25R3916
 | |
|  *
 | |
|  *  This function is used to write \a val to test address \a reg within the ST25R3916
 | |
|  *
 | |
|  *  \param[in]  reg: Address of the register to write
 | |
|  *  \param[in]  val: Value to be written
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916WriteTestRegister(uint8_t reg, uint8_t val);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Cleart bits on Register
 | |
|  *
 | |
|  *  This function clears the given bitmask on the register 
 | |
|  *
 | |
|  *  \param[in]  reg: Address of the register clear
 | |
|  *  \param[in]  clr_mask: Bitmask of bit to be cleared
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916ClrRegisterBits(uint8_t reg, uint8_t clr_mask);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Set bits on Register
 | |
|  *
 | |
|  *  This function sets the given bitmask on the register 
 | |
|  *
 | |
|  *  \param[in]  reg: Address of the register clear
 | |
|  *  \param[in]  set_mask: Bitmask of bit to be cleared
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916SetRegisterBits(uint8_t reg, uint8_t set_mask);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Changes the given bits on a ST25R3916 register
 | |
|  *
 | |
|  *  This function is used if only a particular bits should be changed within
 | |
|  *  an ST25R3916 register.
 | |
|  *
 | |
|  *  \param[in]  reg: Address of the register to change.
 | |
|  *  \param[in]  valueMask: bitmask of bits to be changed
 | |
|  *  \param[in]  value: the bits to be written on the enabled valueMask bits
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916ChangeRegisterBits(uint8_t reg, uint8_t valueMask, uint8_t value);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Modifies a value within a ST25R3916 register
 | |
|  *
 | |
|  *  This function is used if only a particular bits should be changed within
 | |
|  *  an ST25R3916 register.
 | |
|  *
 | |
|  *  \param[in]  reg: Address of the register to write.
 | |
|  *  \param[in]  clr_mask: bitmask of bits to be cleared to 0.
 | |
|  *  \param[in]  set_mask: bitmask of bits to be set to 1.
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916ModifyRegister(uint8_t reg, uint8_t clr_mask, uint8_t set_mask);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Changes the given bits on a ST25R3916 Test register
 | |
|  *
 | |
|  *  This function is used if only a particular bits should be changed within
 | |
|  *  an ST25R3916 register.
 | |
|  *
 | |
|  *  \param[in]  reg: Address of the Test register to change.
 | |
|  *  \param[in]  valueMask: bitmask of bits to be changed
 | |
|  *  \param[in]  value: the bits to be written on the enabled valueMask bits
 | |
|  *
 | |
|  *  \return ERR_NONE  : Operation successful
 | |
|  *  \return ERR_PARAM : Invalid parameter
 | |
|  *  \return ERR_SEND  : Transmission error or acknowledge not received
 | |
|  *****************************************************************************
 | |
|  */
 | |
| ReturnCode st25r3916ChangeTestRegisterBits(uint8_t reg, uint8_t valueMask, uint8_t value);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Checks if register contains a expected value
 | |
|  *
 | |
|  *  This function checks if the given reg contains a value that once masked
 | |
|  *  equals the expected value
 | |
|  *
 | |
|  *  \param reg  : the register to check the value
 | |
|  *  \param mask : the mask apply on register value
 | |
|  *  \param val  : expected value to be compared to
 | |
|  *    
 | |
|  *  \return  true when reg contains the expected value | false otherwise
 | |
|  */
 | |
| bool st25r3916CheckReg(uint8_t reg, uint8_t mask, uint8_t val);
 | |
| 
 | |
| /*! 
 | |
|  *****************************************************************************
 | |
|  *  \brief  Check if register ID is valid
 | |
|  *
 | |
|  *  Checks if the given register ID a valid ST25R3916 register
 | |
|  *
 | |
|  *  \param[in]  reg: Address of register to check
 | |
|  *  
 | |
|  *  \return  true if is a valid register ID
 | |
|  *  \return  false otherwise
 | |
|  *
 | |
|  *****************************************************************************
 | |
|  */
 | |
| bool st25r3916IsRegValid(uint8_t reg);
 | |
| 
 | |
| #endif /* ST25R3916_COM_H */
 | |
| 
 | |
| /**
 | |
|   * @}
 | |
|   *
 | |
|   * @}
 | |
|   *
 | |
|   * @}
 | |
|   * 
 | |
|   * @}
 | |
|   */
 |