add P4 & P5
This commit is contained in:
55
P5_SETR2/Components/st25dv/Release_Notes.html
Normal file
55
P5_SETR2/Components/st25dv/Release_Notes.html
Normal file
@@ -0,0 +1,55 @@
|
||||
<!DOCTYPE html>
|
||||
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="generator" content="pandoc" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
||||
<title>Release Notes for ST25DV-I2C Component Driver</title>
|
||||
<style type="text/css">
|
||||
code{white-space: pre-wrap;}
|
||||
span.smallcaps{font-variant: small-caps;}
|
||||
span.underline{text-decoration: underline;}
|
||||
div.column{display: inline-block; vertical-align: top; width: 50%;}
|
||||
</style>
|
||||
<link rel="stylesheet" href="_htmresc/mini-st.css" />
|
||||
<!--[if lt IE 9]>
|
||||
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
||||
<![endif]-->
|
||||
</head>
|
||||
<body>
|
||||
<div class="row">
|
||||
<div class="col-sm-12 col-lg-4">
|
||||
<div class="card fluid">
|
||||
<div class="sectione dark">
|
||||
<center>
|
||||
<h1 id="release-notes-for-st25dv-i2c-component-driver"><small>Release Notes for</small> <mark>ST25DV-I2C Component Driver</mark></h1>
|
||||
<p>Copyright © 2020 STMicroelectronics<br />
|
||||
</p>
|
||||
<a href="https://www.st.com" class="logo"><img src="_htmresc/st_logo.png" alt="ST logo" /></a>
|
||||
</center>
|
||||
</div>
|
||||
</div>
|
||||
<h1 id="license">License</h1>
|
||||
<p>Licensed by ST under BSD 3-Clause license (the "License"). You may not use this package except in compliance with the License. You may obtain a copy of the License at:</p>
|
||||
<p><a href="https://opensource.org/licenses/BSD-3-Clause">https://opensource.org/licenses/BSD-3-Clause</a></p>
|
||||
<h1 id="purpose">Purpose</h1>
|
||||
<p>This directory contains the ST25DV-I2C component drivers.</p>
|
||||
</div>
|
||||
<div class="col-sm-12 col-lg-8">
|
||||
<h1 id="update-history">Update History</h1>
|
||||
<div class="collapse">
|
||||
<input type="checkbox" id="collapse-section19" checked aria-hidden="true"> <label for="collapse-section19" aria-hidden="true">V1.0.0 / 30-April-2020</label>
|
||||
<div>
|
||||
<h2 id="main-changes">Main Changes</h2>
|
||||
<ul>
|
||||
<li>First official release.</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<footer class="sticky">
|
||||
For complete documentation on <mark>STM32 Microcontrollers</mark> , visit: <a href="http://www.st.com/STM32">http://www.st.com/STM32</a>
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
1700
P5_SETR2/Components/st25dv/_htmresc/mini-st.css
Normal file
1700
P5_SETR2/Components/st25dv/_htmresc/mini-st.css
Normal file
File diff suppressed because it is too large
Load Diff
BIN
P5_SETR2/Components/st25dv/_htmresc/st_logo.png
Normal file
BIN
P5_SETR2/Components/st25dv/_htmresc/st_logo.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
2063
P5_SETR2/Components/st25dv/st25dv.c
Normal file
2063
P5_SETR2/Components/st25dv/st25dv.c
Normal file
File diff suppressed because it is too large
Load Diff
459
P5_SETR2/Components/st25dv/st25dv.h
Normal file
459
P5_SETR2/Components/st25dv/st25dv.h
Normal file
@@ -0,0 +1,459 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file st25dv.h
|
||||
* @author MMY Application Team
|
||||
* @brief This file provides set of driver functions to manage communication
|
||||
* @brief between MCU and ST25DV chip
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© Copyright (c) 2016 STMicroelectronics.
|
||||
* All rights reserved.</center></h2>
|
||||
*
|
||||
* This software component is licensed by ST under BSD 3-Clause license,
|
||||
* the "License"; You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at:
|
||||
* opensource.org/licenses/BSD-3-Clause
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef ST25DV_H
|
||||
#define ST25DV_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/* Includes ------------------------------------------------------------------*/
|
||||
#include "st25dv_reg.h"
|
||||
|
||||
/** @addtogroup BSP
|
||||
* @{
|
||||
*/
|
||||
|
||||
|
||||
/** @addtogroup ST25DV
|
||||
* @{
|
||||
*/
|
||||
|
||||
/* Exported types ------------------------------------------------------------*/
|
||||
|
||||
/**
|
||||
* @brief ST25DV Enable Disable enumerator definition.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ST25DV_DISABLE = 0,
|
||||
ST25DV_ENABLE
|
||||
} ST25DV_EN_STATUS;
|
||||
|
||||
/**
|
||||
* @brief ST25DV Energy Harvesting mode enumerator definition.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ST25DV_EH_ACTIVE_AFTER_BOOT = 0,
|
||||
ST25DV_EH_ON_DEMAND
|
||||
} ST25DV_EH_MODE_STATUS;
|
||||
|
||||
/**
|
||||
* @brief ST25DV FIELD status enumerator definition.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ST25DV_FIELD_OFF = 0,
|
||||
ST25DV_FIELD_ON
|
||||
} ST25DV_FIELD_STATUS;
|
||||
|
||||
/**
|
||||
* @brief ST25DV VCC status enumerator definition
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ST25DV_VCC_OFF = 0,
|
||||
ST25DV_VCC_ON
|
||||
} ST25DV_VCC_STATUS;
|
||||
|
||||
/**
|
||||
* @brief ST25DV protection status enumerator definition
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ST25DV_NO_PROT = 0,
|
||||
ST25DV_WRITE_PROT,
|
||||
ST25DV_READ_PROT,
|
||||
ST25DV_READWRITE_PROT
|
||||
} ST25DV_PROTECTION_CONF;
|
||||
|
||||
/**
|
||||
* @brief ST25DV area protection enumerator definition.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ST25DV_PROT_ZONE1 = 0,
|
||||
ST25DV_PROT_ZONE2,
|
||||
ST25DV_PROT_ZONE3,
|
||||
ST25DV_PROT_ZONE4
|
||||
} ST25DV_PROTECTION_ZONE;
|
||||
|
||||
/**
|
||||
* @brief ST25DV password protection status enumerator definition.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ST25DV_NOT_PROTECTED = 0,
|
||||
ST25DV_PROT_PASSWD1,
|
||||
ST25DV_PROT_PASSWD2,
|
||||
ST25DV_PROT_PASSWD3
|
||||
} ST25DV_PASSWD_PROT_STATUS;
|
||||
|
||||
/**
|
||||
* @brief ST25DV lock status enumerator definition.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ST25DV_UNLOCKED = 0,
|
||||
ST25DV_LOCKED
|
||||
} ST25DV_LOCK_STATUS;
|
||||
|
||||
/**
|
||||
* @brief ST25DV Number of Blocks for the CCFile enumerator definition.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ST25DV_CCFILE_1BLCK = 0,
|
||||
ST25DV_CCFILE_2BLCK
|
||||
} ST25DV_CCFILE_BLOCK;
|
||||
|
||||
/**
|
||||
* @brief ST25DV session status enumerator definition.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ST25DV_SESSION_CLOSED = 0,
|
||||
ST25DV_SESSION_OPEN
|
||||
} ST25DV_I2CSSO_STATUS;
|
||||
|
||||
/**
|
||||
* @brief ST25DV area end address enumerator definition.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ST25DV_ZONE_END1 = 0,
|
||||
ST25DV_ZONE_END2,
|
||||
ST25DV_ZONE_END3
|
||||
} ST25DV_END_ZONE;
|
||||
|
||||
/**
|
||||
* @brief ST25DV IT pulse duration enumerator definition.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ST25DV_302_US = 0,
|
||||
ST25DV_264_US,
|
||||
ST25DV_226_US,
|
||||
ST25DV_188_US,
|
||||
ST25DV_151_US,
|
||||
ST25DV_113_US,
|
||||
ST25DV_75_US,
|
||||
ST25DV_37_US
|
||||
} ST25DV_PULSE_DURATION;
|
||||
|
||||
/**
|
||||
* @brief ST25DV Mailbox Current Message enumerator definition
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
ST25DV_NO_MSG = 0,
|
||||
ST25DV_HOST_MSG,
|
||||
ST25DV_RF_MSG
|
||||
} ST25DV_CURRENT_MSG;
|
||||
|
||||
/**
|
||||
* @brief ST25DV EH Ctrl structure definition
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
ST25DV_EN_STATUS EH_EN_Mode;
|
||||
ST25DV_EN_STATUS EH_on;
|
||||
ST25DV_EN_STATUS Field_on;
|
||||
ST25DV_EN_STATUS VCC_on;
|
||||
} ST25DV_EH_CTRL;
|
||||
|
||||
/**
|
||||
* @brief ST25DV GPO structure definition
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
ST25DV_EN_STATUS GPO_RFUser_en;
|
||||
ST25DV_EN_STATUS GPO_RFActivity_en;
|
||||
ST25DV_EN_STATUS GPO_RFInterrupt_en;
|
||||
ST25DV_EN_STATUS GPO_FieldChange_en;
|
||||
ST25DV_EN_STATUS GPO_RFPutMsg_en;
|
||||
ST25DV_EN_STATUS GPO_RFGetMsg_en;
|
||||
ST25DV_EN_STATUS GPO_RFWrite_en;
|
||||
ST25DV_EN_STATUS GPO_Enable;
|
||||
} ST25DV_GPO;
|
||||
|
||||
/**
|
||||
* @brief ST25DV RF Management structure definition.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
ST25DV_EN_STATUS RfDisable;
|
||||
ST25DV_EN_STATUS RfSleep;
|
||||
} ST25DV_RF_MNGT;
|
||||
|
||||
/**
|
||||
* @brief ST25DV RF Area protection structure definition.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
ST25DV_PASSWD_PROT_STATUS PasswdCtrl;
|
||||
ST25DV_PROTECTION_CONF RWprotection;
|
||||
} ST25DV_RF_PROT_ZONE;
|
||||
|
||||
/**
|
||||
* @brief ST25DV I2C Area protection structure definition.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
ST25DV_PROTECTION_CONF ProtectZone1;
|
||||
ST25DV_PROTECTION_CONF ProtectZone2;
|
||||
ST25DV_PROTECTION_CONF ProtectZone3;
|
||||
ST25DV_PROTECTION_CONF ProtectZone4;
|
||||
} ST25DV_I2C_PROT_ZONE;
|
||||
|
||||
/**
|
||||
* @brief ST25DV MB_CTRL_DYN register structure definition.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t MbEnable;
|
||||
uint8_t HostPutMsg;
|
||||
uint8_t RfPutMsg;
|
||||
uint8_t HostMissMsg;
|
||||
uint8_t RFMissMsg;
|
||||
ST25DV_CURRENT_MSG CurrentMsg;
|
||||
} ST25DV_MB_CTRL_DYN_STATUS;
|
||||
|
||||
/**
|
||||
* @brief ST25DV Lock CCFile structure definition.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
ST25DV_LOCK_STATUS LckBck0;
|
||||
ST25DV_LOCK_STATUS LckBck1;
|
||||
} ST25DV_LOCK_CCFILE;
|
||||
|
||||
/**
|
||||
* @brief ST25DV Memory size structure definition.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t BlockSize;
|
||||
uint16_t Mem_Size;
|
||||
} ST25DV_MEM_SIZE;
|
||||
|
||||
/**
|
||||
* @brief ST25DV UID information structure definition.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t MsbUid;
|
||||
uint32_t LsbUid;
|
||||
} ST25DV_UID;
|
||||
|
||||
/**
|
||||
* @brief ST25DV Password structure definition.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t MsbPasswd;
|
||||
uint32_t LsbPasswd;
|
||||
} ST25DV_PASSWD;
|
||||
|
||||
|
||||
typedef int32_t (*ST25DV_Init_Func) (void);
|
||||
typedef int32_t (*ST25DV_DeInit_Func) (void);
|
||||
typedef uint32_t (*ST25DV_GetTick_Func) (void);
|
||||
typedef int32_t (*ST25DV_Write_Func)(uint16_t, uint16_t, const uint8_t*, uint16_t);
|
||||
typedef int32_t (*ST25DV_Read_Func) (uint16_t, uint16_t, uint8_t*, uint16_t);
|
||||
typedef int32_t (*ST25DV_IsReady_Func) (uint16_t, const uint32_t);
|
||||
|
||||
typedef struct {
|
||||
ST25DV_Init_Func Init;
|
||||
ST25DV_DeInit_Func DeInit;
|
||||
ST25DV_IsReady_Func IsReady;
|
||||
ST25DV_Write_Func Write;
|
||||
ST25DV_Read_Func Read;
|
||||
ST25DV_GetTick_Func GetTick;
|
||||
} ST25DV_IO_t;
|
||||
|
||||
|
||||
typedef struct {
|
||||
ST25DV_IO_t IO ;
|
||||
st25dv_ctx_t Ctx ;
|
||||
uint32_t IsInitialized;
|
||||
|
||||
} ST25DV_Object_t;
|
||||
|
||||
|
||||
#ifndef DOXYGEN_SHOULD_SKIP_THIS
|
||||
/**
|
||||
* @brief NFCTAG standard driver API structure definition.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
int32_t (*Init)( void* );
|
||||
int32_t (*ReadID)( void*, uint8_t * const );
|
||||
int32_t (*IsReady)( void*, const uint32_t );
|
||||
int32_t (*GetITStatus)( void*, uint16_t * const );
|
||||
int32_t (*ConfigIT)( void*, const uint16_t );
|
||||
int32_t (*ReadData)( void*, uint8_t * const, const uint16_t, const uint16_t );
|
||||
int32_t (*WriteData)( void*, const uint8_t * const, const uint16_t, const uint16_t );
|
||||
} NFCTAG_DrvTypeDef;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
int32_t (*Init)( ST25DV_Object_t* );
|
||||
int32_t (*ReadID)( ST25DV_Object_t*, uint8_t * const );
|
||||
int32_t (*IsReady)( ST25DV_Object_t*, const uint32_t );
|
||||
int32_t (*GetITStatus)( ST25DV_Object_t*, uint16_t * const );
|
||||
int32_t (*ConfigIT)( ST25DV_Object_t*, const uint16_t );
|
||||
int32_t (*ReadData)( ST25DV_Object_t*, uint8_t * const, const uint16_t, const uint16_t );
|
||||
int32_t (*WriteData)( ST25DV_Object_t*, const uint8_t * const, const uint16_t, const uint16_t );
|
||||
} ST25DV_Drv_t;
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/* Exported constants --------------------------------------------------------*/
|
||||
/** @brief ST25DV 4Kbits ICref */
|
||||
#define I_AM_ST25DV04 0x24
|
||||
/** @brief ST25DV 16/64Kbits ICref */
|
||||
#define I_AM_ST25DV64 0x26
|
||||
|
||||
/** @brief Check ST25DV Open Drain version */
|
||||
#define ST25DV_AM_I_OPEN_DRAIN(x) (((x) == 0x26) || ((x) == 0x24))
|
||||
/** @brief Check ST25DV CMOS version */
|
||||
#define ST25DV_AM_I_CMOS(x) (((x) == 0x27) || ((x) == 0x25))
|
||||
|
||||
|
||||
#ifndef NULL
|
||||
#define NULL (void *) 0
|
||||
#endif
|
||||
|
||||
/** @brief I2C address to be used for ST25DV Data accesses. */
|
||||
#define ST25DV_ADDR_DATA_I2C 0xA6
|
||||
/** @brief I2C address to be used for ST25DV System accesses. */
|
||||
#define ST25DV_ADDR_SYST_I2C 0xAE
|
||||
|
||||
/** @brief I2C Time out (ms), min value : (Max write bytes) / (Internal page write) * tw (256/4)*5. */
|
||||
#define ST25DV_WRITE_TIMEOUT 320
|
||||
|
||||
/** @brief Size of the ST25DV write buffer. */
|
||||
#define ST25DV_MAX_WRITE_BYTE 256
|
||||
/** @brief Size of the ST25DVMailbox memory. */
|
||||
#define ST25DV_MAX_MAILBOX_LENGTH 256
|
||||
|
||||
/** @brief Offset of ST25DV dynamic registers. */
|
||||
#define ST25DV_IS_DYNAMIC_REGISTER 0x2000
|
||||
|
||||
|
||||
/* External variables --------------------------------------------------------*/
|
||||
/* NFCTAG driver structure */
|
||||
extern ST25DV_Drv_t St25Dv_Drv;
|
||||
|
||||
/* Exported macro ------------------------------------------------------------*/
|
||||
/* Imported functions ------------------------------------------------------- */
|
||||
|
||||
/* Exported functions ------------------------------------------------------- */
|
||||
int32_t ST25DV_ReadRegister( ST25DV_Object_t*, uint8_t * const, const uint16_t, const uint16_t );
|
||||
int32_t ST25DV_WriteRegister( ST25DV_Object_t*, const uint8_t * const, const uint16_t, const uint16_t );
|
||||
int32_t ST25DV_RegisterBusIO (ST25DV_Object_t* pObj, ST25DV_IO_t *pIO);
|
||||
int32_t ST25DV_ReadMemSize( ST25DV_Object_t* pObj, ST25DV_MEM_SIZE * const pSizeInfo );
|
||||
int32_t ST25DV_ReadICRev(ST25DV_Object_t* pObj, uint8_t * const pICRev );
|
||||
int32_t ST25DV_ReadITPulse(ST25DV_Object_t* pObj, ST25DV_PULSE_DURATION * const pITtime );
|
||||
int32_t ST25DV_WriteITPulse(ST25DV_Object_t* pObj, const ST25DV_PULSE_DURATION ITtime );
|
||||
int32_t ST25DV_ReadUID(ST25DV_Object_t* pObj, ST25DV_UID * const pUid );
|
||||
int32_t ST25DV_ReadDSFID(ST25DV_Object_t* pObj, uint8_t * const pDsfid );
|
||||
int32_t ST25DV_ReadDsfidRFProtection(ST25DV_Object_t* pObj, ST25DV_LOCK_STATUS * const pLockDsfid );
|
||||
int32_t ST25DV_ReadAFI(ST25DV_Object_t* pObj, uint8_t * const pAfi );
|
||||
int32_t ST25DV_ReadAfiRFProtection(ST25DV_Object_t* pObj, ST25DV_LOCK_STATUS * const pLockAfi );
|
||||
int32_t ST25DV_ReadI2CProtectZone(ST25DV_Object_t* pObj, ST25DV_I2C_PROT_ZONE * const pProtZone );
|
||||
int32_t ST25DV_WriteI2CProtectZonex( ST25DV_Object_t* pObj, const ST25DV_PROTECTION_ZONE Zone, const ST25DV_PROTECTION_CONF ReadWriteProtection );
|
||||
int32_t ST25DV_ReadLockCCFile( ST25DV_Object_t* pObj, ST25DV_LOCK_CCFILE * const pLockCCFile );
|
||||
int32_t ST25DV_WriteLockCCFile( ST25DV_Object_t* pObj, const ST25DV_CCFILE_BLOCK NbBlockCCFile, const ST25DV_LOCK_STATUS LockCCFile );
|
||||
int32_t ST25DV_ReadLockCFG( ST25DV_Object_t* pObj, ST25DV_LOCK_STATUS * const pLockCfg );
|
||||
int32_t ST25DV_WriteLockCFG( ST25DV_Object_t* pObj, const ST25DV_LOCK_STATUS LockCfg );
|
||||
int32_t ST25DV_PresentI2CPassword( ST25DV_Object_t* pObj, const ST25DV_PASSWD PassWord );
|
||||
int32_t ST25DV_WriteI2CPassword( ST25DV_Object_t* pObj, const ST25DV_PASSWD PassWord );
|
||||
int32_t ST25DV_ReadRFZxSS( ST25DV_Object_t* pObj, const ST25DV_PROTECTION_ZONE Zone, ST25DV_RF_PROT_ZONE * const pRfprotZone );
|
||||
int32_t ST25DV_WriteRFZxSS( ST25DV_Object_t* pObj, const ST25DV_PROTECTION_ZONE Zone, const ST25DV_RF_PROT_ZONE RfProtZone );
|
||||
int32_t ST25DV_ReadEndZonex( ST25DV_Object_t* pObj, const ST25DV_END_ZONE EndZone, uint8_t * pEndZ );
|
||||
int32_t ST25DV_WriteEndZonex( ST25DV_Object_t* pObj, const ST25DV_END_ZONE EndZone, const uint8_t EndZ );
|
||||
int32_t ST25DV_InitEndZone( ST25DV_Object_t* pObj );
|
||||
int32_t ST25DV_CreateUserZone( ST25DV_Object_t* pObj, uint16_t Zone1Length, uint16_t Zone2Length, uint16_t Zone3Length, uint16_t Zone4Length );
|
||||
int32_t ST25DV_ReadMemSize( ST25DV_Object_t* pObj, ST25DV_MEM_SIZE * const pSizeInfo );
|
||||
int32_t ST25DV_ReadEHMode( ST25DV_Object_t* pObj, ST25DV_EH_MODE_STATUS * const pEH_mode );
|
||||
int32_t ST25DV_WriteEHMode( ST25DV_Object_t* pObj, const ST25DV_EH_MODE_STATUS EH_mode );
|
||||
int32_t ST25DV_ReadRFMngt( ST25DV_Object_t* pObj, ST25DV_RF_MNGT * const pRF_Mngt );
|
||||
int32_t ST25DV_WriteRFMngt( ST25DV_Object_t* pObj, const uint8_t Rfmngt );
|
||||
int32_t ST25DV_GetRFDisable( ST25DV_Object_t* pObj, ST25DV_EN_STATUS * const pRFDisable );
|
||||
int32_t ST25DV_SetRFDisable( ST25DV_Object_t* pObj );
|
||||
int32_t ST25DV_ResetRFDisable( ST25DV_Object_t* pObj );
|
||||
int32_t ST25DV_GetRFSleep( ST25DV_Object_t* pObj, ST25DV_EN_STATUS * const pRFSleep );
|
||||
int32_t ST25DV_SetRFSleep( ST25DV_Object_t* pObj );
|
||||
int32_t ST25DV_ResetRFSleep( ST25DV_Object_t* pObj );
|
||||
int32_t ST25DV_ReadMBMode( ST25DV_Object_t* pObj, ST25DV_EN_STATUS * const pMB_mode );
|
||||
int32_t ST25DV_WriteMBMode( ST25DV_Object_t* pObj, const ST25DV_EN_STATUS MB_mode );
|
||||
int32_t ST25DV_ReadMBWDG( ST25DV_Object_t* pObj, uint8_t * const pWdgDelay );
|
||||
int32_t ST25DV_WriteMBWDG( ST25DV_Object_t* pObj, const uint8_t WdgDelay );
|
||||
int32_t ST25DV_ReadMailboxData( ST25DV_Object_t* pObj, uint8_t * const pData, const uint16_t TarAddr, const uint16_t NbByte );
|
||||
int32_t ST25DV_WriteMailboxData( ST25DV_Object_t* pObj, const uint8_t * const pData, const uint16_t NbByte );
|
||||
int32_t ST25DV_ReadMailboxRegister( ST25DV_Object_t* pObj, uint8_t * const pData, const uint16_t TarAddr, const uint16_t NbByte );
|
||||
int32_t ST25DV_WriteMailboxRegister( ST25DV_Object_t* pObj, const uint8_t * const pData, const uint16_t TarAddr, const uint16_t NbByte );
|
||||
int32_t ST25DV_ReadI2CSecuritySession_Dyn( ST25DV_Object_t* pObj, ST25DV_I2CSSO_STATUS * const pSession );
|
||||
int32_t ST25DV_ReadITSTStatus_Dyn( ST25DV_Object_t* pObj, uint8_t * const pITStatus );
|
||||
int32_t ST25DV_ReadGPO_Dyn( ST25DV_Object_t* pObj, uint8_t *GPOConfig );
|
||||
int32_t ST25DV_GetGPO_en_Dyn( ST25DV_Object_t* pObj, ST25DV_EN_STATUS * const pGPO_en );
|
||||
int32_t ST25DV_SetGPO_en_Dyn( ST25DV_Object_t* pObj );
|
||||
int32_t ST25DV_ResetGPO_en_Dyn( ST25DV_Object_t* pObj );
|
||||
int32_t ST25DV_ReadEHCtrl_Dyn( ST25DV_Object_t* pObj, ST25DV_EH_CTRL * const pEH_CTRL );
|
||||
int32_t ST25DV_GetEHENMode_Dyn( ST25DV_Object_t* pObj, ST25DV_EN_STATUS * const pEH_Val );
|
||||
int32_t ST25DV_SetEHENMode_Dyn( ST25DV_Object_t* pObj );
|
||||
int32_t ST25DV_ResetEHENMode_Dyn( ST25DV_Object_t* pObj );
|
||||
int32_t ST25DV_GetEHON_Dyn( ST25DV_Object_t* pObj, ST25DV_EN_STATUS * const pEHON );
|
||||
int32_t ST25DV_GetRFField_Dyn( ST25DV_Object_t* pObj, ST25DV_FIELD_STATUS * const pRF_Field );
|
||||
int32_t ST25DV_GetVCC_Dyn( ST25DV_Object_t* pObj, ST25DV_VCC_STATUS * const pVCC );
|
||||
int32_t ST25DV_ReadRFMngt_Dyn( ST25DV_Object_t* pObj, ST25DV_RF_MNGT * const pRF_Mngt );
|
||||
int32_t ST25DV_WriteRFMngt_Dyn( ST25DV_Object_t* pObj, const uint8_t RF_Mngt );
|
||||
int32_t ST25DV_GetRFDisable_Dyn( ST25DV_Object_t* pObj, ST25DV_EN_STATUS * const pRFDisable );
|
||||
int32_t ST25DV_SetRFDisable_Dyn( ST25DV_Object_t* pObj );
|
||||
int32_t ST25DV_ResetRFDisable_Dyn( ST25DV_Object_t* pObj );
|
||||
int32_t ST25DV_GetRFSleep_Dyn( ST25DV_Object_t* pObj, ST25DV_EN_STATUS * const pRFSleep );
|
||||
int32_t ST25DV_SetRFSleep_Dyn( ST25DV_Object_t* pObj );
|
||||
int32_t ST25DV_ResetRFSleep_Dyn( ST25DV_Object_t* pObj );
|
||||
int32_t ST25DV_ReadMBCtrl_Dyn( ST25DV_Object_t* pObj, ST25DV_MB_CTRL_DYN_STATUS * const pCtrlStatus );
|
||||
int32_t ST25DV_GetMBEN_Dyn( ST25DV_Object_t* pObj, ST25DV_EN_STATUS * const pMBEN );
|
||||
int32_t ST25DV_SetMBEN_Dyn( ST25DV_Object_t* pObj );
|
||||
int32_t ST25DV_ResetMBEN_Dyn( ST25DV_Object_t* pObj );
|
||||
int32_t ST25DV_ReadMBLength_Dyn( ST25DV_Object_t* pObj, uint8_t * const pMBLength );
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
/**
|
||||
* @}
|
||||
*/
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
#endif /* ST25DV_H */
|
||||
|
||||
/******************* (C) COPYRIGHT 2016 STMicroelectronics *****END OF FILE****/
|
||||
1492
P5_SETR2/Components/st25dv/st25dv_reg.c
Normal file
1492
P5_SETR2/Components/st25dv/st25dv_reg.c
Normal file
File diff suppressed because it is too large
Load Diff
501
P5_SETR2/Components/st25dv/st25dv_reg.h
Normal file
501
P5_SETR2/Components/st25dv/st25dv_reg.h
Normal file
@@ -0,0 +1,501 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* @file st25dv_reg.h
|
||||
* @author MMY Application Team
|
||||
* @brief This file provides set of functions to access st25dv-i2c registers.
|
||||
******************************************************************************
|
||||
* @attention
|
||||
*
|
||||
* <h2><center>© Copyright (c) 2016 STMicroelectronics.
|
||||
* All rights reserved.</center></h2>
|
||||
*
|
||||
* This software component is licensed by ST under BSD 3-Clause license,
|
||||
* the "License"; You may not use this file except in compliance with the
|
||||
* License. You may obtain a copy of the License at:
|
||||
* opensource.org/licenses/BSD-3-Clause
|
||||
******************************************************************************
|
||||
*/
|
||||
#ifndef ST25DV_REG_H
|
||||
#define ST25DV_REG_H
|
||||
|
||||
#include <cmsis_compiler.h>
|
||||
|
||||
/* Registers i2c address */
|
||||
/** @brief ST25DV GPO register address. */
|
||||
#define ST25DV_GPO_REG 0x0000
|
||||
/** @brief ST25DV IT duration register address. */
|
||||
#define ST25DV_ITTIME_REG 0x0001
|
||||
/** @brief ST25DV Energy Harvesting register address. */
|
||||
#define ST25DV_EH_MODE_REG 0x0002
|
||||
/** @brief ST25DV RF management register address. */
|
||||
#define ST25DV_RF_MNGT_REG 0x0003
|
||||
/** @brief ST25DV Area 1 security register address. */
|
||||
#define ST25DV_RFA1SS_REG 0x0004
|
||||
/** @brief ST25DV Area 1 end address register address. */
|
||||
#define ST25DV_ENDA1_REG 0x0005
|
||||
/** @brief ST25DV Area 2 security register address. */
|
||||
#define ST25DV_RFA2SS_REG 0x0006
|
||||
/** @brief ST25DV Area 2 end address register address. */
|
||||
#define ST25DV_ENDA2_REG 0x0007
|
||||
/** @brief ST25DV Area 3 security register address. */
|
||||
#define ST25DV_RFA3SS_REG 0x0008
|
||||
/** @brief ST25DV Area 3 end address register address. */
|
||||
#define ST25DV_ENDA3_REG 0x0009
|
||||
/** @brief ST25DV Area 4 security register address. */
|
||||
#define ST25DV_RFA4SS_REG 0x000A
|
||||
/** @brief ST25DV I2C security register address. */
|
||||
#define ST25DV_I2CSS_REG 0x000B
|
||||
/** @brief ST25DV Capability Container lock register address. */
|
||||
#define ST25DV_LOCKCCFILE_REG 0x000C
|
||||
/** @brief ST25DV Mailbox mode register address. */
|
||||
#define ST25DV_MB_MODE_REG 0x000D
|
||||
/** @brief ST25DV Mailbox Watchdog register address. */
|
||||
#define ST25DV_MB_WDG_REG 0x000E
|
||||
/** @brief ST25DV Configuration lock register address. */
|
||||
#define ST25DV_LOCKCFG_REG 0x000F
|
||||
/** @brief ST25DV DSFID lock register address. */
|
||||
#define ST25DV_LOCKDSFID_REG 0x0010
|
||||
/** @brief ST25DV AFI lock register address. */
|
||||
#define ST25DV_LOCKAFI_REG 0x0011
|
||||
/** @brief ST25DV DSFID register address. */
|
||||
#define ST25DV_DSFID_REG 0x0012
|
||||
/** @brief ST25DV AFI register address. */
|
||||
#define ST25DV_AFI_REG 0x0013
|
||||
/** @brief ST25DV Memory size register address. */
|
||||
#define ST25DV_MEM_SIZE_LSB_REG 0x0014
|
||||
/** @brief ST25DV Memory size register address. */
|
||||
#define ST25DV_MEM_SIZE_MSB_REG 0x0015
|
||||
/** @brief ST25DV Block size register address. */
|
||||
#define ST25DV_BLK_SIZE_REG 0x0016
|
||||
//** @brief ST25DV ICref register address. */
|
||||
#define ST25DV_ICREF_REG 0x0017
|
||||
/** @brief ST25DV UID register address. */
|
||||
#define ST25DV_UID_REG 0x0018
|
||||
/** @brief ST25DV IC revision register address. */
|
||||
#define ST25DV_ICREV_REG 0x0020
|
||||
/** @brief ST25DV I2C password register address. */
|
||||
#define ST25DV_I2CPASSWD_REG 0x0900
|
||||
|
||||
/* Dynamic Registers i2c address */
|
||||
/** @brief ST25DV GPO dynamic register address. */
|
||||
#define ST25DV_GPO_DYN_REG 0x2000
|
||||
/** @brief ST25DV Energy Harvesting control dynamic register address. */
|
||||
#define ST25DV_EH_CTRL_DYN_REG 0x2002
|
||||
/** @brief ST25DV RF management dynamic register address. */
|
||||
#define ST25DV_RF_MNGT_DYN_REG 0x2003
|
||||
/** @brief ST25DV I2C secure session opened dynamic register address. */
|
||||
#define ST25DV_I2C_SSO_DYN_REG 0x2004
|
||||
/** @brief ST25DV Interrupt status dynamic register address. */
|
||||
#define ST25DV_ITSTS_DYN_REG 0x2005
|
||||
/** @brief ST25DV Mailbox control dynamic register address. */
|
||||
#define ST25DV_MB_CTRL_DYN_REG 0x2006
|
||||
/** @brief ST25DV Mailbox message length dynamic register address. */
|
||||
#define ST25DV_MBLEN_DYN_REG 0x2007
|
||||
/** @brief ST25DV Mailbox buffer address. */
|
||||
#define ST25DV_MAILBOX_RAM_REG 0x2008
|
||||
|
||||
/* Registers fields definitions */
|
||||
/* MB_MODE */
|
||||
#define ST25DV_MB_MODE_RW_SHIFT (0)
|
||||
#define ST25DV_MB_MODE_RW_FIELD 0xFE
|
||||
#define ST25DV_MB_MODE_RW_MASK 0x01
|
||||
|
||||
/* MB_LEN_Dyn */
|
||||
#define ST25DV_MBLEN_DYN_MBLEN_SHIFT (0)
|
||||
#define ST25DV_MBLEN_DYN_MBLEN_FIELD 0x00
|
||||
#define ST25DV_MBLEN_DYN_MBLEN_MASK 0xFF
|
||||
|
||||
/* MB_CTRL_Dyn */
|
||||
#define ST25DV_MB_CTRL_DYN_MBEN_SHIFT (0)
|
||||
#define ST25DV_MB_CTRL_DYN_MBEN_FIELD 0xFE
|
||||
#define ST25DV_MB_CTRL_DYN_MBEN_MASK 0x01
|
||||
#define ST25DV_MB_CTRL_DYN_HOSTPUTMSG_SHIFT (1)
|
||||
#define ST25DV_MB_CTRL_DYN_HOSTPUTMSG_FIELD 0xFD
|
||||
#define ST25DV_MB_CTRL_DYN_HOSTPUTMSG_MASK 0x02
|
||||
#define ST25DV_MB_CTRL_DYN_RFPUTMSG_SHIFT (2)
|
||||
#define ST25DV_MB_CTRL_DYN_RFPUTMSG_FIELD 0xFB
|
||||
#define ST25DV_MB_CTRL_DYN_RFPUTMSG_MASK 0x04
|
||||
#define ST25DV_MB_CTRL_DYN_STRESERVED_SHIFT (3)
|
||||
#define ST25DV_MB_CTRL_DYN_STRESERVED_FIELD 0xF7
|
||||
#define ST25DV_MB_CTRL_DYN_STRESERVED_MASK 0x08
|
||||
#define ST25DV_MB_CTRL_DYN_HOSTMISSMSG_SHIFT (4)
|
||||
#define ST25DV_MB_CTRL_DYN_HOSTMISSMSG_FIELD 0xEF
|
||||
#define ST25DV_MB_CTRL_DYN_HOSTMISSMSG_MASK 0x10
|
||||
#define ST25DV_MB_CTRL_DYN_RFMISSMSG_SHIFT (5)
|
||||
#define ST25DV_MB_CTRL_DYN_RFMISSMSG_FIELD 0xDF
|
||||
#define ST25DV_MB_CTRL_DYN_RFMISSMSG_MASK 0x20
|
||||
#define ST25DV_MB_CTRL_DYN_CURRENTMSG_SHIFT (6)
|
||||
#define ST25DV_MB_CTRL_DYN_CURRENTMSG_FIELD 0x3F
|
||||
#define ST25DV_MB_CTRL_DYN_CURRENTMSG_MASK 0xC0
|
||||
|
||||
|
||||
/* MB_WDG */
|
||||
#define ST25DV_MB_WDG_DELAY_SHIFT (0)
|
||||
#define ST25DV_MB_WDG_DELAY_FIELD 0xF8
|
||||
#define ST25DV_MB_WDG_DELAY_MASK 0x07
|
||||
|
||||
/* GPO */
|
||||
#define ST25DV_GPO_RFUSERSTATE_SHIFT (0)
|
||||
#define ST25DV_GPO_RFUSERSTATE_FIELD 0xFE
|
||||
#define ST25DV_GPO_RFUSERSTATE_MASK 0x01
|
||||
#define ST25DV_GPO_RFACTIVITY_SHIFT (1)
|
||||
#define ST25DV_GPO_RFACTIVITY_FIELD 0xFD
|
||||
#define ST25DV_GPO_RFACTIVITY_MASK 0x02
|
||||
#define ST25DV_GPO_RFINTERRUPT_SHIFT (2)
|
||||
#define ST25DV_GPO_RFINTERRUPT_FIELD 0xFB
|
||||
#define ST25DV_GPO_RFINTERRUPT_MASK 0x04
|
||||
#define ST25DV_GPO_FIELDCHANGE_SHIFT (3)
|
||||
#define ST25DV_GPO_FIELDCHANGE_FIELD 0xF7
|
||||
#define ST25DV_GPO_FIELDCHANGE_MASK 0x08
|
||||
#define ST25DV_GPO_RFPUTMSG_SHIFT (4)
|
||||
#define ST25DV_GPO_RFPUTMSG_FIELD 0xEF
|
||||
#define ST25DV_GPO_RFPUTMSG_MASK 0x10
|
||||
#define ST25DV_GPO_RFGETMSG_SHIFT (5)
|
||||
#define ST25DV_GPO_RFGETMSG_FIELD 0xDF
|
||||
#define ST25DV_GPO_RFGETMSG_MASK 0x20
|
||||
#define ST25DV_GPO_RFWRITE_SHIFT (6)
|
||||
#define ST25DV_GPO_RFWRITE_FIELD 0xBF
|
||||
#define ST25DV_GPO_RFWRITE_MASK 0x40
|
||||
#define ST25DV_GPO_ENABLE_SHIFT (7)
|
||||
#define ST25DV_GPO_ENABLE_FIELD 0x7F
|
||||
#define ST25DV_GPO_ENABLE_MASK 0x80
|
||||
#define ST25DV_GPO_ALL_SHIFT (0)
|
||||
#define ST25DV_GPO_ALL_MASK 0xFF
|
||||
|
||||
/* GPO_Dyn */
|
||||
#define ST25DV_GPO_DYN_RFUSERSTATE_SHIFT (0)
|
||||
#define ST25DV_GPO_DYN_RFUSERSTATE_FIELD 0xFE
|
||||
#define ST25DV_GPO_DYN_RFUSERSTATE_MASK 0x01
|
||||
#define ST25DV_GPO_DYN_RFACTIVITY_SHIFT (1)
|
||||
#define ST25DV_GPO_DYN_RFACTIVITY_FIELD 0xFD
|
||||
#define ST25DV_GPO_DYN_RFACTIVITY_MASK 0x02
|
||||
#define ST25DV_GPO_DYN_RFINTERRUPT_SHIFT (2)
|
||||
#define ST25DV_GPO_DYN_RFINTERRUPT_FIELD 0xFB
|
||||
#define ST25DV_GPO_DYN_RFINTERRUPT_MASK 0x04
|
||||
#define ST25DV_GPO_DYN_FIELDCHANGE_SHIFT (3)
|
||||
#define ST25DV_GPO_DYN_FIELDCHANGE_FIELD 0xF7
|
||||
#define ST25DV_GPO_DYN_FIELDCHANGE_MASK 0x08
|
||||
#define ST25DV_GPO_DYN_RFPUTMSG_SHIFT (4)
|
||||
#define ST25DV_GPO_DYN_RFPUTMSG_FIELD 0xEF
|
||||
#define ST25DV_GPO_DYN_RFPUTMSG_MASK 0x10
|
||||
#define ST25DV_GPO_DYN_RFGETMSG_SHIFT (5)
|
||||
#define ST25DV_GPO_DYN_RFGETMSG_FIELD 0xDF
|
||||
#define ST25DV_GPO_DYN_RFGETMSG_MASK 0x20
|
||||
#define ST25DV_GPO_DYN_RFWRITE_SHIFT (6)
|
||||
#define ST25DV_GPO_DYN_RFWRITE_FIELD 0xBF
|
||||
#define ST25DV_GPO_DYN_RFWRITE_MASK 0x40
|
||||
#define ST25DV_GPO_DYN_ENABLE_SHIFT (7)
|
||||
#define ST25DV_GPO_DYN_ENABLE_FIELD 0x7F
|
||||
#define ST25DV_GPO_DYN_ENABLE_MASK 0x80
|
||||
#define ST25DV_GPO_DYN_ALL_SHIFT (0)
|
||||
#define ST25DV_GPO_DYN_ALL_MASK 0xFF
|
||||
|
||||
/* ITTIME */
|
||||
#define ST25DV_ITTIME_DELAY_SHIFT (0)
|
||||
#define ST25DV_ITTIME_DELAY_FIELD 0xFC
|
||||
#define ST25DV_ITTIME_DELAY_MASK 0x03
|
||||
|
||||
/* ITSTS_Dyn */
|
||||
#define ST25DV_ITSTS_DYN_RFUSERSTATE_SHIFT (0)
|
||||
#define ST25DV_ITSTS_DYN_RFUSERSTATE_FIELD 0xFE
|
||||
#define ST25DV_ITSTS_DYN_RFUSERSTATE_MASK 0x01
|
||||
#define ST25DV_ITSTS_DYN_RFACTIVITY_SHIFT (1)
|
||||
#define ST25DV_ITSTS_DYN_RFACTIVITY_FIELD 0xFD
|
||||
#define ST25DV_ITSTS_DYN_RFACTIVITY_MASK 0x02
|
||||
#define ST25DV_ITSTS_DYN_RFINTERRUPT_SHIFT (2)
|
||||
#define ST25DV_ITSTS_DYN_RFINTERRUPT_FIELD 0xFB
|
||||
#define ST25DV_ITSTS_DYN_RFINTERRUPT_MASK 0x04
|
||||
#define ST25DV_ITSTS_DYN_FIELDFALLING_SHIFT (3)
|
||||
#define ST25DV_ITSTS_DYN_FIELDFALLING_FIELD 0xF7
|
||||
#define ST25DV_ITSTS_DYN_FIELDFALLING_MASK 0x08
|
||||
#define ST25DV_ITSTS_DYN_FIELDRISING_SHIFT (4)
|
||||
#define ST25DV_ITSTS_DYN_FIELDRISING_FIELD 0xEF
|
||||
#define ST25DV_ITSTS_DYN_FIELDRISING_MASK 0x10
|
||||
#define ST25DV_ITSTS_DYN_RFPUTMSG_SHIFT (5)
|
||||
#define ST25DV_ITSTS_DYN_RFPUTMSG_FIELD 0xDF
|
||||
#define ST25DV_ITSTS_DYN_RFPUTMSG_MASK 0x20
|
||||
#define ST25DV_ITSTS_DYN_RFGETMSG_SHIFT (6)
|
||||
#define ST25DV_ITSTS_DYN_RFGETMSG_FIELD 0xBF
|
||||
#define ST25DV_ITSTS_DYN_RFGETMSG_MASK 0x40
|
||||
#define ST25DV_ITSTS_DYN_RFWRITE_SHIFT (7)
|
||||
#define ST25DV_ITSTS_DYN_RFWRITE_FIELD 0x7F
|
||||
#define ST25DV_ITSTS_DYN_RFWRITE_MASK 0x80
|
||||
|
||||
/* EH_MODE */
|
||||
#define ST25DV_EH_MODE_SHIFT (0)
|
||||
#define ST25DV_EH_MODE_FIELD 0xFE
|
||||
#define ST25DV_EH_MODE_MASK 0x01
|
||||
|
||||
/* EH_CTRL_Dyn */
|
||||
#define ST25DV_EH_CTRL_DYN_EH_EN_SHIFT (0)
|
||||
#define ST25DV_EH_CTRL_DYN_EH_EN_FIELD 0xFE
|
||||
#define ST25DV_EH_CTRL_DYN_EH_EN_MASK 0x01
|
||||
#define ST25DV_EH_CTRL_DYN_EH_ON_SHIFT (1)
|
||||
#define ST25DV_EH_CTRL_DYN_EH_ON_FIELD 0xFD
|
||||
#define ST25DV_EH_CTRL_DYN_EH_ON_MASK 0x02
|
||||
#define ST25DV_EH_CTRL_DYN_FIELD_ON_SHIFT (2)
|
||||
#define ST25DV_EH_CTRL_DYN_FIELD_ON_FIELD 0xFB
|
||||
#define ST25DV_EH_CTRL_DYN_FIELD_ON_MASK 0x04
|
||||
#define ST25DV_EH_CTRL_DYN_VCC_ON_SHIFT (3)
|
||||
#define ST25DV_EH_CTRL_DYN_VCC_ON_FIELD 0xF7
|
||||
#define ST25DV_EH_CTRL_DYN_VCC_ON_MASK 0x08
|
||||
#define ST25DV_EH_CTRL_DYN_ALL_SHIFT (0)
|
||||
#define ST25DV_EH_CTRL_DYN_ALL_MASK 0x0F
|
||||
|
||||
/* RF_MNGT */
|
||||
#define ST25DV_RF_MNGT_RFDIS_SHIFT (0)
|
||||
#define ST25DV_RF_MNGT_RFDIS_FIELD 0xFE
|
||||
#define ST25DV_RF_MNGT_RFDIS_MASK 0x01
|
||||
#define ST25DV_RF_MNGT_RFSLEEP_SHIFT (1)
|
||||
#define ST25DV_RF_MNGT_RFSLEEP_FIELD 0xFD
|
||||
#define ST25DV_RF_MNGT_RFSLEEP_MASK 0x02
|
||||
#define ST25DV_RF_MNGT_ALL_SHIFT (0)
|
||||
#define ST25DV_RF_MNGT_ALL_MASK 0x03
|
||||
|
||||
/* RF_MNGT_Dyn */
|
||||
#define ST25DV_RF_MNGT_DYN_RFDIS_SHIFT (0)
|
||||
#define ST25DV_RF_MNGT_DYN_RFDIS_FIELD 0xFE
|
||||
#define ST25DV_RF_MNGT_DYN_RFDIS_MASK 0x01
|
||||
#define ST25DV_RF_MNGT_DYN_RFSLEEP_SHIFT (1)
|
||||
#define ST25DV_RF_MNGT_DYN_RFSLEEP_FIELD 0xFD
|
||||
#define ST25DV_RF_MNGT_DYN_RFSLEEP_MASK 0x02
|
||||
#define ST25DV_RF_MNGT_DYN_ALL_SHIFT (0)
|
||||
#define ST25DV_RF_MNGT_DYN_ALL_MASK 0x03
|
||||
|
||||
/* RFA1SS */
|
||||
#define ST25DV_RFA1SS_PWDCTRL_SHIFT (0)
|
||||
#define ST25DV_RFA1SS_PWDCTRL_FIELD 0xFC
|
||||
#define ST25DV_RFA1SS_PWDCTRL_MASK 0x03
|
||||
#define ST25DV_RFA1SS_RWPROT_SHIFT (2)
|
||||
#define ST25DV_RFA1SS_RWPROT_FIELD 0xF3
|
||||
#define ST25DV_RFA1SS_RWPROT_MASK 0x0C
|
||||
#define ST25DV_RFA1SS_ALL_SHIFT (0)
|
||||
#define ST25DV_RFA1SS_ALL_MASK 0x0F
|
||||
|
||||
/* RFA2SS */
|
||||
#define ST25DV_RFA2SS_PWDCTRL_SHIFT (0)
|
||||
#define ST25DV_RFA2SS_PWDCTRL_FIELD 0xFC
|
||||
#define ST25DV_RFA2SS_PWDCTRL_MASK 0x03
|
||||
#define ST25DV_RFA2SS_RWPROT_SHIFT (2)
|
||||
#define ST25DV_RFA2SS_RWPROT_FIELD 0xF3
|
||||
#define ST25DV_RFA2SS_RWPROT_MASK 0x0C
|
||||
#define ST25DV_RFA2SS_ALL_SHIFT (0)
|
||||
#define ST25DV_RFA2SS_ALL_MASK 0x0F
|
||||
|
||||
/* RFA3SS */
|
||||
#define ST25DV_RFA3SS_PWDCTRL_SHIFT (0)
|
||||
#define ST25DV_RFA3SS_PWDCTRL_FIELD 0xFC
|
||||
#define ST25DV_RFA3SS_PWDCTRL_MASK 0x03
|
||||
#define ST25DV_RFA3SS_RWPROT_SHIFT (2)
|
||||
#define ST25DV_RFA3SS_RWPROT_FIELD 0xF3
|
||||
#define ST25DV_RFA3SS_RWPROT_MASK 0x0C
|
||||
#define ST25DV_RFA3SS_ALL_SHIFT (0)
|
||||
#define ST25DV_RFA3SS_ALL_MASK 0x0F
|
||||
|
||||
/* RFA4SS */
|
||||
#define ST25DV_RFA4SS_PWDCTRL_SHIFT (0)
|
||||
#define ST25DV_RFA4SS_PWDCTRL_FIELD 0xFC
|
||||
#define ST25DV_RFA4SS_PWDCTRL_MASK 0x03
|
||||
#define ST25DV_RFA4SS_RWPROT_SHIFT (2)
|
||||
#define ST25DV_RFA4SS_RWPROT_FIELD 0xF3
|
||||
#define ST25DV_RFA4SS_RWPROT_MASK 0x0C
|
||||
#define ST25DV_RFA4SS_ALL_SHIFT (0)
|
||||
#define ST25DV_RFA4SS_ALL_MASK 0x0F
|
||||
|
||||
/* I2CSS */
|
||||
#define ST25DV_I2CSS_PZ1_SHIFT (0)
|
||||
#define ST25DV_I2CSS_PZ1_FIELD 0xFC
|
||||
#define ST25DV_I2CSS_PZ1_MASK 0x03
|
||||
#define ST25DV_I2CSS_PZ2_SHIFT (2)
|
||||
#define ST25DV_I2CSS_PZ2_FIELD 0xF3
|
||||
#define ST25DV_I2CSS_PZ2_MASK 0x0C
|
||||
#define ST25DV_I2CSS_PZ3_SHIFT (4)
|
||||
#define ST25DV_I2CSS_PZ3_FIELD 0xCF
|
||||
#define ST25DV_I2CSS_PZ3_MASK 0x30
|
||||
#define ST25DV_I2CSS_PZ4_SHIFT (6)
|
||||
#define ST25DV_I2CSS_PZ4_FIELD 0x3F
|
||||
#define ST25DV_I2CSS_PZ4_MASK 0xC0
|
||||
|
||||
/* LOCKCCFILE */
|
||||
#define ST25DV_LOCKCCFILE_BLCK0_SHIFT (0)
|
||||
#define ST25DV_LOCKCCFILE_BLCK0_FIELD 0xFE
|
||||
#define ST25DV_LOCKCCFILE_BLCK0_MASK 0x01
|
||||
#define ST25DV_LOCKCCFILE_BLCK1_SHIFT (1)
|
||||
#define ST25DV_LOCKCCFILE_BLCK1_FIELD 0xFD
|
||||
#define ST25DV_LOCKCCFILE_BLCK1_MASK 0x02
|
||||
#define ST25DV_LOCKCCFILE_ALL_SHIFT (0)
|
||||
#define ST25DV_LOCKCCFILE_ALL_MASK 0x03
|
||||
|
||||
/* LOCKCFG */
|
||||
#define ST25DV_LOCKCFG_B0_SHIFT (0)
|
||||
#define ST25DV_LOCKCFG_B0_FIELD 0xFE
|
||||
#define ST25DV_LOCKCFG_B0_MASK 0x01
|
||||
|
||||
/* I2C_SSO_Dyn */
|
||||
#define ST25DV_I2C_SSO_DYN_I2CSSO_SHIFT (0)
|
||||
#define ST25DV_I2C_SSO_DYN_I2CSSO_FIELD 0xFE
|
||||
#define ST25DV_I2C_SSO_DYN_I2CSSO_MASK 0x01
|
||||
|
||||
/**
|
||||
* @brief ST25DV status enumerator definition.
|
||||
*/
|
||||
#define ST25DV_OK (0)
|
||||
#define ST25DV_ERROR (-1)
|
||||
#define ST25DV_BUSY (-2)
|
||||
#define ST25DV_TIMEOUT (-3)
|
||||
#define ST25DV_NACK (-102)
|
||||
|
||||
|
||||
typedef int32_t (*ST25DV_WriteReg_Func)(void *, uint16_t, const uint8_t*, uint16_t);
|
||||
typedef int32_t (*ST25DV_ReadReg_Func) (void *, uint16_t, uint8_t*, uint16_t);
|
||||
|
||||
typedef struct {
|
||||
ST25DV_WriteReg_Func WriteReg;
|
||||
ST25DV_ReadReg_Func ReadReg;
|
||||
void *handle;
|
||||
} st25dv_ctx_t;
|
||||
|
||||
int32_t st25dv_get_icref (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_enda1 (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_enda1 (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_enda2 (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_enda2 (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_enda3 (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_enda3 (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_dsfid (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_afi (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_mem_size_msb (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_blk_size (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_mem_size_lsb (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_icrev (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_uid (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_i2cpasswd (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_i2cpasswd (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_lockdsfid (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_lockafi (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_mb_mode_rw (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_mb_mode_rw (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_mblen_dyn_mblen (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_mb_ctrl_dyn_mben (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_mb_ctrl_dyn_mben (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_mb_ctrl_dyn_hostputmsg (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_mb_ctrl_dyn_rfputmsg (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_mb_ctrl_dyn_streserved (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_mb_ctrl_dyn_hostmissmsg (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_mb_ctrl_dyn_rfmissmsg (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_mb_ctrl_dyn_currentmsg (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_mb_ctrl_dyn_all (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_mb_wdg_delay (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_mb_wdg_delay (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_rfuserstate (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_rfuserstate (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_rfactivity (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_rfactivity (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_rfinterrupt (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_rfinterrupt (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_fieldchange (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_fieldchange (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_rfputmsg (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_rfputmsg (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_rfgetmsg (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_rfgetmsg (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_rfwrite (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_rfwrite (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_enable (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_enable (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_all (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_all (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_dyn_rfuserstate (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_dyn_rfuserstate (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_dyn_rfactivity (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_dyn_rfactivity (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_dyn_rfinterrupt (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_dyn_rfinterrupt (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_dyn_fieldchange (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_dyn_fieldchang (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_dyn_rfputmsg (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_dyn_rfputmsg (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_dyn_rfgetmsg (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_dyn_rfgetmsg (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_dyn_rfwrite (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_dyn_rfwrite (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_dyn_enable (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_dyn_enable (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_gpo_dyn_all (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_gpo_dyn_all (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_ittime_delay (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_ittime_delay (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_itsts_dyn_rfuserstate (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_itsts_dyn_rfactivity (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_itsts_dyn_rfinterrupt (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_itsts_dyn_fieldfalling (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_itsts_dyn_fieldrising (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_itsts_dyn_rfputmsg (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_itsts_dyn_rfgetmsg (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_itsts_dyn_rfwrite (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_itsts_dyn_all (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_eh_mode (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_eh_mode (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_eh_ctrl_dyn_eh_en (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_eh_ctrl_dyn_eh_en (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_eh_ctrl_dyn_eh_on (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_eh_ctrl_dyn_field_on (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_eh_ctrl_dyn_vcc_on (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_eh_ctrl_dyn_all (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_get_rf_mngt_rfdis (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rf_mngt_rfdis (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rf_mngt_rfsleep (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rf_mngt_rfsleep (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rf_mngt_all (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rf_mngt_all (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rf_mngt_dyn_rfdis (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rf_mngt_dyn_rfdis (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rf_mngt_dyn_rfsleep (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rf_mngt_dyn_rfsleep (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rf_mngt_dyn_all (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rf_mngt_dyn_all (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rfa1ss_pwdctrl (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rfa1ss_pwdctrl (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rfa1ss_rwprot (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rfa1ss_rwprot (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rfa1ss_all (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rfa1ss_all (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rfa2ss_pwdctrl (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rfa2ss_pwdctrl (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rfa2ss_rwprot (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rfa2ss_rwprot (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rfa2ss_all (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rfa2ss_all (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rfa3ss_pwdctrl (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rfa3ss_pwdctrl (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rfa3ss_rwprot (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rfa3ss_rwprot (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rfa3ss_all (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rfa3ss_all (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rfa4ss_pwdctrl (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rfa4ss_pwdctrl (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rfa4ss_rwprot (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rfa4ss_rwprot (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_rfa4ss_all (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_rfa4ss_all (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_i2css_pz1 (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_i2css_pz1 (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_i2css_pz2 (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_i2css_pz2 (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_i2css_pz3 (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_i2css_pz3 (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_i2css_pz4 (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_i2css_pz4 (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_i2css_all (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_i2css_all (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_lockccfile_blck0 (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_lockccfile_blck0 (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_lockccfile_blck1 (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_lockccfile_blck1 (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_lockccfile_all (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_lockccfile_all (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_lockcfg_b0 (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
int32_t st25dv_set_lockcfg_b0 (st25dv_ctx_t *ctx, const uint8_t *value);
|
||||
int32_t st25dv_get_i2c_sso_dyn_i2csso (st25dv_ctx_t *ctx, uint8_t *value);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user