Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependents: mbed-os-nfc04a1 Wiagro-Lanza34-XDot
Revision 0:cf62b690f57c, committed 2019-11-14
- Comitter:
- DiegoOstuni
- Date:
- Thu Nov 14 10:30:13 2019 +0000
- Commit message:
- Files added
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/.gitignore Thu Nov 14 10:30:13 2019 +0000 @@ -0,0 +1,52 @@ +# Prerequisites +*.d + +# Object files +*.o +*.ko +*.obj +*.elf + +# Linker output +*.ilk +*.map +*.exp + +# Precompiled Headers +*.gch +*.pch + +# Libraries +*.lib +*.a +*.la +*.lo + +# Shared objects (inc. Windows DLLs) +*.dll +*.so +*.so.* +*.dylib + +# Executables +*.exe +*.out +*.app +*.i*86 +*.x86_64 +*.hex + +# Debug files +*.dSYM/ +*.su +*.idb +*.pdb + +# Kernel Module Compile Results +*.mod* +*.cmd +.tmp_versions/ +modules.order +Module.symvers +Mkfile.old +dkms.conf
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/LICENSE Thu Nov 14 10:30:13 2019 +0000 @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README.md Thu Nov 14 10:30:13 2019 +0000 @@ -0,0 +1,4 @@ +# BSP +BSP is a library for STMicroelectronics X-NUCLEO-NFC04A1. +# Overview +This library contains all the functions to read and write the memory of the chip, to initialize some settings of the device or the I2C Channel.
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/x_nucleo_nfc04a1.cpp Thu Nov 14 10:30:13 2019 +0000
@@ -0,0 +1,362 @@
+/**
+ ******************************************************************************
+ * @file x_nucleo_nfc04a1.c
+ * @author MMY Application Team
+ * @version $Revision: 3351 $
+ * @date $Date: 2017-01-25 17:28:08 +0100 (Wed, 25 Jan 2017) $
+ * @brief This file provides nfc04a1 specific functions
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>© COPYRIGHT 2017 STMicroelectronics</center></h2>
+ *
+ * Licensed under ST MYLIBERTY SOFTWARE LICENSE AGREEMENT (the "License");
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.st.com/myliberty
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
+ * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "x_nucleo_nfc04a1.h"
+//#include "x_nucleo_nfc04a1_nfctag.h"
+//#include "mbed.h"
+//#include "PinNames.h"
+#include "time.h"
+
+/*
+#if define
+define
+#endif
+*/
+
+
+/*Stream *_serial = NULL;
+#if defined(ARDUINO_SAM_DUE)
+TwoWire *_wire = &Wire1;
+#else
+TwoWire *_wire = &Wire;
+#endif
+* @addtogroup BSP
+ * @{
+ */
+
+/** @defgroup X_NUCLEO_NFC04A1
+ * @{
+ */
+/* Private typedef -----------------------------------------------------------*/
+/* Private defines -----------------------------------------------------------*/
+/* Private macros ------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Global variables ----------------------------------------------------------*/
+/** @defgroup X_NUCLEO_NFC04A1_Global_Variables
+ * @{
+ */
+//uint8_t NFC04A1_Led[3] = { 1 , 2 , 3 };
+
+/**
+ * @}
+ */
+
+/* Private function prototypes -----------------------------------------------*/
+
+NFCTAG_StatusTypeDef ST25DV_IO_Init( I2C* mi2cChannel, DigitalOut *mLPD );
+NFCTAG_StatusTypeDef ST25DV_IO_MemWrite( const uint8_t * const pData, const uint8_t DevAddr, const uint16_t TarAddr, const uint16_t Size, I2C* mi2cChannel );
+NFCTAG_StatusTypeDef ST25DV_IO_MemRead( uint8_t * const pData, const uint8_t DevAddr, const uint16_t TarAddr, const uint16_t Size, I2C* mi2cChannel );
+NFCTAG_StatusTypeDef ST25DV_IO_Read( uint8_t * const pData, const uint8_t DevAddr, const uint16_t Size, I2C* mi2cChannel );
+NFCTAG_StatusTypeDef ST25DV_IO_IsDeviceReady( const uint8_t DevAddr, const uint32_t Trials, I2C* mi2cChannel);
+NFCTAG_StatusTypeDef NFCTAG_ConvertStatus(uint8_t ret);
+
+
+/* Functions Definition ------------------------------------------------------*/
+/** @defgroup X_NUCLEO_NFC04A1_Public_Functions
+ * @{
+ */
+
+
+
+/**
+ * @brief Toggles the selected LED
+ * @param led : Specifies the Led to be toggled
+ * @retval None
+ */
+void NFC04A1_LED_Toggle( DigitalOut* led)
+{
+ *led = !(*led);
+}
+
+
+
+/**
+ * @brief This function get the GPIO value through GPIO
+ * @param None
+ * @retval HAL GPIO pin status
+ */
+DigitalOut NFC04A1_GPO_ReadPin( DigitalOut *mMISO )
+{
+ return *mMISO;
+}
+
+/**
+ * @brief This function initialize the GPIO to manage the NFCTAG LPD pin
+ * @param None
+ * @retval None
+ */
+
+void NFC04A1_LPD_Init( DigitalOut *mLPD )
+{
+ *mLPD = 0;
+}
+
+/**
+ * @brief This function get the GPIO value through GPIO
+ * @param None
+ * @retval HAL GPIO pin status
+ */
+uint8_t NFC04A1_LPD_ReadPin( DigitalOut *mLPD )
+{
+ return mLPD -> read();
+}
+
+/**
+ * @brief This function get the GPIO value through GPIO
+ * @param None
+ * @retval HAL GPIO pin status
+ */
+void NFC04A1_LPD_WritePin( uint8_t LpdPinState, DigitalOut *mLPD )
+{
+ mLPD -> write( LpdPinState );
+}
+
+/**
+ * @brief This function select the i2cChannel1 speed to communicate with NFCTAG
+ * @param i2cChannelspeedchoice Number from 0 to 5 to select i2cChannel speed
+ * @param mi2cChannel : I2C channel
+ * @retval HAL GPIO pin status
+ */
+void NFC04A1_Selecti2cSpeed( uint8_t i2cspeedchoice, I2C* mi2cChannel)
+{
+
+ switch( i2cspeedchoice )
+ {
+ case 0:
+
+ mi2cChannel -> frequency(10000);
+ break;
+
+ case 1:
+
+ mi2cChannel -> frequency(100000);
+ break;
+
+ case 2:
+
+ mi2cChannel -> frequency(200000);
+ break;
+
+ case 3:
+
+ mi2cChannel -> frequency(400000);
+ break;
+
+ case 4:
+
+ mi2cChannel -> frequency(800000);
+ break;
+
+ case 5:
+
+ mi2cChannel -> frequency(1000000);
+ break;
+
+ default:
+
+ mi2cChannel -> frequency(1000000);
+ break;
+ }
+
+}
+
+/**
+ * @}
+ */
+
+/** @defgroup X_NUCLEO_NFC04A1_Private_Functions
+ * @{
+ */
+/******************************** LINK EEPROM COMPONENT *****************************/
+
+/**
+ * @brief Initializes peripherals used by the i2cChannel NFCTAG driver
+ * @param mi2cChannel : I2C channel
+ * @param mLPD
+ * @retval NFCTAG enum status
+ */
+NFCTAG_StatusTypeDef ST25DV_IO_Init( I2C* mi2cChannel, DigitalOut *mLPD )
+{
+
+
+ NFC04A1_LPD_Init( mLPD );
+
+ NFC04A1_Selecti2cSpeed(3, mi2cChannel);
+
+ return NFCTAG_OK;
+}
+
+/**
+ * @brief Write data, at specific address, through i2c to the ST25DV
+ * @param pData: pointer to the data to write
+ * @param DevAddr : Target device address
+ * @param TarAddr : i2c data memory address to write
+ * @param Size : Size in bytes of the value to be written
+ * @param mi2cChannel : I2C channel
+ * @retval NFCTAG enum status
+ */
+NFCTAG_StatusTypeDef ST25DV_IO_MemWrite( const uint8_t * const pData, const uint8_t DevAddr, const uint16_t TarAddr, const uint16_t Size, I2C* mi2cChannel )
+{
+
+ uint8_t ret = 4;
+
+ uint8_t Addr = DevAddr;
+
+
+ uint8_t buffer[2];
+ buffer[0] = (uint8_t) (TarAddr>>8);
+ buffer[1] = (uint8_t) (TarAddr&0xFF);
+
+
+ char * pDataChar = (char*) pData;
+
+
+ ret = mi2cChannel -> write(Addr, (const char*)buffer, 2 , true);
+
+ // Address is not OK
+ if(ret != 0)
+ return NFCTAG_ConvertStatus(ret);
+
+ ret = mi2cChannel -> write(Addr, pDataChar, Size, false);
+
+ return NFCTAG_ConvertStatus(ret);
+}
+
+
+/*
+ * @brief Reads data at a specific address from the NFCTAG.
+ * @param pData: pointer to store read data
+ * @param DevAddr : Target device address
+ * @param TarAddr : i2c data memory address to read
+ * @param Size : Size in bytes of the value to be read
+ * @param mi2cChannel : I2C channel
+ * @retval NFCTAG enum status
+ */
+
+NFCTAG_StatusTypeDef ST25DV_IO_MemRead( uint8_t * const pData, const uint8_t DevAddr, const uint16_t TarAddr, const uint16_t Size, I2C* mi2cChannel )
+{
+
+ uint8_t ret = 4;
+ uint8_t Addr = DevAddr;
+
+ uint8_t buffer[2];
+ buffer[0] = (uint8_t) (TarAddr>>8);
+ buffer[1] = (uint8_t) (TarAddr&0xFF);
+
+ ret = mi2cChannel -> write(Addr, (const char*)buffer , 2 , false);
+
+ // Address is not OK
+ if(ret != 0)
+ return NFCTAG_ConvertStatus(ret);
+
+ char * pDataChar = (char*) pData;
+
+ ret = mi2cChannel -> read(DevAddr, pDataChar, Size, false );
+
+ return NFCTAG_ConvertStatus(ret);
+}
+
+NFCTAG_StatusTypeDef NFCTAG_ConvertStatus(uint8_t ret) {
+ if (ret == 0) {
+ return NFCTAG_OK;
+ } else if ((ret == 2) || (ret == 3)) {
+ return NFCTAG_NACK;
+ } else {
+ return NFCTAG_ERROR;
+ }
+}
+
+
+/**
+ * @brief Reads data at current address from the NFCTAG.
+ * @param pData: pointer to store read data
+ * @param DevAddr : Target device address
+ * @param Size : Size in bytes of the value to be read
+ * @retval NFCTAG enum status
+ */
+NFCTAG_StatusTypeDef ST25DV_IO_Read( uint8_t * const pData, const uint8_t DevAddr, const uint16_t Size, I2C* mi2cChannel )
+{
+ //this has to change( send addr then read)
+ int i = 0;
+ uint8_t ret = 4;
+
+ char * pDataChar = (char*) pData;
+ uint8_t ReadAddr = DevAddr | 1u;
+ ret = mi2cChannel -> read(ReadAddr, pDataChar, 1, false );
+
+
+// Tell slave we need to read 1byte from the current register
+ while(mi2cChannel -> read( 0 ) != 0) {
+ pData[i++] = mi2cChannel -> read( 0 );
+
+ }
+
+
+ return NFCTAG_ConvertStatus( ret);
+}
+
+
+/**
+* @brief Checks if target device is ready for communication
+* @note This function is used with Memory devices
+* @param DevAddr : Target device address
+* @param mi2cChannel : I2C channel
+* @retval NFCTAG enum status
+*/
+NFCTAG_StatusTypeDef ST25DV_IO_IsDeviceReady( const uint8_t DevAddr, const uint32_t Trials, I2C* mi2cChannel)
+{
+ int ret = 4;
+ uint32_t count = 0;
+
+ uint8_t Addr = DevAddr;
+
+
+ while ((count++ < Trials && ret) ) {
+ ret = mi2cChannel -> write(Addr, NULL, 0 , false);
+ }
+ return NFCTAG_ConvertStatus(ret);
+}
+
+
+
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/******************* (C) COPYRIGHT 2017 STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/x_nucleo_nfc04a1.h Thu Nov 14 10:30:13 2019 +0000
@@ -0,0 +1,128 @@
+/**
+ ******************************************************************************
+ * @file x_nucleo_nfc04a1.h
+ * @author MMY Application Team
+ * @version $Revision: 3351 $
+ * @date $Date: 2017-01-25 17:28:08 +0100 (Wed, 25 Jan 2017) $
+ * @brief This file contains definitions for the x_nucleo_nfc04a1.c
+ * board specific functions.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>© COPYRIGHT 2017 STMicroelectronics</center></h2>
+ *
+ * Licensed under ST MYLIBERTY SOFTWARE LICENSE AGREEMENT (the "License");
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.st.com/myliberty
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
+ * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************************
+ */
+
+#include "x_nucleo_nfc04a1_nfctag.h"
+#include "x_nucleo_nfc04.h"
+#include "mbed.h"
+//#include "PinNames.h"
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __X_NUCLEO_NFC04A1_H
+#define __X_NUCLEO_NFC04A1_H
+
+
+
+/* Includes ------------------------------------------------------------------*/
+//#include "ST25DV/st25dv.h"
+
+/** @addtogroup BSP
+ * @{
+ */
+
+/** @addtogroup X_NUCLEO_NFC04A1
+ * @{
+ */
+
+/* Exported types ------------------------------------------------------------*/
+/** @defgroup X_NUCLEO_NFC04A1_Exported_Types
+ * @{
+ */
+/**
+ * @brief NFC04A1 Led enumerator definition
+ */
+typedef enum
+{
+ GREEN_LED = 0,
+ BLUE_LED ,
+ YELLOW_LED
+}NFC04A1_Led_E;
+
+/**
+ * @brief NFC04A1 Ack Nack enumerator definition
+ */
+typedef enum
+{
+ I2CANSW_ACK = 0,
+ I2CANSW_NACK
+}NFC04A1_I2CANSW_E;
+
+
+
+/**
+ * @brief NFC04A1 Led structure definition
+ */
+
+typedef struct
+{
+ uint16_t NFC04A1_LED_PIN;
+}NFC04A1_Led_TypeDef;
+
+/**
+ * @}
+ */
+/* Exported constants --------------------------------------------------------*/
+/** @defgroup X_NUCLEO_NFC04A1_Exported_Constants
+ * @{
+ */
+#define ST25DV_I2C_SPEED NFC04A1_ST25DV_I2C_SPEED_1M
+#define NFC04A1_I2C_TIMEOUT ST25DV_I2C_TIMEOUT
+/**
+ * @}
+ */
+
+/* External variables --------------------------------------------------------*/
+/* Exported macro ------------------------------------------------------------*/
+/* Exported functions ------------------------------------------------------- */
+/** @defgroup ST25DV_NUCLEO_Exported_Functions
+ * @{
+ */
+void NFC04A1_LED_Toggle( DigitalOut* led);
+DigitalOut NFC04A1_GPO_ReadPin( DigitalOut *mMISO );
+void NFC04A1_LPD_Init( DigitalOut *mLPD );
+uint8_t NFC04A1_LPD_ReadPin( void );
+void NFC04A1_LPD_WritePin( uint8_t LpdPinState, DigitalOut *mLPD );
+void NFC04A1_SelectI2cSpeed( uint8_t i2cspeedchoice, I2C* mi2cChannel);
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+
+
+#endif /* __X_NUCLEO_NFC04A1_H */
+
+/******************* (C) COPYRIGHT 2017 STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/x_nucleo_nfc04a1_nfctag.cpp Thu Nov 14 10:30:13 2019 +0000
@@ -0,0 +1,316 @@
+/**
+ ******************************************************************************
+ * @file x_nucleo_nfc04a1_nfctag.c
+ * @author MMY Application Team
+ * @version $Revision: 3306 $
+ * @date $Date: 2017-01-13 11:18:15 +0100 (Fri, 13 Jan 2017) $
+ * @brief This file provides a set of functions needed to manage a nfc dual
+ * interface eeprom memory.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>© COPYRIGHT 2017 STMicroelectronics</center></h2>
+ *
+ * Licensed under ST MYLIBERTY SOFTWARE LICENSE AGREEMENT (the "License");
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.st.com/myliberty
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
+ * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************************
+ */
+
+/* Includes ------------------------------------------------------------------*/
+#include "x_nucleo_nfc04a1_nfctag.h"
+//#include <cstddef.h>
+
+/** @addtogroup BSP
+ * @{
+ */
+
+/** @addtogroup X_NUCLEO_NFC04A1
+ * @{
+ */
+
+/** @defgroup X_NUCLEO_NFC04A1_NFCTAG
+ * @{
+ */
+/* Private typedef -----------------------------------------------------------*/
+/* Private defines -----------------------------------------------------------*/
+/** @defgroup X_NUCLEO_NFC04A1_NFCTAG_Private_Defines
+ * @{
+ */
+/*#ifndef NULL
+#define NULL (void *) 0
+#endif*/
+/**
+ * @}
+ */
+
+/* Private macros ------------------------------------------------------------*/
+/* Private variables ---------------------------------------------------------*/
+/* Global variables ----------------------------------------------------------*/
+/** @defgroup X_NUCLEO_NFC04A1_NFCTAG_Private_Variables
+ * @{
+ */
+static NFCTAG_DrvTypeDef *Nfctag_Drv = NULL;
+static uint8_t NfctagInitialized = 0;
+/**
+ * @}
+ */
+/* Private function prototypes -----------------------------------------------*/
+/* Functions Definition ------------------------------------------------------*/
+/** @defgroup X_NUCLEO_NFC04A1_NFCTAG_Public_Functions
+ * @{
+ */
+/**
+ * @brief Initializes peripherals used by the I2C NFCTAG driver
+ * @param None
+ * @retval NFCTAG enum status
+ */
+NFCTAG_StatusTypeDef BSP_NFCTAG_Init(I2C* mi2cChannel, DigitalOut * mLPD)
+{
+ uint8_t nfctag_id;
+
+ if( !NfctagInitialized )
+ {
+ /* ST25DV Init */
+ if( St25Dv_i2c_Drv.Init(mi2cChannel, mLPD) != NFCTAG_OK )
+ {
+ return NFCTAG_ERROR;
+ }
+
+
+ St25Dv_i2c_Drv.ReadID(&nfctag_id, mi2cChannel);
+
+ /* Check if it is the wanted chip */
+ if( (nfctag_id == I_AM_ST25DV04) || (nfctag_id == I_AM_ST25DV64) )
+ {
+ NfctagInitialized = 1;
+ Nfctag_Drv = &St25Dv_i2c_Drv;
+ Nfctag_Drv->pData = &St25Dv_i2c_ExtDrv;
+ }
+ else
+ {
+ Nfctag_Drv = NULL;
+ NfctagInitialized = 0;
+ return NFCTAG_ERROR;
+ }
+ }
+
+ return NFCTAG_OK;
+}
+
+/**
+ * @brief Deinitializes peripherals used by the I2C NFCTAG driver
+ * @param None
+ * @retval None
+ */
+void BSP_NFCTAG_DeInit( void )
+{
+ Nfctag_Drv->pData = NULL;
+ Nfctag_Drv = NULL;
+ NfctagInitialized = 0;
+}
+
+/**
+ * @brief Check if the nfctag is initialized
+ * @param None
+ * @retval 0 if the nfctag is not initialized, 1 if the nfctag is already initialized
+ */
+uint8_t BSP_NFCTAG_isInitialized( void )
+{
+ return NfctagInitialized;
+}
+
+/**
+ * @brief Read the ID of the nfctag
+ * @param wai_id : the pointer where the who_am_i of the device is stored
+ * @param mi2cChannel : I2C channel
+ * @retval NFCTAG enum status
+ */
+NFCTAG_StatusTypeDef BSP_NFCTAG_ReadID( uint8_t * const wai_id, I2C * mi2cChannel )
+{
+ if ( Nfctag_Drv->ReadID == NULL )
+ {
+ return NFCTAG_ERROR;
+ }
+
+ return Nfctag_Drv->ReadID( wai_id, mi2cChannel );
+}
+
+/**
+ * @brief Return the size of the nfctag
+ * @param mi2cChannel : I2C channel
+ * @retval Size of the NFCtag in Bytes
+ */
+uint32_t BSP_NFCTAG_GetByteSize( I2C * mi2cChannel )
+{
+ ST25DV_MEM_SIZE mem_size;
+ ((NFCTAG_ExtDrvTypeDef *)Nfctag_Drv->pData)->ReadMemSize( &mem_size, mi2cChannel );
+ return (mem_size.BlockSize+1) * (mem_size.Mem_Size+1);
+}
+
+/**
+ * @brief Check if the nfctag is available
+ * @param Trials : Number of trials
+ * @param mi2cChannel : I2C channel
+ * @retval NFCTAG enum status
+ */
+NFCTAG_StatusTypeDef BSP_NFCTAG_IsDeviceReady( const uint32_t Trials, I2C * mi2cChannel, const uint16_t TarAddr )
+{
+ if ( Nfctag_Drv->IsReady == NULL )
+ {
+ return NFCTAG_ERROR;
+ }
+
+ return Nfctag_Drv->IsReady( Trials, mi2cChannel);
+}
+
+/**
+ * @brief Configure nfctag interrupt
+ * @param ITConfig : store interrupt to configure
+ * - 0x01 => RF BUSY
+ * - 0x02 => WIP
+ * @retval NFCTAG enum status
+ */
+NFCTAG_StatusTypeDef BSP_NFCTAG_ConfigIT( const uint16_t ITConfig, I2C * mi2cChannel )
+{
+ if ( Nfctag_Drv->ConfigIT == NULL )
+ {
+ return NFCTAG_ERROR;
+ }
+ return Nfctag_Drv->ConfigIT( ITConfig, mi2cChannel );
+}
+
+/**
+ * @brief Get nfctag interrupt configutration
+ * @param ITConfig : store interrupt configuration
+ * - 0x01 => RF BUSY
+ * - 0x02 => WIP
+ * @retval NFCTAG enum status
+ */
+NFCTAG_StatusTypeDef BSP_NFCTAG_GetITStatus( uint16_t * const ITConfig, I2C * mi2cChannel )
+{
+ if ( Nfctag_Drv->GetITStatus == NULL )
+ {
+ return NFCTAG_ERROR;
+ }
+
+ return Nfctag_Drv->GetITStatus( ITConfig, mi2cChannel );
+}
+
+/**
+ * @brief Reads data in the nfctag at specific address
+ * @param pData : pointer to store read data
+ * @param TarAddr : I2C data memory address to read
+ * @param Size : Size in bytes of the value to be read
+ * @param mi2cChannel : I2C channel
+ * @retval NFCTAG enum status
+ */
+NFCTAG_StatusTypeDef BSP_NFCTAG_ReadData( uint8_t * const pData, const uint16_t TarAddr, const uint16_t Size, I2C * mi2cChannel )
+{
+ if ( Nfctag_Drv->ReadData == NULL )
+ {
+ return NFCTAG_ERROR;
+ }
+
+ return Nfctag_Drv->ReadData( pData, TarAddr, Size, mi2cChannel );
+}
+
+/**
+ * @brief Writes data in the nfctag at specific address
+ * @param pData : pointer to the data to write
+ * @param TarAddr : I2C data memory address to write
+ * @param Size : Size in bytes of the value to be written
+ * @param mi2cChannel : I2C channel
+ * @retval NFCTAG enum status
+ */
+NFCTAG_StatusTypeDef BSP_NFCTAG_WriteData( const uint8_t * const pData, const uint16_t TarAddr, const uint16_t Size, I2C * mi2cChannel )
+{
+ if ( Nfctag_Drv->WriteData == NULL )
+ {
+ return NFCTAG_ERROR;
+ }
+
+ return Nfctag_Drv->WriteData( pData, TarAddr, Size, mi2cChannel );
+}
+
+/**
+ * @brief Reads nfctag Register
+ * @param pData : pointer to store read data
+ * @param TarAddr : I2C register address to read
+ * @param Size : Size in bytes of the value to be read
+ * @retval NFCTAG enum status
+ */
+NFCTAG_StatusTypeDef BSP_NFCTAG_ReadRegister( uint8_t * const pData, const uint16_t TarAddr, const uint16_t Size, I2C * mi2cChannel )
+{
+ if ( Nfctag_Drv->ReadRegister == NULL )
+ {
+ return NFCTAG_ERROR;
+ }
+
+ return Nfctag_Drv->ReadRegister( pData, TarAddr, Size, mi2cChannel );
+}
+
+/**
+ * @brief Writes nfctag Register
+ * @param pData : pointer to the data to write
+ * @param TarAddr : I2C register address to write
+ * @param Size : Size in bytes of the value to be written
+ * @param mi2cChannel : I2C channel
+ * @retval NFCTAG enum status
+ */
+NFCTAG_StatusTypeDef BSP_NFCTAG_WriteRegister( const uint8_t * const pData, const uint16_t TarAddr, const uint16_t Size, I2C * mi2cChannel )
+{
+ NFCTAG_StatusTypeDef ret_value;
+ if ( Nfctag_Drv->WriteRegister == NULL )
+ {
+ return NFCTAG_ERROR;
+ }
+
+ ret_value = Nfctag_Drv->WriteRegister( pData, TarAddr, Size, mi2cChannel );
+ if( ret_value == NFCTAG_OK )
+ {
+ while( BSP_NFCTAG_IsDeviceReady( 1, mi2cChannel, TarAddr ) != NFCTAG_OK ) {};
+ return NFCTAG_OK;
+ }
+
+ return ret_value;
+}
+
+/**
+ * @brief Give extended features for component
+ * @param None
+ * @retval address of the Extended Component Structure
+ */
+NFCTAG_ExtDrvTypeDef *BSP_NFCTAG_GetExtended_Drv( void )
+{
+ return (NFCTAG_ExtDrvTypeDef *)Nfctag_Drv->pData;
+}
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/******************* (C) COPYRIGHT 2017 STMicroelectronics *****END OF FILE****/
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/x_nucleo_nfc04a1_nfctag.h Thu Nov 14 10:30:13 2019 +0000
@@ -0,0 +1,96 @@
+/**
+ ******************************************************************************
+ * @file x_nucleo_nfc04a1_nfctag.h
+ * @author MMY Application Team
+ * @version $Revision: 2983 $
+ * @date $Date: 2016-09-27 15:08:30 +0200 (Tue, 27 Sep 2016) $
+ * @brief This file contains definitions for the x_nucleo_nfc04a1_nfctag.c
+ * specific functions.
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>© COPYRIGHT 2017 STMicroelectronics</center></h2>
+ *
+ * Licensed under ST MYLIBERTY SOFTWARE LICENSE AGREEMENT (the "License");
+ * You may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ * http://www.st.com/myliberty
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
+ * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ ******************************************************************************
+ */
+
+/* Define to prevent recursive inclusion -------------------------------------*/
+#ifndef __X_NUCLEO_NFC04A1_NFCTAG_H
+#define __X_NUCLEO_NFC04A1_NFCTAG_H
+/* Includes ------------------------------------------------------------------*/
+#include "x_nucleo_nfc04a1.h"
+#include "ST25DV/st25dv.h"
+//#include "mbed.h"
+
+
+
+/** @addtogroup BSP
+ * @{
+ */
+
+/** @addtogroup X_NUCLEO_NFC04A1
+ * @{
+ */
+
+/** @addtogroup X_NUCLEO_NFC04A1_NFCTAG
+ * @{
+ */
+/* Exported types ------------------------------------------------------------*/
+/* Exported constants --------------------------------------------------------*/
+#define NFCTAG_4K_SIZE ((uint32_t) 0x200)
+#define NFCTAG_16K_SIZE ((uint32_t) 0x800)
+#define NFCTAG_64K_SIZE ((uint32_t) 0x2000)
+/* External variables --------------------------------------------------------*/
+/* Exported macro ------------------------------------------------------------*/
+/* Exported function --------------------------------------------------------*/
+/** @defgroup X_NUCLEO_NFC04A1_NFCTAG_Exported_Functions
+ * @{
+ */
+NFCTAG_StatusTypeDef BSP_NFCTAG_Init(I2C* mi2cChannel, DigitalOut* mLPD);
+void BSP_NFCTAG_DeInit( void );
+uint8_t BSP_NFCTAG_isInitialized( void );
+NFCTAG_StatusTypeDef BSP_NFCTAG_ReadID( uint8_t * const wai_id, I2C * mi2cChannel );
+uint32_t BSP_NFCTAG_GetByteSize( I2C* mi2cChannel );
+NFCTAG_StatusTypeDef BSP_NFCTAG_IsDeviceReady( const uint32_t Trials, I2C * mi2cChannel, const uint16_t TarAddr );
+NFCTAG_StatusTypeDef BSP_NFCTAG_ConfigIT( const uint16_t ITConfig, I2C * mi2cChannel );
+NFCTAG_StatusTypeDef BSP_NFCTAG_GetITStatus( uint16_t * const ITConfig, I2C * mi2cChannel );
+NFCTAG_StatusTypeDef BSP_NFCTAG_ReadData( uint8_t * const pData, const uint16_t TarAddr, const uint16_t Size, I2C * mi2cChannel );
+NFCTAG_StatusTypeDef BSP_NFCTAG_WriteData( const uint8_t * const pData, const uint16_t TarAddr, const uint16_t Size, I2C * mi2cChannel );
+NFCTAG_StatusTypeDef BSP_NFCTAG_ReadRegister( uint8_t * const pData, const uint16_t TarAddr, const uint16_t Size, I2C * mi2cChannel );
+NFCTAG_StatusTypeDef BSP_NFCTAG_WriteRegister( const uint8_t * const pData, const uint16_t TarAddr, const uint16_t Size, I2C * mi2cChannel );
+NFCTAG_ExtDrvTypeDef *BSP_NFCTAG_GetExtended_Drv( void );
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+
+
+#endif /* __X_NUCLEO_NFC04A1_NFCTAG_H */
+
+/******************* (C) COPYRIGHT 2017 STMicroelectronics *****END OF FILE****/