ST25DV04K NFC TAG 使用日志
一. ST25DV04K简介
ST25DV04K是由ST生产的动态NFC/RFID标签IC,具有4-Kbit EEPROM以及快速传输模式功能。支持IIC接口协议,供电电压1.8V到5.5V,支持IIC以及RF接口访问存储器。4Kbit存储器即512bytes,在IIC写入时必须以字为单位写入。
IIC写入数据时,先写入器件地址,E2=0,访问存储器,RW=0,字节/顺序写入,一般配置为0xA6即可。再写入两字节的存储器地址高位与低位。然后顺序写入1字数据即可。
二. IIC时序
写器件地址后,再写入两字节存储区地址,之后连续写入数据即可,IIC速率最快支持1Mhz
void IIC_Write_Nbyte(u16 address, u8 *sum, u16 num) //连续写 n bytes
{IIC_Start();//User memory, Dynamic registers, FTM mailbox writingIIC_SendByte(0xA6);IIC_wait_ACK();//write data addressIIC_SendByte(address>>8);IIC_wait_ACK();IIC_SendByte(address);IIC_wait_ACK();//Write num bytes of data continuously for(u16 i = 0; i < num;i++){IIC_SendByte(sum[i]);IIC_wait_ACK();}IIC_Stop();
}
三. NEDF数据格式
若使用NFC标签写入URL网址,即可实现NFC碰一碰弹出网址功能,也可用于携带少量数据,比如温度数据等,例如:http://www.helloworld.?data=ABCDEFG....
如果写入的URL长度不超过256字节,则只需要1个pay load length,当超过256字节则需使用4个pay load lenght。
u8 url[48] = {0xE1, 0x40, 0x40, 0x00, 0x03, 0xFF, 0x01, 0xF8, //Capability Container 0xC1, 0x01, 0x00, 0x00, 0x01, 0xF1, 0x55, //NFC record header0x03, 0x6A, 0x60, 0x61, 0x2E, 0x6A, 0x69, 0x61, 0x6E, 0x7A, //payload data0x68, 0x69, 0x31, 0x76, 0x2E, 0x63, 0x6F, 0x6D, 0x2E, 0x63,0x6E, 0x2F, 0x6E, 0x78, 0x63, 0x63, 0x2F, 0x23, 0x2F, 0x3F,0x21, 0x32, 0x00
};
如上是超过256字节的ULR写法,由三部分组成:CC文件、NFC Record Header、Payload data。
1. CC文件
[0]:版本协议,如0xE1指示NFC Forum Type5 [1]:版本号以及访问控制
[2]:存储容量,如512bytes*8=0x40 [3]:其他功能信息
[4]:固定为0x03,代表NDEF消息TLV [5]:数据大于256填0xFF
[6:7]:NFC Record Header + Payload Lenght 数据长度
2. NFC Record Header
[0]:配置寄存器 [1]:type lenght [2:5]:PayLoad Length [6]:Record Type
3. Pay Load Data
[0]:ID,如0x01指示http://www. [1: ...]:数据
四. 单片机写入
写入数据必须4字节对齐,存储器块大小为4字节,例如清除存储器数据:
void ST25_Clear() //清除存储区
{u8 buffer[4]={0};for(u16 i=0;i<128;i++){IIC_Write_Nbyte(i*4, buffer, 4);delay(50); //stop后必需延时启动下一次写操作}
}
若不明白URL数据小于256与大于256后数据头具体格式如何,可以利用手机软件NFC标签助手实际写入一段URL,然后读出全部数据,参考其数据头格式更改即可