/zephyr-st25r

Zephyr driver for the ST25R NFC reader IC

Primary LanguageCApache License 2.0Apache-2.0

zephyr-st25r

This repo provides a Zephyr module with a driver for the ST25R NFC reader IC. In particular, the ST25R3916, ST25R3916B and ST25R3918 ICs are supported.

This driver supports at most one instance of the ST25R on the SPI or I2C bus.

ST's RFAL library is included for driving the IC, with Kconfig variables defined to allow configuration and feature selection.

To use, after incorporating the module into your build, add an st,st25r compatible SPI or I2C configuration to your device tree

&spi3 {
    status = "okay";

    cs-gpios = <&gpio1 12 GPIO_ACTIVE_LOW>;

    nfc0: st25r@0 {
        compatible = "st,st25r";
        reg = <0x0>;
        spi-max-frequency = <4000000>;
        irq-gpios = <&gpio0 3 GPIO_ACTIVE_HIGH>;
    };
};

and configure the device in your prj.conf file as desired

CONFIG_ST25R=y
CONFIG_ST25R3916B=y
CONFIG_ST25R_TRIGGER_GLOBAL_THREAD=y

CONFIG_RFAL_FEATURE_NFCA=y
CONFIG_RFAL_FEATURE_ISO_DEP=y
CONFIG_RFAL_FEATURE_ISO_DEP_POLL=y

After that you can use RFAL to drive the IC

#include "rfal_nfc.h"

void init() {
   ReturnCode err = rfalNfcInitialize();
   /* Use RFAL to poll NFC. */
}