rc522 - rc522 非接触式读写卡驱动#
适配状态未知
备注
本页文档由这个文件自动生成。如有错误,请提交issue或帮忙修改后pr,谢谢!
示例
--注意:因使用了sys.wait()所有api需要在协程中使用
-- 用法实例
local rc522 = require "rc522"
sys.taskInit(function()
spi_rc522 = spi.setup(0,nil,0,0,8,10*1000*1000,spi.MSB,1,0)
rc522.init(0,pin.PB04,pin.PB01)
wdata = {0x01,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}
while 1 do
rc522.write_datablock(8,wdata)
for i=0,63 do
local a,b = rc522.read_datablock(i)
if a then
print("read",i,b:toHex())
end
end
sys.wait(500)
end
end)
rc522.set_bit_mask(address, value)#
写rc522寄存器
参数
传入值类型 |
解释 |
---|---|
number |
address 地址 |
number |
value 值 |
返回值
无
例子
write_rawrc(rc522_bit_framing,0x07)
rc522.read_rawrc(address)#
读rc522寄存器
参数
传入值类型 |
解释 |
---|---|
number |
address 地址 |
返回值
返回值类型 |
解释 |
---|---|
number |
寄存器值 |
例子
local n = read_rawrc(rc522_com_irq)
rc522.set_bit_mask(address, mask)#
对rc522寄存器置位
参数
传入值类型 |
解释 |
---|---|
number |
address 地址 |
number |
mask 置位值 |
返回值
无
例子
rc522.set_bit_mask (rc522_fifo_level, 0x80)
rc522.clear_bit_mask(address, mask)#
对rc522寄存器清位
参数
传入值类型 |
解释 |
---|---|
number |
address 地址 |
number |
mask 清位值 |
返回值
无
例子
rc522.clear_bit_mask(rc522_com_irq, 0x80 )
rc522.command(command,data)#
命令通讯
参数
传入值类型 |
解释 |
---|---|
number |
command |
number |
data |
返回值
返回值类型 |
解释 |
---|---|
status |
data len 结果,返回数据,收到的位长度 |
例子
rc522.version()
rc522.anticoll(id)#
防冲撞
参数
传入值类型 |
解释 |
---|---|
string |
id 卡片序列号,4字节 |
返回值
返回值类型 |
解释 |
---|---|
status |
uid 结果,uid |
例子
local status,uid = rc522.anticoll(array_id)
calculate_crc(data)#
crc计算
参数
传入值类型 |
解释 |
---|---|
table |
data 数据 |
返回值
返回值类型 |
解释 |
---|---|
table |
crc值 |
例子
local crc = calculate_crc(buff)
authstate(mode, addr,key,uid )#
验证卡片密码
参数
传入值类型 |
解释 |
---|---|
number |
mode 模式 |
number |
addr 地址 |
string |
key 密码 |
string |
uid uid |
返回值
返回值类型 |
解释 |
---|---|
bool |
结果 |
例子
status = authstate(rc522_authent1b, addr,Key_B,uid )
rc522.write(addr, data)#
写数据到M1卡一块
参数
传入值类型 |
解释 |
---|---|
number |
addr 块地址(0-63)M1卡总共有16个扇区(每个扇区有:3个数据块+1个控制块),共64个块 |
table |
data 数据 |
返回值
返回值类型 |
解释 |
---|---|
bool |
结果 |
例子
rc522.write(addr, data)
rc522.read(addr)#
写数据到M1卡一块
参数
传入值类型 |
解释 |
---|---|
number |
addr 块地址(0-63)M1卡总共有16个扇区(每个扇区有:3个数据块+1个控制块),共64个块 |
返回值
返回值类型 |
解释 |
---|---|
bool,string |
结果,数据 |
例子
rc522.read(addr, data)
rc522.version()#
rc522 硬件版本
参数
无
返回值
返回值类型 |
解释 |
---|---|
number |
硬件版本 |
例子
rc522.version()
rc522.halt()#
rc522 命令卡片进入休眠状态
参数
无
返回值
返回值类型 |
解释 |
---|---|
bool |
结果 |
例子
rc522.halt()
rc522.reset()#
rc522 复位
参数
无
返回值
无
例子
rc522.reset()
rc522.antenna_on()#
开启天线
参数
无
返回值
无
例子
rc522.antenna_on()
rc522.antenna_on()#
关闭天线
参数
无
返回值
无
例子
rc522.antenna_on()
rc522_config_isotype()#
设置rc522工作方式为ISO14443_A
参数
无
返回值
无
例子
rc522_config_isotype()
rc522.request(req_code)#
rc522 寻卡
参数
传入值类型 |
解释 |
---|---|
number |
req_code rc522.reqidl 寻天线区内未进入休眠状态 rc522.reqall 寻天线区内全部卡 |
返回值
返回值类型 |
解释 |
---|---|
bool |
tagtype 结果,卡类型 |
例子
status,array_id = rc522.request(rc522.reqall)
rc522.select(id)#
选定卡片
参数
传入值类型 |
解释 |
---|---|
number |
id 卡片序列号,4字节 |
返回值
返回值类型 |
解释 |
---|---|
bool |
结果 |
例子
status = rc522.select(id)
rc522.write_datablock(addr,data)#
按照rc522操作流程写入16字节数据到块
参数
传入值类型 |
解释 |
---|---|
number |
addr 任意块地址.M1卡总共有16个扇区(每个扇区有:3个数据块+1个控制块),共64个块 |
table |
data 指向要写入的数据,必须为16个字符 |
返回值
返回值类型 |
解释 |
---|---|
bool |
结果 |
例子
rc522.write_datablock(addr,data)
rc522.read_datablock(addr)#
按照rc522操作流程读取块
参数
传入值类型 |
解释 |
---|---|
number |
addr 任意块地址.M1卡总共有16个扇区(每个扇区有:3个数据块+1个控制块),共64个块 |
返回值
返回值类型 |
解释 |
---|---|
bool |
string 结果 数据 |
例子
for i=0,63 do
local a,b = rc522.read_datablock(i)
if a then
print("read",i,b:toHex())
end
end
rc522.init(spi_id, cs, rst)#
rc522 初始化
参数
传入值类型 |
解释 |
---|---|
number |
spi_id spi端口号 |
number |
cs cs引脚 |
number |
rst rst引脚 |
返回值
返回值类型 |
解释 |
---|---|
bool |
初始化结果 |
例子
spi_rc522 = spi.setup(0,nil,0,0,8,10*1000*1000,spi.MSB,1,1)
rc522.init(0,pin.PB04,pin.PB01)