国产RC522替代方案初体验,波澜起伏!

入职不久就接到一个紧急简单而令人心惊胆颤的任务~国产替代RC522方案。。。至于为什么心情这么复杂且纠结,别问我,我也不知道- -

首先我机智地从淘宝买了块RC522读卡模块,便于我即将进行经天纬地的大项目!

模块长这个样子~

  然后经过网上大量的选型对比,我选准了DS522这颗国产RC522替代芯片,并迅速地拿到了样片,至于为什么要选他,是因为这颗芯片与RC522可以实现PIN to PIN软硬件兼容,同时里面有LPCD低功耗检卡功能(虽然暂时用不上~。~),别问我怎么知道的,我还没测,都是网友说的~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
06-02
RC522是一种RFID读写模块,它可以通过射频识别技术实现对RFID标签的读写操作。以下是使用RC522模块进行读取操作的示例代码: ```c #include <stdio.h> #include <string.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" #include "esp_log.h" #include "driver/gpio.h" #include "driver/spi_master.h" #include "mfrc522.h" static const char *TAG = "rc522"; void rc522_task(void *pvParameter) { ESP_LOGI(TAG, "RC522 task started"); spi_device_handle_t spi; spi_bus_config_t buscfg = { .miso_io_num = PIN_NUM_MISO, .mosi_io_num = PIN_NUM_MOSI, .sclk_io_num = PIN_NUM_CLK, .quadwp_io_num = -1, .quadhd_io_num = -1, .max_transfer_sz = MFRC522_MAX_LEN }; spi_device_interface_config_t devcfg = { .clock_speed_hz = 5000000, .mode = 0, .spics_io_num = PIN_NUM_CS, .queue_size = 7 }; esp_err_t ret; ret = spi_bus_initialize(HSPI_HOST, &buscfg, 1); assert(ret == ESP_OK); ret = spi_bus_add_device(HSPI_HOST, &devcfg, &spi); assert(ret == ESP_OK); mfrc522_init(spi); while (1) { uint8_t uid[MFRC522_MAX_LEN]; uint8_t uid_len = sizeof(uid); if (mfrc522_request(spi, PICC_REQIDL, uid, &uid_len) == MFRC522_STATUS_OK) { ESP_LOGI(TAG, "Card detected"); if (mfrc522_get_card_type(uid[0]) == MFRC522_CARDTYPE_MIFARE1K) { ESP_LOGI(TAG, "Card type: MIFARE 1K"); uint8_t key[] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; uint8_t sector = 1; uint8_t block = 4; if (mfrc522_authenticate(spi, PICC_AUTHENT1A, sector, key, uid, uid_len) == MFRC522_STATUS_OK) { uint8_t data[MFRC522_BLOCK_SIZE]; if (mfrc522_read_block(spi, sector * 4 + block, data) == MFRC522_STATUS_OK) { ESP_LOGI(TAG, "Block %d data: %s", sector * 4 + block, data); } else { ESP_LOGE(TAG, "Read block failed"); } } else { ESP_LOGE(TAG, "Authenticate failed"); } } else { ESP_LOGE(TAG, "Unsupported card type"); } } vTaskDelay(1000 / portTICK_PERIOD_MS); } } void app_main() { xTaskCreate(rc522_task, "rc522_task", 2048, NULL, 10, NULL); } ``` 这个示例代码使用ESP32的HSPI接口与RC522模块进行通信,并且可以读取MIFARE 1K标签的数据。可以根据需要修改代码以实现其他操作。需要注意的是,RC522模块的接线需要参考其数据手册进行,以确保正确连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值