RC522 模組驅動程式

2021-06-27 18:44:49 字數 1820 閱讀 6422

本文主要講述了基於

spi匯流排的

rc522

驅動程式的設計。描述了主控如何與從裝置通過

spi匯流排進行資料的讀寫。 一

在spi

驅動中,有兩個重要的結構:

spi_device&spi_driver。

1 spi_device

的構建與註冊:

spi_device

板資訊用

spi_board_info

結構體來描述,它描述了

spi外設(

rc522

模組)使用的主機控制器序號,片選訊號,資料位元率,傳輸方式等。故要先填充

struct spi_board_info

這個結構體。--

4412

平台在mach-smdk4x12.c

裡,三星給的

bsp包裡面已經配置好了這些,我們要做的只是開啟

config_s3c64xx_dev_spi

這個巨集。

spi_register_board_info(spi2_board_info, array_size(spi2_board_info));

具體實現見下面**。

static struct spi_board_info spi2_board_info __initdata = 

};static struct s3c64xx_spi_csinfo spi2_csi = ,

}

2 spi_driver

的構建與註冊:

spi_register_driver(&rc522_driver);

static struct spi_driver rc522_driver = ,

};static int rc522_probe(struct spi_device *spi)

;

二 註冊好了

spi裝置與驅動,就可以通過

spi匯流排實現資料讀寫了。

這裡註冊了乙個混合裝置:

misc_register(&rc522_misc_device);

static struct miscdevice rc522_misc_device = ;

static struct file_operations rc522_fops = ;

//省略號這裡省略了fops裡各個操作的具體函式。

……

在read, write

操作裡都會呼叫到

writerawrc(unsigned char address, unsigned char value)

函式,在這個函式裡才真正實現了通過

spi來對

rc522

暫存器的讀寫操作:

//

//功 能:寫rc522暫存器

// value[in]:寫入的值

/void writerawrc(unsigned char address, unsigned char value)

;

三 新增定時器

為了節省

cpu資源,需要新增乙個定時器,每隔一定的時間才讀卡一次。**略。

到此為止,驅動的關鍵部分已經完工,只需把

spi_register_driver(&rc522_driver)

和misc_register(&rc522_misc_device)

放進rfid_rc522_init

()函式即可進行編譯除錯。

RC522 模組驅動程式

本文主要講述了基於spi匯流排的rc522驅動程式的設計。描述了主控如何與從裝置通過spi匯流排進行資料的讀寫。一 在spi驅動中,有兩個重要的結構 spi device spi driver。1 spi device的構建與註冊 spi device板資訊用spi board info結構體來描述...

51微控制器驅動RC522模組

sbit p11 p1 1 作為乙個輔助led燈而已 bit cmdvalid 0 u8 status u8 ptagtype 2 u8 code defaultkey 6 配帶的那張白卡的扇區密碼 u8 idata mlastselectedsnr 4 這個用來存放卡片的序列號,4個位元組 u8 ...

RC522複製門禁卡(二)

經過一天的奮戰,改了一下例程,做成了key1一鍵讀取s50所有扇區資料,key2可以一鍵寫入給另乙個s50。需要注意跳過每個扇區的第四塊,這是當前扇區的控制塊,就算寫的資料一樣,也會導致s50資料不可讀。之前不清楚這個,報廢了三塊s50門禁卡,都不能讀資料了。讀取家裡門禁卡資料並寫入乙個新的s50卡...