Firmware library for the X-NUCLEO-NFC01A1 Dynamic NFC Tag board.

Dependencies:   M24SR

Dependents:   NFC M2M_2016_STM32 MyongjiElec_capstone1 IDW01M1_Cloud_IBM ... more

Fork of X_NUCLEO_NFC01A1 by ST Expansion SW Team

X-NUCLEO-NFC01A1 Dynamic NFC Tag Expansion Board Firmware Package

Introduction

This firmware package includes Components Device Drivers, Board Support Package and example applications for STMicroelectronics X-NUCLEO-NFC01A1 Dynamic NFC Tag Expansion Board based on M24SR.

Firmware Library

Class X_NUCLEO_NFC01A1 is intended to represent the Dynamic NFC Tag Expansion Board with the same name.
It provides an API to access to the M24SR component and to the three onboard LEDs.
It is intentionally implemented as a singleton because only one X_NUCLEO_NFC01A1 at a time might be deployed in a HW component stack.
The library also provides an implementation of the NDEF library API for M24SR, providing an simple way to read/write NDEF formatted messages from/to the M24SR dynamic NFC tag.

Example applications

1. Hello World
2. Asynchronous Hello World

Committer:
giovannivisentini
Date:
Thu Dec 03 13:44:06 2015 +0000
Revision:
0:969a2be49f41
Child:
1:15d4a123ef6b
move the driver files in a separate library

Who changed what in which revision?

UserRevisionLine numberNew contents of line
giovannivisentini 0:969a2be49f41 1 /*
giovannivisentini 0:969a2be49f41 2 * X_NUCLEO_NFC01A1.h
giovannivisentini 0:969a2be49f41 3 *
giovannivisentini 0:969a2be49f41 4 * Created on: Nov 5, 2015
giovannivisentini 0:969a2be49f41 5 * Author: giovanni visentini
giovannivisentini 0:969a2be49f41 6 */
giovannivisentini 0:969a2be49f41 7
giovannivisentini 0:969a2be49f41 8 #ifndef X_NUCLEO_NFC01A1_H_
giovannivisentini 0:969a2be49f41 9 #define X_NUCLEO_NFC01A1_H_
giovannivisentini 0:969a2be49f41 10 #include <stdint.h>
giovannivisentini 0:969a2be49f41 11
giovannivisentini 0:969a2be49f41 12 #include "mbed.h"
giovannivisentini 0:969a2be49f41 13
giovannivisentini 0:969a2be49f41 14 #include "m24sr/m24sr_class.h"
giovannivisentini 0:969a2be49f41 15
giovannivisentini 0:969a2be49f41 16 /**
giovannivisentini 0:969a2be49f41 17 * singleton class that controls all the electronics inside the X_NUCLEO_NFC01A1 expansion board
giovannivisentini 0:969a2be49f41 18 */
giovannivisentini 0:969a2be49f41 19 class X_NUCLEO_NFC01A1 {
giovannivisentini 0:969a2be49f41 20
giovannivisentini 0:969a2be49f41 21 private:
giovannivisentini 0:969a2be49f41 22 /**
giovannivisentini 0:969a2be49f41 23 * ponter to the singleton instance, NULL if we did't build one
giovannivisentini 0:969a2be49f41 24 */
giovannivisentini 0:969a2be49f41 25 static X_NUCLEO_NFC01A1 *mInstance;
giovannivisentini 0:969a2be49f41 26 /**
giovannivisentini 0:969a2be49f41 27 * i2c address of the m24sr chip
giovannivisentini 0:969a2be49f41 28 */
giovannivisentini 0:969a2be49f41 29 static const uint8_t M24SR_ADDR;
giovannivisentini 0:969a2be49f41 30
giovannivisentini 0:969a2be49f41 31 static const PinName GPO_PIN;
giovannivisentini 0:969a2be49f41 32 static const PinName RF_DISABLE_PIN;
giovannivisentini 0:969a2be49f41 33 static const PinName LED1_PIN;
giovannivisentini 0:969a2be49f41 34 static const PinName LED2_PIN;
giovannivisentini 0:969a2be49f41 35 static const PinName LED3_PIN;
giovannivisentini 0:969a2be49f41 36
giovannivisentini 0:969a2be49f41 37 /**
giovannivisentini 0:969a2be49f41 38 * constructor
giovannivisentini 0:969a2be49f41 39 * @param devI2C i2c channel used for communicate with the board
giovannivisentini 0:969a2be49f41 40 * @param gpoName pin of the gpio pin of the M24SR chip
giovannivisentini 0:969a2be49f41 41 * @param RFDisableName pin for disable the rf antenna
giovannivisentini 0:969a2be49f41 42 * @param led1Name pin for control the led1 status
giovannivisentini 0:969a2be49f41 43 * @param led2Name pin for control the led1 status
giovannivisentini 0:969a2be49f41 44 * @param led3Name pin for control the led1 status
giovannivisentini 0:969a2be49f41 45 */
giovannivisentini 0:969a2be49f41 46 //TODO FIX all this the pin name?
giovannivisentini 0:969a2be49f41 47 X_NUCLEO_NFC01A1(I2C &devI2C) :
giovannivisentini 0:969a2be49f41 48 mM24SR(M24SR_ADDR, devI2C, GPO_PIN, RF_DISABLE_PIN), mNfcLed1(
giovannivisentini 0:969a2be49f41 49 LED1_PIN), mNfcLed2(LED2_PIN), mNfcLed3(LED3_PIN) { }
giovannivisentini 0:969a2be49f41 50
giovannivisentini 0:969a2be49f41 51 public:
giovannivisentini 0:969a2be49f41 52 const static PinName DEFAULT_SDA_PIN;
giovannivisentini 0:969a2be49f41 53 const static PinName DEFAULT_SDL_PIN;
giovannivisentini 0:969a2be49f41 54
giovannivisentini 0:969a2be49f41 55 static X_NUCLEO_NFC01A1* Instance(I2C &devI2C);
giovannivisentini 0:969a2be49f41 56
giovannivisentini 0:969a2be49f41 57 /**
giovannivisentini 0:969a2be49f41 58 * @return board led1
giovannivisentini 0:969a2be49f41 59 */
giovannivisentini 0:969a2be49f41 60 DigitalOut& getLed1() {
giovannivisentini 0:969a2be49f41 61 return mNfcLed1;
giovannivisentini 0:969a2be49f41 62 }
giovannivisentini 0:969a2be49f41 63
giovannivisentini 0:969a2be49f41 64 /**
giovannivisentini 0:969a2be49f41 65 * @return board led2
giovannivisentini 0:969a2be49f41 66 */
giovannivisentini 0:969a2be49f41 67 DigitalOut& getLed2() {
giovannivisentini 0:969a2be49f41 68 return mNfcLed2;
giovannivisentini 0:969a2be49f41 69 }
giovannivisentini 0:969a2be49f41 70
giovannivisentini 0:969a2be49f41 71 /**
giovannivisentini 0:969a2be49f41 72 * @return board led3
giovannivisentini 0:969a2be49f41 73 */
giovannivisentini 0:969a2be49f41 74 DigitalOut& getLed3() {
giovannivisentini 0:969a2be49f41 75 return mNfcLed3;
giovannivisentini 0:969a2be49f41 76 }
giovannivisentini 0:969a2be49f41 77
giovannivisentini 0:969a2be49f41 78 /**
giovannivisentini 0:969a2be49f41 79 * @return NFC Chip
giovannivisentini 0:969a2be49f41 80 */
giovannivisentini 0:969a2be49f41 81 M24SR& getM24SR() {
giovannivisentini 0:969a2be49f41 82 return mM24SR;
giovannivisentini 0:969a2be49f41 83 }
giovannivisentini 0:969a2be49f41 84
giovannivisentini 0:969a2be49f41 85 virtual ~X_NUCLEO_NFC01A1() {
giovannivisentini 0:969a2be49f41 86 }
giovannivisentini 0:969a2be49f41 87
giovannivisentini 0:969a2be49f41 88 private:
giovannivisentini 0:969a2be49f41 89
giovannivisentini 0:969a2be49f41 90 M24SR mM24SR;
giovannivisentini 0:969a2be49f41 91 DigitalOut mNfcLed1;
giovannivisentini 0:969a2be49f41 92 DigitalOut mNfcLed2;
giovannivisentini 0:969a2be49f41 93 DigitalOut mNfcLed3;
giovannivisentini 0:969a2be49f41 94
giovannivisentini 0:969a2be49f41 95 };
giovannivisentini 0:969a2be49f41 96
giovannivisentini 0:969a2be49f41 97 #endif /* X_NUCLEO_NFC01A1_H_ */