SPMOD - RFID
2023-06-21
概述
SPMOD_RFID (NFC 模块)采用复旦微电子 FM17510 高度集成的非接触式(13Mhz)的读写芯片。
SPMOD - RFID 介绍
- 采用 Sipeed-SPMOD 接口(2.54mm * 8PIN 排针),统一 MaixPy 开发板接口
- 利用SP-MOD SPI和RFID模块通讯
- 64Byte收发缓冲FIFO
- RIFC IC 为 FM17510。
- 模块尺寸:25.0*20.1*6.2mm
FM17510 介绍
FM17510 是一款高度集成的工作在 13.56MHz 下的非接触读写器芯片,支持符合 ISO/IEC 14443 TypeA 协议的非接触读写器模式。
同时提供了低功耗的外部卡片侦测功能,方便电池供电、需要低功耗工作、并且需要实时处理任意 时刻会进入射频场的外部卡片的读写器设备。
FM17510 具有低电压、低功耗、 单端驱动等特点。适用于低功耗、低电压、低成本要求的非接触读。
- FM1750XX 在软硬件层面上兼容 MFRC552,支持工作模式:
FM17510 功能特点: |
---|
支持 ISO/IEC 14443 TypeA 读写器模式 |
读写器模式支持 M1 加密算法 |
ISO14443 TYPEA 支持通讯速率 106kbps, 212kbps, 424kbps |
支持 SPI 串行接口,最高 10Mbps |
Host 接口独立电源供电,电压范围 2.2~3.6V |
工作温度范围 -40℃ ~ 85℃ |
64Byte 收发缓冲 FIFO |
中断输出模式灵活可配 |
多种低功耗模式 : Soft powerdown模式 , Hard powerdown 模式, Deep powerdown 模式(典型值 1uA) |
支持低功耗外部卡片侦测功能 |
可编程定时器 |
内置振荡电路外接 27.12MHz 晶振 |
宽电压工作范围 2.2V~3.6V |
内置 CRC 协处理器 |
可编程 I/O 引脚 |
SPMOD_RFID 模块引脚定义:
引脚序号 | 引脚名称 | 类型 | 引脚说明 | Note |
---|---|---|---|---|
1 | GND | G | 模块电源地 | |
2 | CS | I | SPI片选引脚 | |
3 | SO | I/O | MISO数据引脚,主机输入从机输出 | |
4 | NPD | I | 复位/休眠控制引脚 | |
5 | 3V3 | V | 模块电源输入正 | |
6 | SCK | I | SPI串行时钟引脚 | |
7 | SI | I/O | MOSI数据引脚,主机输出从机输入 | |
8 | IRQ | O | 模块中断输出引脚 |
当 NPD 引脚为低电平时,模块进入休眠状态;当 NPD 引脚输入一个上升沿时,模块复位。
- 接线方式:
MCU:FUN(IO) | SP_RFID |
---|---|
NC(IO_7) | NPD |
SPI:MISO(IO_15) | SO |
SPI:SS0(IO_20) | CS |
SPI:SCK(IO_21) | SCK |
SPI:MOSI(IO_8) | SI |
NC(IO_6) | IRQ |
2.2~3.6V | 3.3V |
GND | GND |
使用例程
- 流程
- 初始化
- 扫描并绑定卡片
- 读写数据
C 示例:
fpioa_set_function(RFID_CS_PIN, FUNC_GPIOHS0 + RFID_CS_HSNUM); // RFID_CS_PIN: 20;
fpioa_set_function(RFID_CK_PIN, FUNC_GPIOHS0 + RFID_CK_HSNUM); // RFID_CK_PIN: 21;
fpioa_set_function(RFID_MO_PIN, FUNC_GPIOHS0 + RFID_MO_HSNUM); // RFID_MO_PIN: 8;
fpioa_set_function(RFID_MI_PIN, FUNC_GPIOHS0 + RFID_MI_HSNUM); // RFID_MI_PIN: 15;
gpiohs_set_drive_mode(spi_io_cfg.hs_cs, GPIO_DM_OUTPUT);
gpiohs_set_drive_mode(spi_io_cfg.hs_clk, GPIO_DM_OUTPUT);
gpiohs_set_drive_mode(spi_io_cfg.hs_mosi, GPIO_DM_OUTPUT);
gpiohs_set_drive_mode(spi_io_cfg.hs_miso, GPIO_DM_INPUT);
// detected card
PcdRequest(0x52, type)
// auth and bind...
// read or write 16 bytes data from sector 0x11
PcdWrite(0x11, w_buf)
PcdRead(0x11, &r_buf)
MaixPy 例程:
# 20: CS_NUM;
fm.register(20, fm.fpioa.GPIOHS20, force=True)
# set gpiohs work mode to output mode
cs = GPIO(GPIO.GPIOHS20, GPIO.OUT)
# RFID_SCK: 21; RFID_SI:8; RFID_SO: 15;
spi1 = SPI(SPI.SPI1, mode=SPI.MODE_MASTER, baudrate=600 * 1000,
polarity=0, phase=0, bits=8, firstbit=SPI.MSB, sck=21, mosi=8, miso=15)
# Create an object of the class MFRC522
MIFAREReader = MFRC522(spi1, cs)
# detected and auth, bind...
# read or write 16 bytes data from sector 0x11
MIFAREReader.MFRC522_Write(0x11, data)
MIFAREReader.MFRC522_Read(0x11)
运行环境
语言 | 开发板 | SDK/固件版本 |
---|---|---|
C | MaixCube | kendryte-standalone-sdk v0.5.6 |
MaixPy | MaixCube | maixpy v0.5.1 |
运行结果
C
MaixPy
移植
修改以下参数即可适配其他 K210 开发板.
C
// board_config.h #define RFID_CS_PIN (20) #define RFID_CK_PIN (21) #define RFID_MO_PIN (8) #define RFID_MI_PIN (15) #define RFID_CS_HSNUM (20) #define RFID_CK_HSNUM (21) #define RFID_MO_HSNUM (8) #define RFID_MI_HSNUM (15)
MaixPy
################### config ################### CS_NUM = const(20) SPI_FREQ_KHZ = const(600) SPI_SCK = const(21) SPI_MOSI = const(8) SPI_MISO = const(15) #############################################
参考设计
- SPMOD_RFID 尺寸图:
资源链接
资源 | --- |
---|---|
官网 | www.sipeed.com |
SIPEED 官方淘宝店 | sipeed.taobao.com |
Github | https://github.com/sipeed |
BBS | http://bbs.sipeed.com |
MaixPy 文档官网 | http://maixpy.sipeed.com |
Sipeed 模型平台 | https://maix.sipeed.com |
SDK 相关信息 | https://dl.sipeed.com/MAIX/SDK |
HDK 相关信息 | https://dl.sipeed.com/MAIX/HDK |
E-mail(技术支持和商业合作) | Support@sipeed.com |
telgram link | https://t.me/sipeed |
MaixPy AI QQ 交流群(四群) | 862340358 |