简介
去官网下载SDK。
SDK下载地址:https://www.st.com/zh/embedded-software/stsw-st25rfal001.license=1659346758448.product=STSW-ST25RFAL001.version=2.6.0.html#st_all-features_sec-nav-tab
也可以从我这下载SDK
https://download.csdn.net/download/qq_32348883/86296816
步骤
一
SDK默认NFC为SPI2接口【注意不是MX默认的SPI2需要自己修改!!】
在platform.h中设置st25r3911的ss脚和int中断脚
#define ST25R391X_SS_PIN GPIO_PIN_4 /*!< GPIO pin used for ST25R3911 SPI SS */
#define ST25R391X_SS_PORT GPIOA /*!< GPIO port used for ST25R3911 SPI SS port */
#define ST25R391X_INT_PIN GPIO_PIN_1 /*!< GPIO pin used for ST25R3911 External Interrupt */
#define ST25R391X_INT_PORT GPIOB /*!< GPIO port used for ST25R3911 External Interrupt */
中断脚配置如下
二
在platform.h中,设置好SPI的收发函数
#define platformSpiTxRx( txBuf, rxBuf, len ) spiTxRx( (txBuf), (rxBuf), (len) ) /*!< SPI transceive */
在platform.h中,设置好延时函数
#define platformGetSysTick() LL_GetTick() /*!< Get System Tick ( 1 tick = 1 ms) */
其中的SPI函数定义如下
#include "string.h"
#define SPI_TIMEOUT 1000
#define SPI_BUF_LEN 97
static uint8_t txBuf[SPI_BUF_LEN];
static uint8_t rxBuf[SPI_BUF_LEN];
HAL_StatusTypeDef spiTxRx(const uint8_t *txData, uint8_t *rxData, uint16_t length)
{
if(length > SPI_BUF_LEN)
{
return HAL_ERROR;
}
/* Initialize Tx data*/
if(txData != NULL)
{
memcpy(txBuf, txData, length );
}
else
{
memset(txBuf, 0x00, length );
}
return HAL_SPI_TransmitReceive(&hspi1, txBuf, (rxData != NULL) ? rxData : rxBuf, length, SPI_TIMEOUT);
}
配置如下
三 文件工程构建
提取文件ndef_demo.c
提取文件demo.h
提取一下文件
接口文件添加
驱动配置文件
相关宏头文件添加
四、外部中断函数添加SDK中断中的st25r3911Isr()函数
void EXTI0_IRQHandler(void)
{
/* USER CODE BEGIN EXTI0_IRQn 0 */
/* USER CODE END EXTI0_IRQn 0 */
HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);
/* USER CODE BEGIN EXTI0_IRQn 1 */
st25r3911Isr();
/* USER CODE END EXTI0_IRQn 1 */
}
移植完结构如下