This is a driver needed by NFCEEPROOM constructor for the ST ST25DV NFC chip.

Dependents:   mbed-os-example-nfc-EEPROM

Committer:
apalmieri
Date:
Tue Jan 28 15:54:19 2020 +0000
Revision:
0:dd89565c6276
Initial commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
apalmieri 0:dd89565c6276 1 /**
apalmieri 0:dd89565c6276 2 ******************************************************************************
apalmieri 0:dd89565c6276 3 * @file st25dv.h
apalmieri 0:dd89565c6276 4 * @author MMY Application Team
apalmieri 0:dd89565c6276 5 * @version $Revision: 3308 $
apalmieri 0:dd89565c6276 6 * @date $Date: 2017-01-13 11:19:33 +0100 (Fri, 13 Jan 2017) $
apalmieri 0:dd89565c6276 7 * @brief This file provides set of driver functions to manage communication
apalmieri 0:dd89565c6276 8 * @brief between MCU and ST25DV chip
apalmieri 0:dd89565c6276 9 ******************************************************************************
apalmieri 0:dd89565c6276 10 * @attention
apalmieri 0:dd89565c6276 11 *
apalmieri 0:dd89565c6276 12 * <h2><center>&copy; COPYRIGHT 2016 STMicroelectronics</center></h2>
apalmieri 0:dd89565c6276 13 *
apalmieri 0:dd89565c6276 14 * Licensed under ST MYLIBERTY SOFTWARE LICENSE AGREEMENT (the "License");
apalmieri 0:dd89565c6276 15 * You may not use this file except in compliance with the License.
apalmieri 0:dd89565c6276 16 * You may obtain a copy of the License at:
apalmieri 0:dd89565c6276 17 *
apalmieri 0:dd89565c6276 18 * http://www.st.com/myliberty
apalmieri 0:dd89565c6276 19 *
apalmieri 0:dd89565c6276 20 * Unless required by applicable law or agreed to in writing, software
apalmieri 0:dd89565c6276 21 * distributed under the License is distributed on an "AS IS" BASIS,
apalmieri 0:dd89565c6276 22 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
apalmieri 0:dd89565c6276 23 * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
apalmieri 0:dd89565c6276 24 * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
apalmieri 0:dd89565c6276 25 * See the License for the specific language governing permissions and
apalmieri 0:dd89565c6276 26 * limitations under the License.
apalmieri 0:dd89565c6276 27 *
apalmieri 0:dd89565c6276 28 ******************************************************************************
apalmieri 0:dd89565c6276 29 */
apalmieri 0:dd89565c6276 30
apalmieri 0:dd89565c6276 31 /* Define to prevent recursive inclusion -------------------------------------*/
apalmieri 0:dd89565c6276 32 #ifndef __ST25DV_H
apalmieri 0:dd89565c6276 33 #define __ST25DV_H
apalmieri 0:dd89565c6276 34
apalmieri 0:dd89565c6276 35
apalmieri 0:dd89565c6276 36 /* Includes ------------------------------------------------------------------*/
apalmieri 0:dd89565c6276 37 #include <stdint.h>
apalmieri 0:dd89565c6276 38 #include <stddef.h>
apalmieri 0:dd89565c6276 39 #include "mbed.h"
apalmieri 0:dd89565c6276 40
apalmieri 0:dd89565c6276 41
apalmieri 0:dd89565c6276 42
apalmieri 0:dd89565c6276 43 /** @addtogroup BSP
apalmieri 0:dd89565c6276 44 * @{
apalmieri 0:dd89565c6276 45 */
apalmieri 0:dd89565c6276 46
apalmieri 0:dd89565c6276 47
apalmieri 0:dd89565c6276 48 /** @addtogroup ST25DV
apalmieri 0:dd89565c6276 49 * @{
apalmieri 0:dd89565c6276 50 */
apalmieri 0:dd89565c6276 51
apalmieri 0:dd89565c6276 52 /* Exported types ------------------------------------------------------------*/
apalmieri 0:dd89565c6276 53 /**
apalmieri 0:dd89565c6276 54 * @brief NFCTAG status enumerator definition.
apalmieri 0:dd89565c6276 55 */
apalmieri 0:dd89565c6276 56 typedef enum
apalmieri 0:dd89565c6276 57 {
apalmieri 0:dd89565c6276 58 NFCTAG_OK = 0,
apalmieri 0:dd89565c6276 59 NFCTAG_ERROR = 1,
apalmieri 0:dd89565c6276 60 NFCTAG_BUSY = 2,
apalmieri 0:dd89565c6276 61 NFCTAG_TIMEOUT = 3,
apalmieri 0:dd89565c6276 62 NFCTAG_NACK = 4
apalmieri 0:dd89565c6276 63 } NFCTAG_StatusTypeDef;
apalmieri 0:dd89565c6276 64
apalmieri 0:dd89565c6276 65 /**
apalmieri 0:dd89565c6276 66 * @brief ST25DV Enable Disable enumerator definition.
apalmieri 0:dd89565c6276 67 */
apalmieri 0:dd89565c6276 68 typedef enum
apalmieri 0:dd89565c6276 69 {
apalmieri 0:dd89565c6276 70 ST25DV_DISABLE = 0,
apalmieri 0:dd89565c6276 71 ST25DV_ENABLE
apalmieri 0:dd89565c6276 72 } ST25DV_EN_STATUS;
apalmieri 0:dd89565c6276 73
apalmieri 0:dd89565c6276 74 /**
apalmieri 0:dd89565c6276 75 * @brief ST25DV Energy Harvesting mode enumerator definition.
apalmieri 0:dd89565c6276 76 */
apalmieri 0:dd89565c6276 77 typedef enum
apalmieri 0:dd89565c6276 78 {
apalmieri 0:dd89565c6276 79 ST25DV_EH_ACTIVE_AFTER_BOOT = 0,
apalmieri 0:dd89565c6276 80 ST25DV_EH_ON_DEMAND
apalmieri 0:dd89565c6276 81 } ST25DV_EH_MODE_STATUS;
apalmieri 0:dd89565c6276 82
apalmieri 0:dd89565c6276 83 /**
apalmieri 0:dd89565c6276 84 * @brief ST25DV FIELD status enumerator definition.
apalmieri 0:dd89565c6276 85 */
apalmieri 0:dd89565c6276 86 typedef enum
apalmieri 0:dd89565c6276 87 {
apalmieri 0:dd89565c6276 88 ST25DV_FIELD_OFF = 0,
apalmieri 0:dd89565c6276 89 ST25DV_FIELD_ON
apalmieri 0:dd89565c6276 90 } ST25DV_FIELD_STATUS;
apalmieri 0:dd89565c6276 91
apalmieri 0:dd89565c6276 92 /**
apalmieri 0:dd89565c6276 93 * @brief ST25DV VCC status enumerator definition
apalmieri 0:dd89565c6276 94 */
apalmieri 0:dd89565c6276 95 typedef enum
apalmieri 0:dd89565c6276 96 {
apalmieri 0:dd89565c6276 97 ST25DV_VCC_OFF = 0,
apalmieri 0:dd89565c6276 98 ST25DV_VCC_ON
apalmieri 0:dd89565c6276 99 } ST25DV_VCC_STATUS;
apalmieri 0:dd89565c6276 100
apalmieri 0:dd89565c6276 101 /**
apalmieri 0:dd89565c6276 102 * @brief ST25DV protection status enumerator definition
apalmieri 0:dd89565c6276 103 */
apalmieri 0:dd89565c6276 104 typedef enum
apalmieri 0:dd89565c6276 105 {
apalmieri 0:dd89565c6276 106 ST25DV_NO_PROT = 0,
apalmieri 0:dd89565c6276 107 ST25DV_WRITE_PROT,
apalmieri 0:dd89565c6276 108 ST25DV_READ_PROT,
apalmieri 0:dd89565c6276 109 ST25DV_READWRITE_PROT
apalmieri 0:dd89565c6276 110 } ST25DV_PROTECTION_CONF;
apalmieri 0:dd89565c6276 111
apalmieri 0:dd89565c6276 112 /**
apalmieri 0:dd89565c6276 113 * @brief ST25DV area protection enumerator definition.
apalmieri 0:dd89565c6276 114 */
apalmieri 0:dd89565c6276 115 typedef enum
apalmieri 0:dd89565c6276 116 {
apalmieri 0:dd89565c6276 117 ST25DV_PROT_ZONE1 = 0,
apalmieri 0:dd89565c6276 118 ST25DV_PROT_ZONE2,
apalmieri 0:dd89565c6276 119 ST25DV_PROT_ZONE3,
apalmieri 0:dd89565c6276 120 ST25DV_PROT_ZONE4
apalmieri 0:dd89565c6276 121 } ST25DV_PROTECTION_ZONE;
apalmieri 0:dd89565c6276 122
apalmieri 0:dd89565c6276 123 /**
apalmieri 0:dd89565c6276 124 * @brief ST25DV password protection status enumerator definition.
apalmieri 0:dd89565c6276 125 */
apalmieri 0:dd89565c6276 126 typedef enum
apalmieri 0:dd89565c6276 127 {
apalmieri 0:dd89565c6276 128 ST25DV_NOT_PROTECTED = 0,
apalmieri 0:dd89565c6276 129 ST25DV_PROT_PASSWD1,
apalmieri 0:dd89565c6276 130 ST25DV_PROT_PASSWD2,
apalmieri 0:dd89565c6276 131 ST25DV_PROT_PASSWD3
apalmieri 0:dd89565c6276 132 } ST25DV_PASSWD_PROT_STATUS;
apalmieri 0:dd89565c6276 133
apalmieri 0:dd89565c6276 134 /**
apalmieri 0:dd89565c6276 135 * @brief ST25DV lock status enumerator definition.
apalmieri 0:dd89565c6276 136 */
apalmieri 0:dd89565c6276 137 typedef enum
apalmieri 0:dd89565c6276 138 {
apalmieri 0:dd89565c6276 139 ST25DV_UNLOCKED = 0,
apalmieri 0:dd89565c6276 140 ST25DV_LOCKED
apalmieri 0:dd89565c6276 141 } ST25DV_LOCK_STATUS;
apalmieri 0:dd89565c6276 142
apalmieri 0:dd89565c6276 143 /**
apalmieri 0:dd89565c6276 144 * @brief ST25DV Number of Blocks for the CCFile enumerator definition.
apalmieri 0:dd89565c6276 145 */
apalmieri 0:dd89565c6276 146 typedef enum
apalmieri 0:dd89565c6276 147 {
apalmieri 0:dd89565c6276 148 ST25DV_CCFILE_1BLCK = 0,
apalmieri 0:dd89565c6276 149 ST25DV_CCFILE_2BLCK
apalmieri 0:dd89565c6276 150 } ST25DV_CCFILE_BLOCK;
apalmieri 0:dd89565c6276 151
apalmieri 0:dd89565c6276 152 /**
apalmieri 0:dd89565c6276 153 * @brief ST25DV session status enumerator definition.
apalmieri 0:dd89565c6276 154 */
apalmieri 0:dd89565c6276 155 typedef enum
apalmieri 0:dd89565c6276 156 {
apalmieri 0:dd89565c6276 157 ST25DV_SESSION_CLOSED = 0,
apalmieri 0:dd89565c6276 158 ST25DV_SESSION_OPEN
apalmieri 0:dd89565c6276 159 } ST25DV_I2CSSO_STATUS;
apalmieri 0:dd89565c6276 160
apalmieri 0:dd89565c6276 161 /**
apalmieri 0:dd89565c6276 162 * @brief ST25DV area end address enumerator definition.
apalmieri 0:dd89565c6276 163 */
apalmieri 0:dd89565c6276 164 typedef enum
apalmieri 0:dd89565c6276 165 {
apalmieri 0:dd89565c6276 166 ST25DV_ZONE_END1 = 0,
apalmieri 0:dd89565c6276 167 ST25DV_ZONE_END2,
apalmieri 0:dd89565c6276 168 ST25DV_ZONE_END3
apalmieri 0:dd89565c6276 169 } ST25DV_END_ZONE;
apalmieri 0:dd89565c6276 170
apalmieri 0:dd89565c6276 171 /**
apalmieri 0:dd89565c6276 172 * @brief ST25DV IT pulse duration enumerator definition.
apalmieri 0:dd89565c6276 173 */
apalmieri 0:dd89565c6276 174 typedef enum
apalmieri 0:dd89565c6276 175 {
apalmieri 0:dd89565c6276 176 ST25DV_302_US = 0,
apalmieri 0:dd89565c6276 177 ST25DV_264_US,
apalmieri 0:dd89565c6276 178 ST25DV_226_US,
apalmieri 0:dd89565c6276 179 ST25DV_188_US,
apalmieri 0:dd89565c6276 180 ST25DV_151_US,
apalmieri 0:dd89565c6276 181 ST25DV_113_US,
apalmieri 0:dd89565c6276 182 ST25DV_75_US,
apalmieri 0:dd89565c6276 183 ST25DV_37_US
apalmieri 0:dd89565c6276 184 } ST25DV_PULSE_DURATION;
apalmieri 0:dd89565c6276 185
apalmieri 0:dd89565c6276 186 /**
apalmieri 0:dd89565c6276 187 * @brief ST25DV Mailbox Current Message enumerator definition
apalmieri 0:dd89565c6276 188 */
apalmieri 0:dd89565c6276 189 typedef enum
apalmieri 0:dd89565c6276 190 {
apalmieri 0:dd89565c6276 191 ST25DV_NO_MSG = 0,
apalmieri 0:dd89565c6276 192 ST25DV_HOST_MSG,
apalmieri 0:dd89565c6276 193 ST25DV_RF_MSG
apalmieri 0:dd89565c6276 194 } ST25DV_CURRENT_MSG;
apalmieri 0:dd89565c6276 195
apalmieri 0:dd89565c6276 196 /**
apalmieri 0:dd89565c6276 197 * @brief ST25DV EH Ctrl structure definition
apalmieri 0:dd89565c6276 198 */
apalmieri 0:dd89565c6276 199 typedef struct
apalmieri 0:dd89565c6276 200 {
apalmieri 0:dd89565c6276 201 ST25DV_EN_STATUS EH_EN_Mode;
apalmieri 0:dd89565c6276 202 ST25DV_EN_STATUS EH_on;
apalmieri 0:dd89565c6276 203 ST25DV_EN_STATUS Field_on;
apalmieri 0:dd89565c6276 204 ST25DV_EN_STATUS VCC_on;
apalmieri 0:dd89565c6276 205 } ST25DV_EH_CTRL;
apalmieri 0:dd89565c6276 206
apalmieri 0:dd89565c6276 207 /**
apalmieri 0:dd89565c6276 208 * @brief ST25DV GPO structure definition
apalmieri 0:dd89565c6276 209 */
apalmieri 0:dd89565c6276 210 typedef struct
apalmieri 0:dd89565c6276 211 {
apalmieri 0:dd89565c6276 212 ST25DV_EN_STATUS GPO_RFUser_en;
apalmieri 0:dd89565c6276 213 ST25DV_EN_STATUS GPO_RFActivity_en;
apalmieri 0:dd89565c6276 214 ST25DV_EN_STATUS GPO_RFInterrupt_en;
apalmieri 0:dd89565c6276 215 ST25DV_EN_STATUS GPO_FieldChange_en;
apalmieri 0:dd89565c6276 216 ST25DV_EN_STATUS GPO_RFPutMsg_en;
apalmieri 0:dd89565c6276 217 ST25DV_EN_STATUS GPO_RFGetMsg_en;
apalmieri 0:dd89565c6276 218 ST25DV_EN_STATUS GPO_RFWrite_en;
apalmieri 0:dd89565c6276 219 ST25DV_EN_STATUS GPO_Enable;
apalmieri 0:dd89565c6276 220 } ST25DV_GPO;
apalmieri 0:dd89565c6276 221
apalmieri 0:dd89565c6276 222 /**
apalmieri 0:dd89565c6276 223 * @brief ST25DV RF Management structure definition.
apalmieri 0:dd89565c6276 224 */
apalmieri 0:dd89565c6276 225 typedef struct
apalmieri 0:dd89565c6276 226 {
apalmieri 0:dd89565c6276 227 ST25DV_EN_STATUS RfDisable;
apalmieri 0:dd89565c6276 228 ST25DV_EN_STATUS RfSleep;
apalmieri 0:dd89565c6276 229 } ST25DV_RF_MNGT;
apalmieri 0:dd89565c6276 230
apalmieri 0:dd89565c6276 231 /**
apalmieri 0:dd89565c6276 232 * @brief ST25DV RF Area protection structure definition.
apalmieri 0:dd89565c6276 233 */
apalmieri 0:dd89565c6276 234 typedef struct
apalmieri 0:dd89565c6276 235 {
apalmieri 0:dd89565c6276 236 ST25DV_PASSWD_PROT_STATUS PasswdCtrl;
apalmieri 0:dd89565c6276 237 ST25DV_PROTECTION_CONF RWprotection;
apalmieri 0:dd89565c6276 238 } ST25DV_RF_PROT_ZONE;
apalmieri 0:dd89565c6276 239
apalmieri 0:dd89565c6276 240 /**
apalmieri 0:dd89565c6276 241 * @brief ST25DV I2C Area protection structure definition.
apalmieri 0:dd89565c6276 242 */
apalmieri 0:dd89565c6276 243 typedef struct
apalmieri 0:dd89565c6276 244 {
apalmieri 0:dd89565c6276 245 ST25DV_PROTECTION_CONF ProtectZone1;
apalmieri 0:dd89565c6276 246 ST25DV_PROTECTION_CONF ProtectZone2;
apalmieri 0:dd89565c6276 247 ST25DV_PROTECTION_CONF ProtectZone3;
apalmieri 0:dd89565c6276 248 ST25DV_PROTECTION_CONF ProtectZone4;
apalmieri 0:dd89565c6276 249 } ST25DV_I2C_PROT_ZONE;
apalmieri 0:dd89565c6276 250
apalmieri 0:dd89565c6276 251 /**
apalmieri 0:dd89565c6276 252 * @brief ST25DV MB_CTRL_DYN register structure definition.
apalmieri 0:dd89565c6276 253 */
apalmieri 0:dd89565c6276 254 typedef struct
apalmieri 0:dd89565c6276 255 {
apalmieri 0:dd89565c6276 256 uint8_t MbEnable;
apalmieri 0:dd89565c6276 257 uint8_t HostPutMsg;
apalmieri 0:dd89565c6276 258 uint8_t RfPutMsg;
apalmieri 0:dd89565c6276 259 uint8_t HostMissMsg;
apalmieri 0:dd89565c6276 260 uint8_t RFMissMsg;
apalmieri 0:dd89565c6276 261 ST25DV_CURRENT_MSG CurrentMsg;
apalmieri 0:dd89565c6276 262 } ST25DV_MB_CTRL_DYN_STATUS;
apalmieri 0:dd89565c6276 263
apalmieri 0:dd89565c6276 264 /**
apalmieri 0:dd89565c6276 265 * @brief ST25DV Lock CCFile structure definition.
apalmieri 0:dd89565c6276 266 */
apalmieri 0:dd89565c6276 267 typedef struct
apalmieri 0:dd89565c6276 268 {
apalmieri 0:dd89565c6276 269 ST25DV_LOCK_STATUS LckBck0;
apalmieri 0:dd89565c6276 270 ST25DV_LOCK_STATUS LckBck1;
apalmieri 0:dd89565c6276 271 } ST25DV_LOCK_CCFILE;
apalmieri 0:dd89565c6276 272
apalmieri 0:dd89565c6276 273 /**
apalmieri 0:dd89565c6276 274 * @brief ST25DV Memory size structure definition.
apalmieri 0:dd89565c6276 275 */
apalmieri 0:dd89565c6276 276 typedef struct
apalmieri 0:dd89565c6276 277 {
apalmieri 0:dd89565c6276 278 uint8_t BlockSize;
apalmieri 0:dd89565c6276 279 uint16_t Mem_Size;
apalmieri 0:dd89565c6276 280 } ST25DV_MEM_SIZE;
apalmieri 0:dd89565c6276 281
apalmieri 0:dd89565c6276 282 /**
apalmieri 0:dd89565c6276 283 * @brief ST25DV UID information structure definition.
apalmieri 0:dd89565c6276 284 */
apalmieri 0:dd89565c6276 285 typedef struct
apalmieri 0:dd89565c6276 286 {
apalmieri 0:dd89565c6276 287 uint32_t MsbUid;
apalmieri 0:dd89565c6276 288 uint32_t LsbUid;
apalmieri 0:dd89565c6276 289 } ST25DV_UID;
apalmieri 0:dd89565c6276 290
apalmieri 0:dd89565c6276 291 /**
apalmieri 0:dd89565c6276 292 * @brief ST25DV Password structure definition.
apalmieri 0:dd89565c6276 293 */
apalmieri 0:dd89565c6276 294 typedef struct
apalmieri 0:dd89565c6276 295 {
apalmieri 0:dd89565c6276 296 uint32_t MsbPasswd;
apalmieri 0:dd89565c6276 297 uint32_t LsbPasswd;
apalmieri 0:dd89565c6276 298 } ST25DV_PASSWD;
apalmieri 0:dd89565c6276 299
apalmieri 0:dd89565c6276 300 #ifndef DOXYGEN_SHOULD_SKIP_THIS
apalmieri 0:dd89565c6276 301 /**
apalmieri 0:dd89565c6276 302 * @brief NFCTAG standard driver API structure definition.
apalmieri 0:dd89565c6276 303 */
apalmieri 0:dd89565c6276 304 typedef struct
apalmieri 0:dd89565c6276 305 {
apalmieri 0:dd89565c6276 306 NFCTAG_StatusTypeDef (*Init)( I2C * , DigitalOut* );
apalmieri 0:dd89565c6276 307 NFCTAG_StatusTypeDef (*ReadID)( uint8_t * const , I2C * );
apalmieri 0:dd89565c6276 308 NFCTAG_StatusTypeDef (*IsReady)( const uint32_t , I2C *);
apalmieri 0:dd89565c6276 309 NFCTAG_StatusTypeDef (*GetITStatus)( uint16_t * const , I2C * );
apalmieri 0:dd89565c6276 310 NFCTAG_StatusTypeDef (*ConfigIT)( const uint16_t, I2C * );
apalmieri 0:dd89565c6276 311 NFCTAG_StatusTypeDef (*ReadData)( uint8_t * const, const uint16_t, const uint16_t, I2C* );
apalmieri 0:dd89565c6276 312 NFCTAG_StatusTypeDef (*WriteData)( const uint8_t * const, const uint16_t, const uint16_t, I2C* );
apalmieri 0:dd89565c6276 313 NFCTAG_StatusTypeDef (*ReadRegister)( uint8_t * const, const uint16_t, const uint16_t, I2C* );
apalmieri 0:dd89565c6276 314 NFCTAG_StatusTypeDef (*WriteRegister)( const uint8_t * const, const uint16_t, const uint16_t, I2C* );
apalmieri 0:dd89565c6276 315 void *pData;
apalmieri 0:dd89565c6276 316 } NFCTAG_DrvTypeDef;
apalmieri 0:dd89565c6276 317
apalmieri 0:dd89565c6276 318 /**
apalmieri 0:dd89565c6276 319 * @brief NFCTAG extended driver API structure definition.
apalmieri 0:dd89565c6276 320 */
apalmieri 0:dd89565c6276 321 typedef struct
apalmieri 0:dd89565c6276 322 {
apalmieri 0:dd89565c6276 323 NFCTAG_StatusTypeDef (*ReadICRev)( uint8_t * const, I2C * );
apalmieri 0:dd89565c6276 324 NFCTAG_StatusTypeDef (*WriteITPulse)( const ST25DV_PULSE_DURATION, I2C * );
apalmieri 0:dd89565c6276 325 NFCTAG_StatusTypeDef (*ReadITPulse)( ST25DV_PULSE_DURATION * const, I2C * );
apalmieri 0:dd89565c6276 326 NFCTAG_StatusTypeDef (*ReadDataCurrentAddr)( uint8_t * const, const uint16_t, I2C * );
apalmieri 0:dd89565c6276 327 NFCTAG_StatusTypeDef (*ReadUID)( ST25DV_UID * const, I2C * );
apalmieri 0:dd89565c6276 328 NFCTAG_StatusTypeDef (*ReadDSFID)( uint8_t * const, I2C * );
apalmieri 0:dd89565c6276 329 NFCTAG_StatusTypeDef (*ReadDsfidRFProtection)( ST25DV_LOCK_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 330 NFCTAG_StatusTypeDef (*ReadAFI)( uint8_t * const, I2C * );
apalmieri 0:dd89565c6276 331 NFCTAG_StatusTypeDef (*ReadAfiRFProtection)( ST25DV_LOCK_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 332 NFCTAG_StatusTypeDef (*ReadI2CProtectZone)( ST25DV_I2C_PROT_ZONE * const, I2C * );
apalmieri 0:dd89565c6276 333 NFCTAG_StatusTypeDef (*WriteI2CProtectZonex)( const ST25DV_PROTECTION_ZONE, const ST25DV_PROTECTION_CONF, I2C * );
apalmieri 0:dd89565c6276 334 NFCTAG_StatusTypeDef (*ReadLockCCFile)( ST25DV_LOCK_CCFILE * const, I2C * );
apalmieri 0:dd89565c6276 335 NFCTAG_StatusTypeDef (*WriteLockCCFile)( const ST25DV_CCFILE_BLOCK, const ST25DV_LOCK_STATUS, I2C * );
apalmieri 0:dd89565c6276 336 NFCTAG_StatusTypeDef (*ReadLockCFG)( ST25DV_LOCK_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 337 NFCTAG_StatusTypeDef (*WriteLockCFG)( const ST25DV_LOCK_STATUS, I2C * );
apalmieri 0:dd89565c6276 338 NFCTAG_StatusTypeDef (*PresentI2CPassword)( const ST25DV_PASSWD, I2C * );
apalmieri 0:dd89565c6276 339 NFCTAG_StatusTypeDef (*WriteI2CPassword)( const ST25DV_PASSWD, I2C * );
apalmieri 0:dd89565c6276 340 NFCTAG_StatusTypeDef (*ReadRFZxSS)( const ST25DV_PROTECTION_ZONE, ST25DV_RF_PROT_ZONE * const, I2C * );
apalmieri 0:dd89565c6276 341 NFCTAG_StatusTypeDef (*WriteRFZxSS)( const ST25DV_PROTECTION_ZONE, const ST25DV_RF_PROT_ZONE, I2C * );
apalmieri 0:dd89565c6276 342 NFCTAG_StatusTypeDef (*ReadEndZonex)( const ST25DV_END_ZONE, uint8_t * const, I2C * );
apalmieri 0:dd89565c6276 343 NFCTAG_StatusTypeDef (*WriteEndZonex)( const ST25DV_END_ZONE, const uint8_t, I2C * );
apalmieri 0:dd89565c6276 344 NFCTAG_StatusTypeDef (*InitEndZone)( I2C * );
apalmieri 0:dd89565c6276 345 NFCTAG_StatusTypeDef (*CreateUserZone)( uint16_t, uint16_t, uint16_t, uint16_t, I2C * );
apalmieri 0:dd89565c6276 346 NFCTAG_StatusTypeDef (*ReadMemSize)( ST25DV_MEM_SIZE * const, I2C * );
apalmieri 0:dd89565c6276 347 NFCTAG_StatusTypeDef (*ReadEHMode)( ST25DV_EH_MODE_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 348 NFCTAG_StatusTypeDef (*WriteEHMode)( const ST25DV_EH_MODE_STATUS, I2C * );
apalmieri 0:dd89565c6276 349 NFCTAG_StatusTypeDef (*ReadRFMngt)( ST25DV_RF_MNGT * const, I2C * );
apalmieri 0:dd89565c6276 350 NFCTAG_StatusTypeDef (*WriteRFMngt)( const uint8_t, I2C * );
apalmieri 0:dd89565c6276 351 NFCTAG_StatusTypeDef (*GetRFDisable)( ST25DV_EN_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 352 NFCTAG_StatusTypeDef (*SetRFDisable)( I2C * );
apalmieri 0:dd89565c6276 353 NFCTAG_StatusTypeDef (*ResetRFDisable)( I2C * );
apalmieri 0:dd89565c6276 354 NFCTAG_StatusTypeDef (*GetRFSleep)( ST25DV_EN_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 355 NFCTAG_StatusTypeDef (*SetRFSleep)( I2C * );
apalmieri 0:dd89565c6276 356 NFCTAG_StatusTypeDef (*ResetRFSleep)( I2C * );
apalmieri 0:dd89565c6276 357 NFCTAG_StatusTypeDef (*ReadMBMode)( ST25DV_EN_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 358 NFCTAG_StatusTypeDef (*WriteMBMode)( const ST25DV_EN_STATUS, I2C * );
apalmieri 0:dd89565c6276 359 NFCTAG_StatusTypeDef (*ReadMBWDG)( uint8_t * const, I2C * );
apalmieri 0:dd89565c6276 360 NFCTAG_StatusTypeDef (*WriteMBWDG)( const uint8_t, I2C * );
apalmieri 0:dd89565c6276 361 NFCTAG_StatusTypeDef (*ReadMailboxData)( uint8_t * const, const uint16_t, const uint16_t, I2C * );
apalmieri 0:dd89565c6276 362 NFCTAG_StatusTypeDef (*WriteMailboxData)( const uint8_t * const, const uint16_t, I2C * );
apalmieri 0:dd89565c6276 363 NFCTAG_StatusTypeDef (*ReadMailboxRegister)( uint8_t * const, const uint16_t, const uint16_t, I2C * );
apalmieri 0:dd89565c6276 364 NFCTAG_StatusTypeDef (*WriteMailboxRegister)( const uint8_t * const, const uint16_t, const uint16_t, I2C * );
apalmieri 0:dd89565c6276 365 NFCTAG_StatusTypeDef (*ReadI2CSecuritySession_Dyn)( ST25DV_I2CSSO_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 366 NFCTAG_StatusTypeDef (*ReadITSTStatus_Dyn)( uint8_t * const, I2C * );
apalmieri 0:dd89565c6276 367 NFCTAG_StatusTypeDef (*ReadGPO_Dyn)( uint8_t *, I2C * );
apalmieri 0:dd89565c6276 368 NFCTAG_StatusTypeDef (*GetGPO_en_Dyn)( ST25DV_EN_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 369 NFCTAG_StatusTypeDef (*SetGPO_en_Dyn)( I2C * );
apalmieri 0:dd89565c6276 370 NFCTAG_StatusTypeDef (*ResetGPO_en_Dyn)( I2C * );
apalmieri 0:dd89565c6276 371 NFCTAG_StatusTypeDef (*ReadEHCtrl_Dyn)( ST25DV_EH_CTRL * const, I2C * );
apalmieri 0:dd89565c6276 372 NFCTAG_StatusTypeDef (*GetEHENMode_Dyn)( ST25DV_EN_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 373 NFCTAG_StatusTypeDef (*SetEHENMode_Dyn)( I2C *);
apalmieri 0:dd89565c6276 374 NFCTAG_StatusTypeDef (*ResetEHENMode_Dyn)( I2C * );
apalmieri 0:dd89565c6276 375 NFCTAG_StatusTypeDef (*GetEHON_Dyn)( ST25DV_EN_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 376 NFCTAG_StatusTypeDef (*GetRFField_Dyn)( ST25DV_FIELD_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 377 NFCTAG_StatusTypeDef (*GetVCC_Dyn)( ST25DV_VCC_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 378 NFCTAG_StatusTypeDef (*ReadRFMngt_Dyn)( ST25DV_RF_MNGT * const, I2C * );
apalmieri 0:dd89565c6276 379 NFCTAG_StatusTypeDef (*WriteRFMngt_Dyn)( const uint8_t, I2C * );
apalmieri 0:dd89565c6276 380 NFCTAG_StatusTypeDef (*GetRFDisable_Dyn)( ST25DV_EN_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 381 NFCTAG_StatusTypeDef (*SetRFDisable_Dyn)( I2C * );
apalmieri 0:dd89565c6276 382 NFCTAG_StatusTypeDef (*ResetRFDisable_Dyn)( I2C * );
apalmieri 0:dd89565c6276 383 NFCTAG_StatusTypeDef (*GetRFSleep_Dyn)( ST25DV_EN_STATUS * const , I2C *);
apalmieri 0:dd89565c6276 384 NFCTAG_StatusTypeDef (*SetRFSleep_Dyn)( I2C * );
apalmieri 0:dd89565c6276 385 NFCTAG_StatusTypeDef (*ResetRFSleep_Dyn)( I2C * );
apalmieri 0:dd89565c6276 386 NFCTAG_StatusTypeDef (*ReadMBctrl_Dyn)( ST25DV_MB_CTRL_DYN_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 387 NFCTAG_StatusTypeDef (*GetMBEN_Dyn)( ST25DV_EN_STATUS * const, I2C * );
apalmieri 0:dd89565c6276 388 NFCTAG_StatusTypeDef (*SetMBEN_Dyn)( I2C * );
apalmieri 0:dd89565c6276 389 NFCTAG_StatusTypeDef (*ResetMBEN_Dyn)( I2C * );
apalmieri 0:dd89565c6276 390 NFCTAG_StatusTypeDef (*ReadMBLength_Dyn)( uint8_t * const, I2C * );
apalmieri 0:dd89565c6276 391 } NFCTAG_ExtDrvTypeDef;
apalmieri 0:dd89565c6276 392 #endif
apalmieri 0:dd89565c6276 393
apalmieri 0:dd89565c6276 394 /* Exported constants --------------------------------------------------------*/
apalmieri 0:dd89565c6276 395 /** @brief ST25DV 4Kbits */
apalmieri 0:dd89565c6276 396 #define I_AM_ST25DV04 0x24
apalmieri 0:dd89565c6276 397 /** @brief ST25DV 64Kbits */
apalmieri 0:dd89565c6276 398 #define I_AM_ST25DV64 0x26
apalmieri 0:dd89565c6276 399
apalmieri 0:dd89565c6276 400 /*#ifndef NULL
apalmieri 0:dd89565c6276 401 #define NULL (void *) 0
apalmieri 0:dd89565c6276 402 #endif
apalmieri 0:dd89565c6276 403 */
apalmieri 0:dd89565c6276 404 /** @brief I2C address to be used for ST25DV Data accesses. */
apalmieri 0:dd89565c6276 405 #define ST25DV_ADDR_DATA_I2C 0xA6
apalmieri 0:dd89565c6276 406 /** @brief I2C address to be used for ST25DV System accesses. */
apalmieri 0:dd89565c6276 407 #define ST25DV_ADDR_SYST_I2C 0xAE
apalmieri 0:dd89565c6276 408
apalmieri 0:dd89565c6276 409 /** @brief I2C Time out (ms), min value : (Max write bytes) / (Internal page write) * tw (256/4)*5. */
apalmieri 0:dd89565c6276 410 #define ST25DV_I2C_TIMEOUT 320
apalmieri 0:dd89565c6276 411
apalmieri 0:dd89565c6276 412 /** @brief Size of the ST25DV write buffer. */
apalmieri 0:dd89565c6276 413 #define ST25DV_MAX_WRITE_BYTE 256
apalmieri 0:dd89565c6276 414 /** @brief Size of the ST25DVMailbox memory. */
apalmieri 0:dd89565c6276 415 #define ST25DV_MAX_MAILBOX_LENGTH 256
apalmieri 0:dd89565c6276 416
apalmieri 0:dd89565c6276 417 /* Registers i2c address */
apalmieri 0:dd89565c6276 418 /** @brief ST25DV GPO register address. */
apalmieri 0:dd89565c6276 419 #define ST25DV_GPO_REG 0x0000
apalmieri 0:dd89565c6276 420 /** @brief ST25DV IT duration register address. */
apalmieri 0:dd89565c6276 421 #define ST25DV_ITTIME_REG 0x0001
apalmieri 0:dd89565c6276 422 /** @brief ST25DV Energy Harvesting register address. */
apalmieri 0:dd89565c6276 423 #define ST25DV_EH_MODE_REG 0x0002
apalmieri 0:dd89565c6276 424 /** @brief ST25DV RF management register address. */
apalmieri 0:dd89565c6276 425 #define ST25DV_RF_MNGT_REG 0x0003
apalmieri 0:dd89565c6276 426 /** @brief ST25DV Area 1 security register address. */
apalmieri 0:dd89565c6276 427 #define ST25DV_RFZ1SS_REG 0x0004
apalmieri 0:dd89565c6276 428 /** @brief ST25DV Area 1 end address register address. */
apalmieri 0:dd89565c6276 429 #define ST25DV_END1_REG 0x0005
apalmieri 0:dd89565c6276 430 /** @brief ST25DV Area 2 security register address. */
apalmieri 0:dd89565c6276 431 #define ST25DV_RFZ2SS_REG 0x0006
apalmieri 0:dd89565c6276 432 /** @brief ST25DV Area 2 end address register address. */
apalmieri 0:dd89565c6276 433 #define ST25DV_END2_REG 0x0007
apalmieri 0:dd89565c6276 434 /** @brief ST25DV Area 3 security register address. */
apalmieri 0:dd89565c6276 435 #define ST25DV_RFZ3SS_REG 0x0008
apalmieri 0:dd89565c6276 436 /** @brief ST25DV Area 3 end address register address. */
apalmieri 0:dd89565c6276 437 #define ST25DV_END3_REG 0x0009
apalmieri 0:dd89565c6276 438 /** @brief ST25DV Area 4 security register address. */
apalmieri 0:dd89565c6276 439 #define ST25DV_RFZ4SS_REG 0x000A
apalmieri 0:dd89565c6276 440 /** @brief ST25DV I2C security register address. */
apalmieri 0:dd89565c6276 441 #define ST25DV_I2CZSS_REG 0x000B
apalmieri 0:dd89565c6276 442 /** @brief ST25DV Capability Container lock register address. */
apalmieri 0:dd89565c6276 443 #define ST25DV_LOCKCCFILE_REG 0x000C
apalmieri 0:dd89565c6276 444 /** @brief ST25DV Mailbox mode register address. */
apalmieri 0:dd89565c6276 445 #define ST25DV_MB_MODE_REG 0x000D
apalmieri 0:dd89565c6276 446 /** @brief ST25DV Mailbox Watchdog register address. */
apalmieri 0:dd89565c6276 447 #define ST25DV_MB_WDG_REG 0x000E
apalmieri 0:dd89565c6276 448 /** @brief ST25DV Configuration lock register address. */
apalmieri 0:dd89565c6276 449 #define ST25DV_LOCKCFG_REG 0x000F
apalmieri 0:dd89565c6276 450 /** @brief ST25DV DSFID lock register address. */
apalmieri 0:dd89565c6276 451 #define ST25DV_LOCKDSFID_REG 0x0010
apalmieri 0:dd89565c6276 452 /** @brief ST25DV AFI lock register address. */
apalmieri 0:dd89565c6276 453 #define ST25DV_LOCKAFI_REG 0x0011
apalmieri 0:dd89565c6276 454 /** @brief ST25DV DSFID register address. */
apalmieri 0:dd89565c6276 455 #define ST25DV_DSFID_REG 0x0012
apalmieri 0:dd89565c6276 456 /** @brief ST25DV AFI register address. */
apalmieri 0:dd89565c6276 457 #define ST25DV_AFI_REG 0x0013
apalmieri 0:dd89565c6276 458 /** @brief ST25DV Memory size register address. */
apalmieri 0:dd89565c6276 459 #define ST25DV_MEM_SIZE_REG 0x0014
apalmieri 0:dd89565c6276 460 /** @brief ST25DV ICref register address. */
apalmieri 0:dd89565c6276 461 #define ST25DV_ICREF_REG 0x0017
apalmieri 0:dd89565c6276 462 /** @brief ST25DV UID register address. */
apalmieri 0:dd89565c6276 463 #define ST25DV_UID_REG 0x0018
apalmieri 0:dd89565c6276 464 /** @brief ST25DV IC revision register address. */
apalmieri 0:dd89565c6276 465 #define ST25DV_ICREV_REG 0x0020
apalmieri 0:dd89565c6276 466 /** @brief ST25DV I2C password register address. */
apalmieri 0:dd89565c6276 467 #define ST25DV_I2CPASSWD_REG 0x0900
apalmieri 0:dd89565c6276 468
apalmieri 0:dd89565c6276 469 /* Dynamic Registers i2c address */
apalmieri 0:dd89565c6276 470 /** @brief ST25DV GPO dynamic register address. */
apalmieri 0:dd89565c6276 471 #define ST25DV_GPO_DYN_REG 0x2000
apalmieri 0:dd89565c6276 472 /** @brief ST25DV Energy Harvesting control dynamic register address. */
apalmieri 0:dd89565c6276 473 #define ST25DV_EH_CTRL_DYN_REG 0x2002
apalmieri 0:dd89565c6276 474 /** @brief ST25DV RF management dynamic register address. */
apalmieri 0:dd89565c6276 475 #define ST25DV_RF_MNGT_DYN_REG 0x2003
apalmieri 0:dd89565c6276 476 /** @brief ST25DV I2C secure session opened dynamic register address. */
apalmieri 0:dd89565c6276 477 #define ST25DV_I2C_SSO_DYN_REG 0x2004
apalmieri 0:dd89565c6276 478 /** @brief ST25DV Interrupt status dynamic register address. */
apalmieri 0:dd89565c6276 479 #define ST25DV_ITSTS_DYN_REG 0x2005
apalmieri 0:dd89565c6276 480 /** @brief ST25DV Mailbox control dynamic register address. */
apalmieri 0:dd89565c6276 481 #define ST25DV_MB_CTRL_DYN_REG 0x2006
apalmieri 0:dd89565c6276 482 /** @brief ST25DV Mailbox message length dynamic register address. */
apalmieri 0:dd89565c6276 483 #define ST25DV_MBLEN_DYN_REG 0x2007
apalmieri 0:dd89565c6276 484 /** @brief ST25DV Mailbox buffer address. */
apalmieri 0:dd89565c6276 485 #define ST25DV_MAILBOX_RAM_REG 0x2008
apalmieri 0:dd89565c6276 486
apalmieri 0:dd89565c6276 487 /* Registers fields definitions */
apalmieri 0:dd89565c6276 488 /* MB_MODE */
apalmieri 0:dd89565c6276 489 #define ST25DV_MB_MODE_RW_SHIFT (0)
apalmieri 0:dd89565c6276 490 #define ST25DV_MB_MODE_RW_FIELD 0xFE
apalmieri 0:dd89565c6276 491 #define ST25DV_MB_MODE_RW_MASK 0x01
apalmieri 0:dd89565c6276 492
apalmieri 0:dd89565c6276 493 /* MB_LEN_Dyn */
apalmieri 0:dd89565c6276 494 #define ST25DV_MBLEN_DYN_MBLEN_SHIFT (0)
apalmieri 0:dd89565c6276 495 #define ST25DV_MBLEN_DYN_MBLEN_FIELD 0x00
apalmieri 0:dd89565c6276 496 #define ST25DV_MBLEN_DYN_MBLEN_MASK 0xFF
apalmieri 0:dd89565c6276 497
apalmieri 0:dd89565c6276 498 /* MB_CTRL_Dyn */
apalmieri 0:dd89565c6276 499 #define ST25DV_MB_CTRL_DYN_MBEN_SHIFT (0)
apalmieri 0:dd89565c6276 500 #define ST25DV_MB_CTRL_DYN_MBEN_FIELD 0xFE
apalmieri 0:dd89565c6276 501 #define ST25DV_MB_CTRL_DYN_MBEN_MASK 0x01
apalmieri 0:dd89565c6276 502 #define ST25DV_MB_CTRL_DYN_HOSTPUTMSG_SHIFT (1)
apalmieri 0:dd89565c6276 503 #define ST25DV_MB_CTRL_DYN_HOSTPUTMSG_FIELD 0xFD
apalmieri 0:dd89565c6276 504 #define ST25DV_MB_CTRL_DYN_HOSTPUTMSG_MASK 0x02
apalmieri 0:dd89565c6276 505 #define ST25DV_MB_CTRL_DYN_RFPUTMSG_SHIFT (2)
apalmieri 0:dd89565c6276 506 #define ST25DV_MB_CTRL_DYN_RFPUTMSG_FIELD 0xFB
apalmieri 0:dd89565c6276 507 #define ST25DV_MB_CTRL_DYN_RFPUTMSG_MASK 0x04
apalmieri 0:dd89565c6276 508 #define ST25DV_MB_CTRL_DYN_STRESERVED_SHIFT (3)
apalmieri 0:dd89565c6276 509 #define ST25DV_MB_CTRL_DYN_STRESERVED_FIELD 0xF7
apalmieri 0:dd89565c6276 510 #define ST25DV_MB_CTRL_DYN_STRESERVED_MASK 0x08
apalmieri 0:dd89565c6276 511 #define ST25DV_MB_CTRL_DYN_HOSTMISSMSG_SHIFT (4)
apalmieri 0:dd89565c6276 512 #define ST25DV_MB_CTRL_DYN_HOSTMISSMSG_FIELD 0xEF
apalmieri 0:dd89565c6276 513 #define ST25DV_MB_CTRL_DYN_HOSTMISSMSG_MASK 0x10
apalmieri 0:dd89565c6276 514 #define ST25DV_MB_CTRL_DYN_RFMISSMSG_SHIFT (5)
apalmieri 0:dd89565c6276 515 #define ST25DV_MB_CTRL_DYN_RFMISSMSG_FIELD 0xDF
apalmieri 0:dd89565c6276 516 #define ST25DV_MB_CTRL_DYN_RFMISSMSG_MASK 0x20
apalmieri 0:dd89565c6276 517 #define ST25DV_MB_CTRL_DYN_CURRENTMSG_SHIFT (6)
apalmieri 0:dd89565c6276 518 #define ST25DV_MB_CTRL_DYN_CURRENTMSG_FIELD 0x3F
apalmieri 0:dd89565c6276 519 #define ST25DV_MB_CTRL_DYN_CURRENTMSG_MASK 0xC0
apalmieri 0:dd89565c6276 520
apalmieri 0:dd89565c6276 521 /* MB_WDG */
apalmieri 0:dd89565c6276 522 #define ST25DV_MB_WDG_DELAY_SHIFT (0)
apalmieri 0:dd89565c6276 523 #define ST25DV_MB_WDG_DELAY_FIELD 0xF8
apalmieri 0:dd89565c6276 524 #define ST25DV_MB_WDG_DELAY_MASK 0x07
apalmieri 0:dd89565c6276 525
apalmieri 0:dd89565c6276 526 /* GPO */
apalmieri 0:dd89565c6276 527 #define ST25DV_GPO_RFUSERSTATE_SHIFT (0)
apalmieri 0:dd89565c6276 528 #define ST25DV_GPO_RFUSERSTATE_FIELD 0xFE
apalmieri 0:dd89565c6276 529 #define ST25DV_GPO_RFUSERSTATE_MASK 0x01
apalmieri 0:dd89565c6276 530 #define ST25DV_GPO_RFACTIVITY_SHIFT (1)
apalmieri 0:dd89565c6276 531 #define ST25DV_GPO_RFACTIVITY_FIELD 0xFD
apalmieri 0:dd89565c6276 532 #define ST25DV_GPO_RFACTIVITY_MASK 0x02
apalmieri 0:dd89565c6276 533 #define ST25DV_GPO_RFINTERRUPT_SHIFT (2)
apalmieri 0:dd89565c6276 534 #define ST25DV_GPO_RFINTERRUPT_FIELD 0xFB
apalmieri 0:dd89565c6276 535 #define ST25DV_GPO_RFINTERRUPT_MASK 0x04
apalmieri 0:dd89565c6276 536 #define ST25DV_GPO_FIELDCHANGE_SHIFT (3)
apalmieri 0:dd89565c6276 537 #define ST25DV_GPO_FIELDCHANGE_FIELD 0xF7
apalmieri 0:dd89565c6276 538 #define ST25DV_GPO_FIELDCHANGE_MASK 0x08
apalmieri 0:dd89565c6276 539 #define ST25DV_GPO_RFPUTMSG_SHIFT (4)
apalmieri 0:dd89565c6276 540 #define ST25DV_GPO_RFPUTMSG_FIELD 0xEF
apalmieri 0:dd89565c6276 541 #define ST25DV_GPO_RFPUTMSG_MASK 0x10
apalmieri 0:dd89565c6276 542 #define ST25DV_GPO_RFGETMSG_SHIFT (5)
apalmieri 0:dd89565c6276 543 #define ST25DV_GPO_RFGETMSG_FIELD 0xDF
apalmieri 0:dd89565c6276 544 #define ST25DV_GPO_RFGETMSG_MASK 0x20
apalmieri 0:dd89565c6276 545 #define ST25DV_GPO_RFWRITE_SHIFT (6)
apalmieri 0:dd89565c6276 546 #define ST25DV_GPO_RFWRITE_FIELD 0xBF
apalmieri 0:dd89565c6276 547 #define ST25DV_GPO_RFWRITE_MASK 0x40
apalmieri 0:dd89565c6276 548 #define ST25DV_GPO_ENABLE_SHIFT (7)
apalmieri 0:dd89565c6276 549 #define ST25DV_GPO_ENABLE_FIELD 0x7F
apalmieri 0:dd89565c6276 550 #define ST25DV_GPO_ENABLE_MASK 0x80
apalmieri 0:dd89565c6276 551 #define ST25DV_GPO_ALL_MASK 0xFF
apalmieri 0:dd89565c6276 552
apalmieri 0:dd89565c6276 553 /* GPO_Dyn */
apalmieri 0:dd89565c6276 554 #define ST25DV_GPO_DYN_RFUSERSTATE_SHIFT (0)
apalmieri 0:dd89565c6276 555 #define ST25DV_GPO_DYN_RFUSERSTATE_FIELD 0xFE
apalmieri 0:dd89565c6276 556 #define ST25DV_GPO_DYN_RFUSERSTATE_MASK 0x01
apalmieri 0:dd89565c6276 557 #define ST25DV_GPO_DYN_RFACTIVITY_SHIFT (1)
apalmieri 0:dd89565c6276 558 #define ST25DV_GPO_DYN_RFACTIVITY_FIELD 0xFD
apalmieri 0:dd89565c6276 559 #define ST25DV_GPO_DYN_RFACTIVITY_MASK 0x02
apalmieri 0:dd89565c6276 560 #define ST25DV_GPO_DYN_RFINTERRUPT_SHIFT (2)
apalmieri 0:dd89565c6276 561 #define ST25DV_GPO_DYN_RFINTERRUPT_FIELD 0xFB
apalmieri 0:dd89565c6276 562 #define ST25DV_GPO_DYN_RFINTERRUPT_MASK 0x04
apalmieri 0:dd89565c6276 563 #define ST25DV_GPO_DYN_FIELDCHANGE_SHIFT (3)
apalmieri 0:dd89565c6276 564 #define ST25DV_GPO_DYN_FIELDCHANGE_FIELD 0xF7
apalmieri 0:dd89565c6276 565 #define ST25DV_GPO_DYN_FIELDCHANGE_MASK 0x08
apalmieri 0:dd89565c6276 566 #define ST25DV_GPO_DYN_RFPUTMSG_SHIFT (4)
apalmieri 0:dd89565c6276 567 #define ST25DV_GPO_DYN_RFPUTMSG_FIELD 0xEF
apalmieri 0:dd89565c6276 568 #define ST25DV_GPO_DYN_RFPUTMSG_MASK 0x10
apalmieri 0:dd89565c6276 569 #define ST25DV_GPO_DYN_RFGETMSG_SHIFT (5)
apalmieri 0:dd89565c6276 570 #define ST25DV_GPO_DYN_RFGETMSG_FIELD 0xDF
apalmieri 0:dd89565c6276 571 #define ST25DV_GPO_DYN_RFGETMSG_MASK 0x20
apalmieri 0:dd89565c6276 572 #define ST25DV_GPO_DYN_RFWRITE_SHIFT (6)
apalmieri 0:dd89565c6276 573 #define ST25DV_GPO_DYN_RFWRITE_FIELD 0xBF
apalmieri 0:dd89565c6276 574 #define ST25DV_GPO_DYN_RFWRITE_MASK 0x40
apalmieri 0:dd89565c6276 575 #define ST25DV_GPO_DYN_ENABLE_SHIFT (7)
apalmieri 0:dd89565c6276 576 #define ST25DV_GPO_DYN_ENABLE_FIELD 0x7F
apalmieri 0:dd89565c6276 577 #define ST25DV_GPO_DYN_ENABLE_MASK 0x80
apalmieri 0:dd89565c6276 578 #define ST25DV_GPO_DYN_ALL_MASK 0xFF
apalmieri 0:dd89565c6276 579
apalmieri 0:dd89565c6276 580 /* ITTIME */
apalmieri 0:dd89565c6276 581 #define ST25DV_ITTIME_DELAY_SHIFT (0)
apalmieri 0:dd89565c6276 582 #define ST25DV_ITTIME_DELAY_FIELD 0xFC
apalmieri 0:dd89565c6276 583 #define ST25DV_ITTIME_DELAY_MASK 0x03
apalmieri 0:dd89565c6276 584
apalmieri 0:dd89565c6276 585 /* ITSTS_Dyn */
apalmieri 0:dd89565c6276 586 #define ST25DV_ITSTS_RFUSERSTATE_SHIFT (0)
apalmieri 0:dd89565c6276 587 #define ST25DV_ITSTS_RFUSERSTATE_FIELD 0xFE
apalmieri 0:dd89565c6276 588 #define ST25DV_ITSTS_RFUSERSTATE_MASK 0x01
apalmieri 0:dd89565c6276 589 #define ST25DV_ITSTS_RFACTIVITY_SHIFT (1)
apalmieri 0:dd89565c6276 590 #define ST25DV_ITSTS_RFACTIVITY_FIELD 0xFD
apalmieri 0:dd89565c6276 591 #define ST25DV_ITSTS_RFACTIVITY_MASK 0x02
apalmieri 0:dd89565c6276 592 #define ST25DV_ITSTS_RFINTERRUPT_SHIFT (2)
apalmieri 0:dd89565c6276 593 #define ST25DV_ITSTS_RFINTERRUPT_FIELD 0xFB
apalmieri 0:dd89565c6276 594 #define ST25DV_ITSTS_RFINTERRUPT_MASK 0x04
apalmieri 0:dd89565c6276 595 #define ST25DV_ITSTS_FIELDFALLING_SHIFT (3)
apalmieri 0:dd89565c6276 596 #define ST25DV_ITSTS_FIELDFALLING_FIELD 0xF7
apalmieri 0:dd89565c6276 597 #define ST25DV_ITSTS_FIELDFALLING_MASK 0x08
apalmieri 0:dd89565c6276 598 #define ST25DV_ITSTS_FIELDRISING_SHIFT (4)
apalmieri 0:dd89565c6276 599 #define ST25DV_ITSTS_FIELDRISING_FIELD 0xEF
apalmieri 0:dd89565c6276 600 #define ST25DV_ITSTS_FIELDRISING_MASK 0x10
apalmieri 0:dd89565c6276 601 #define ST25DV_ITSTS_RFPUTMSG_SHIFT (5)
apalmieri 0:dd89565c6276 602 #define ST25DV_ITSTS_RFPUTMSG_FIELD 0xDF
apalmieri 0:dd89565c6276 603 #define ST25DV_ITSTS_RFPUTMSG_MASK 0x20
apalmieri 0:dd89565c6276 604 #define ST25DV_ITSTS_RFGETMSG_SHIFT (6)
apalmieri 0:dd89565c6276 605 #define ST25DV_ITSTS_RFGETMSG_FIELD 0xBF
apalmieri 0:dd89565c6276 606 #define ST25DV_ITSTS_RFGETMSG_MASK 0x40
apalmieri 0:dd89565c6276 607 #define ST25DV_ITSTS_RFWRITE_SHIFT (7)
apalmieri 0:dd89565c6276 608 #define ST25DV_ITSTS_RFWRITE_FIELD 0x7F
apalmieri 0:dd89565c6276 609 #define ST25DV_ITSTS_RFWRITE_MASK 0x80
apalmieri 0:dd89565c6276 610
apalmieri 0:dd89565c6276 611 /* EH_MODE */
apalmieri 0:dd89565c6276 612 #define ST25DV_EH_MODE_SHIFT (0)
apalmieri 0:dd89565c6276 613 #define ST25DV_EH_MODE_FIELD 0xFE
apalmieri 0:dd89565c6276 614 #define ST25DV_EH_MODE_MASK 0x01
apalmieri 0:dd89565c6276 615
apalmieri 0:dd89565c6276 616 /* EH_CTRL_Dyn */
apalmieri 0:dd89565c6276 617 #define ST25DV_EH_CTRL_DYN_EH_EN_SHIFT (0)
apalmieri 0:dd89565c6276 618 #define ST25DV_EH_CTRL_DYN_EH_EN_FIELD 0xFE
apalmieri 0:dd89565c6276 619 #define ST25DV_EH_CTRL_DYN_EH_EN_MASK 0x01
apalmieri 0:dd89565c6276 620 #define ST25DV_EH_CTRL_DYN_EH_ON_SHIFT (1)
apalmieri 0:dd89565c6276 621 #define ST25DV_EH_CTRL_DYN_EH_ON_FIELD 0xFD
apalmieri 0:dd89565c6276 622 #define ST25DV_EH_CTRL_DYN_EH_ON_MASK 0x02
apalmieri 0:dd89565c6276 623 #define ST25DV_EH_CTRL_DYN_FIELD_ON_SHIFT (2)
apalmieri 0:dd89565c6276 624 #define ST25DV_EH_CTRL_DYN_FIELD_ON_FIELD 0xFB
apalmieri 0:dd89565c6276 625 #define ST25DV_EH_CTRL_DYN_FIELD_ON_MASK 0x04
apalmieri 0:dd89565c6276 626 #define ST25DV_EH_CTRL_DYN_VCC_ON_SHIFT (3)
apalmieri 0:dd89565c6276 627 #define ST25DV_EH_CTRL_DYN_VCC_ON_FIELD 0xF7
apalmieri 0:dd89565c6276 628 #define ST25DV_EH_CTRL_DYN_VCC_ON_MASK 0x08
apalmieri 0:dd89565c6276 629
apalmieri 0:dd89565c6276 630 /* RF_MNGT */
apalmieri 0:dd89565c6276 631 #define ST25DV_RF_MNGT_RFDIS_SHIFT (0)
apalmieri 0:dd89565c6276 632 #define ST25DV_RF_MNGT_RFDIS_FIELD 0xFE
apalmieri 0:dd89565c6276 633 #define ST25DV_RF_MNGT_RFDIS_MASK 0x01
apalmieri 0:dd89565c6276 634 #define ST25DV_RF_MNGT_RFSLEEP_SHIFT (1)
apalmieri 0:dd89565c6276 635 #define ST25DV_RF_MNGT_RFSLEEP_FIELD 0xFD
apalmieri 0:dd89565c6276 636 #define ST25DV_RF_MNGT_RFSLEEP_MASK 0x02
apalmieri 0:dd89565c6276 637
apalmieri 0:dd89565c6276 638 /* RF_MNGT_Dyn */
apalmieri 0:dd89565c6276 639 #define ST25DV_RF_MNGT_DYN_RFDIS_SHIFT (0)
apalmieri 0:dd89565c6276 640 #define ST25DV_RF_MNGT_DYN_RFDIS_FIELD 0xFE
apalmieri 0:dd89565c6276 641 #define ST25DV_RF_MNGT_DYN_RFDIS_MASK 0x01
apalmieri 0:dd89565c6276 642 #define ST25DV_RF_MNGT_DYN_RFSLEEP_SHIFT (1)
apalmieri 0:dd89565c6276 643 #define ST25DV_RF_MNGT_DYN_RFSLEEP_FIELD 0xFD
apalmieri 0:dd89565c6276 644 #define ST25DV_RF_MNGT_DYN_RFSLEEP_MASK 0x02
apalmieri 0:dd89565c6276 645
apalmieri 0:dd89565c6276 646 /* RFZSS */
apalmieri 0:dd89565c6276 647 #define ST25DV_RFZSS_PWDCTRL_SHIFT (0)
apalmieri 0:dd89565c6276 648 #define ST25DV_RFZSS_PWDCTRL_FIELD 0xFC
apalmieri 0:dd89565c6276 649 #define ST25DV_RFZSS_PWDCTRL_MASK 0x03
apalmieri 0:dd89565c6276 650 #define ST25DV_RFZSS_RWPROT_SHIFT (2)
apalmieri 0:dd89565c6276 651 #define ST25DV_RFZSS_RWPROT_FIELD 0xF3
apalmieri 0:dd89565c6276 652 #define ST25DV_RFZSS_RWPROT_MASK 0x0C
apalmieri 0:dd89565c6276 653
apalmieri 0:dd89565c6276 654 /* I2CZSS */
apalmieri 0:dd89565c6276 655 #define ST25DV_I2CZSS_PZ1_SHIFT (0)
apalmieri 0:dd89565c6276 656 #define ST25DV_I2CZSS_PZ1_FIELD 0xFC
apalmieri 0:dd89565c6276 657 #define ST25DV_I2CZSS_PZ1_MASK 0x03
apalmieri 0:dd89565c6276 658 #define ST25DV_I2CZSS_PZ2_SHIFT (2)
apalmieri 0:dd89565c6276 659 #define ST25DV_I2CZSS_PZ2_FIELD 0xF3
apalmieri 0:dd89565c6276 660 #define ST25DV_I2CZSS_PZ2_MASK 0x0C
apalmieri 0:dd89565c6276 661 #define ST25DV_I2CZSS_PZ3_SHIFT (4)
apalmieri 0:dd89565c6276 662 #define ST25DV_I2CZSS_PZ3_FIELD 0xCF
apalmieri 0:dd89565c6276 663 #define ST25DV_I2CZSS_PZ3_MASK 0x30
apalmieri 0:dd89565c6276 664 #define ST25DV_I2CZSS_PZ4_SHIFT (6)
apalmieri 0:dd89565c6276 665 #define ST25DV_I2CZSS_PZ4_FIELD 0x3F
apalmieri 0:dd89565c6276 666 #define ST25DV_I2CZSS_PZ4_MASK 0xC0
apalmieri 0:dd89565c6276 667
apalmieri 0:dd89565c6276 668 /* LOCKCCFILE */
apalmieri 0:dd89565c6276 669 #define ST25DV_LOCKCCFILE_BLCK0_SHIFT (0)
apalmieri 0:dd89565c6276 670 #define ST25DV_LOCKCCFILE_BLCK0_FIELD 0xFE
apalmieri 0:dd89565c6276 671 #define ST25DV_LOCKCCFILE_BLCK0_MASK 0x01
apalmieri 0:dd89565c6276 672 #define ST25DV_LOCKCCFILE_BLCK1_SHIFT (1)
apalmieri 0:dd89565c6276 673 #define ST25DV_LOCKCCFILE_BLCK1_FIELD 0xFD
apalmieri 0:dd89565c6276 674 #define ST25DV_LOCKCCFILE_BLCK1_MASK 0x02
apalmieri 0:dd89565c6276 675
apalmieri 0:dd89565c6276 676 /* LOCKCFG */
apalmieri 0:dd89565c6276 677 #define ST25DV_LOCKCFG_B0_SHIFT (0)
apalmieri 0:dd89565c6276 678 #define ST25DV_LOCKCFG_B0_FIELD 0xFE
apalmieri 0:dd89565c6276 679 #define ST25DV_LOCKCFG_B0_MASK 0x01
apalmieri 0:dd89565c6276 680
apalmieri 0:dd89565c6276 681 /* I2C_SSO_Dyn */
apalmieri 0:dd89565c6276 682 #define ST25DV_I2C_SSO_DYN_I2CSSO_SHIFT (0)
apalmieri 0:dd89565c6276 683 #define ST25DV_I2C_SSO_DYN_I2CSSO_FIELD 0xFE
apalmieri 0:dd89565c6276 684 #define ST25DV_I2C_SSO_DYN_I2CSSO_MASK 0x01
apalmieri 0:dd89565c6276 685
apalmieri 0:dd89565c6276 686
apalmieri 0:dd89565c6276 687
apalmieri 0:dd89565c6276 688 /* External variables --------------------------------------------------------*/
apalmieri 0:dd89565c6276 689 /* NFCTAG driver structure */
apalmieri 0:dd89565c6276 690 extern NFCTAG_DrvTypeDef St25Dv_i2c_Drv;
apalmieri 0:dd89565c6276 691 extern NFCTAG_ExtDrvTypeDef St25Dv_i2c_ExtDrv;
apalmieri 0:dd89565c6276 692
apalmieri 0:dd89565c6276 693 /* Exported macro ------------------------------------------------------------*/
apalmieri 0:dd89565c6276 694 /* Imported functions ------------------------------------------------------- */
apalmieri 0:dd89565c6276 695 extern NFCTAG_StatusTypeDef ST25DV_IO_Init( I2C* mi2cChannel, DigitalOut *mLPD );
apalmieri 0:dd89565c6276 696 extern NFCTAG_StatusTypeDef ST25DV_IO_MemWrite( const uint8_t * const pData, const uint8_t DevAddr, const uint16_t TarAddr, const uint16_t Size, I2C* mi2cChannel );
apalmieri 0:dd89565c6276 697 extern NFCTAG_StatusTypeDef ST25DV_IO_Write( const uint8_t * const pData, const uint8_t DevAddr, const uint16_t Size, I2C* mi2cChannel );
apalmieri 0:dd89565c6276 698 extern NFCTAG_StatusTypeDef ST25DV_IO_MemRead( uint8_t * const pData, const uint8_t DevAddr, const uint16_t TarAddr, const uint16_t Size, I2C* mi2cChannel );
apalmieri 0:dd89565c6276 699 extern NFCTAG_StatusTypeDef ST25DV_IO_Read( uint8_t * const pData, const uint8_t DevAddr, const uint16_t Size, I2C* mi2cChannel );
apalmieri 0:dd89565c6276 700 extern uint8_t ST25DV_IO_IsNacked( void );
apalmieri 0:dd89565c6276 701 extern NFCTAG_StatusTypeDef ST25DV_IO_IsDeviceReady( const uint8_t DevAddr, const uint32_t Trials, I2C* mi2cChannel);
apalmieri 0:dd89565c6276 702
apalmieri 0:dd89565c6276 703 /* Exported functions ------------------------------------------------------- */
apalmieri 0:dd89565c6276 704
apalmieri 0:dd89565c6276 705 /**
apalmieri 0:dd89565c6276 706 * @}
apalmieri 0:dd89565c6276 707 */
apalmieri 0:dd89565c6276 708
apalmieri 0:dd89565c6276 709 /**
apalmieri 0:dd89565c6276 710 * @}
apalmieri 0:dd89565c6276 711 */
apalmieri 0:dd89565c6276 712
apalmieri 0:dd89565c6276 713
apalmieri 0:dd89565c6276 714 #endif /* __ST25DV_H */
apalmieri 0:dd89565c6276 715
apalmieri 0:dd89565c6276 716 /******************* (C) COPYRIGHT 2016 STMicroelectronics *****END OF FILE****/