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,1)
    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)