查看: 3462|回复: 1

[原创] [在线活动 0元购OM40001L LPC804] NFC门锁之二

[复制链接]
  • TA的每日心情
    擦汗
    2024-11-7 09:48
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    35

    主题

    83

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1252
    最后登录
    2025-8-5
    发表于 2019-12-31 11:56:16 | 显示全部楼层 |阅读模式
    NFC门锁之二 启用NFC读卡器读取
    1、使用NFC读卡器的功能,是使用采用I2C接口的ID-2LA, ID-12LA, ID-20LA模块实现的,这个模块采用专门的伪UART协议传输数据,NFC天线和处理数据都在封装的模块中,使用起来很方便,不过,采用I2C接口转换模板后,读取I2C数据就更方便了。
    1924480347.jpg
    这个模块内置hex地址是7D,设置的速度是标准I2C速率。工作频率是125kHz的RFID,工作电压:2.8~5V DC,读取频率:125kHz,读取距离:120mm,采用RS-232的速率是9600bps。
    2. 连接开发板的引出CN9接口,是专门的I2C接口,对照SCL和SDA连接好,如下图,
    1338588067.jpg
    3. 开发程序是采用I2C master 轮询方式。读取NFC卡内数据成功,就输出到调试串口,如下,
    批注 2019-12-31 113431.png
    读取前5个数据,就可以确定具体卡片数据,后面变化的数据是读卡器的时标,显示是不同的时间读取的两次数据,时标是自动添加的。

    4. 详见参考范例程序。如下,

    1. #include <stdio.h>
    2. #include <string.h>
    3. #include "board.h"
    4. #include "fsl_debug_console.h"
    5. #include "fsl_i2c.h"

    6. #include "pin_mux.h"

    7. #define EXAMPLE_I2C_MASTER_BASE (I2C0_BASE)
    8. #define I2C_MASTER_CLOCK_FREQUENCY (12000000)
    9. #define WAIT_TIME 5000000U
    10. #define EXAMPLE_I2C_MASTER ((I2C_Type *)EXAMPLE_I2C_MASTER_BASE)

    11. #define I2C_MASTER_SLAVE_ADDR_7BIT 0x7DU
    12. #define I2C_BAUDRATE 100000U
    13. #define I2C_DATA_LENGTH 33U


    14. uint8_t g_master_txBuff[I2C_DATA_LENGTH];
    15. uint8_t g_master_rxBuff[I2C_DATA_LENGTH];

    16. int main(void)
    17. {
    18.     i2c_master_config_t masterConfig;
    19.     status_t reVal        = kStatus_Fail;
    20.     uint8_t deviceAddress = 0x01U;

    21.     CLOCK_Select(kUART0_Clk_From_MainClk);
    22. CLOCK_Select(kI2C0_Clk_From_MainClk);

    23.     BOARD_InitPins();
    24.     BOARD_InitBootClocks();
    25.     BOARD_InitDebugConsole();

    26.     PRINTF("\r\nI2C board2board polling example -- Master transfer.\r\n");

    27.    
    28.     g_master_txBuff[0] = I2C_DATA_LENGTH - 1U;
    29.     for (uint32_t i = 1U; i < I2C_DATA_LENGTH; i++)
    30.     {
    31.         g_master_txBuff[i] = i - 1;
    32.     }

    33.    
    34. I2C_MasterGetDefaultConfig(&masterConfig);

    35.     masterConfig.baudRate_Bps = I2C_BAUDRATE;

    36.     /* Initialize the I2C master peripheral */
    37.     I2C_MasterInit(EXAMPLE_I2C_MASTER, &masterConfig, I2C_MASTER_CLOCK_FREQUENCY);
    38.        
    39.     PRINTF("Receive sent data from slave :");
    40.                 while (1)
    41.     {
    42.                             for (uint32_t i = 0U; i < WAIT_TIME; i++)
    43.     {        __NOP();    }


    44.   
    45.     if (kStatus_Success == I2C_MasterStart(EXAMPLE_I2C_MASTER, I2C_MASTER_SLAVE_ADDR_7BIT, kI2C_Write))
    46.     {
    47.         reVal = I2C_MasterWriteBlocking(EXAMPLE_I2C_MASTER, &deviceAddress, 1, kI2C_TransferNoStopFlag);
    48.         if (reVal != kStatus_Success)
    49.         {
    50.             return -1;
    51.         }

    52.         reVal = I2C_MasterRepeatedStart(EXAMPLE_I2C_MASTER, I2C_MASTER_SLAVE_ADDR_7BIT, kI2C_Read);
    53.         if (reVal != kStatus_Success)
    54.         {
    55.             return -1;
    56.         }

    57.         reVal =
    58.             I2C_MasterReadBlocking(EXAMPLE_I2C_MASTER, g_master_rxBuff, I2C_DATA_LENGTH - 1, kI2C_TransferDefaultFlag);
    59.         if (reVal != kStatus_Success)
    60.         {
    61.             return -1;
    62.         }

    63.         reVal = I2C_MasterStop(EXAMPLE_I2C_MASTER);
    64.         if (reVal != kStatus_Success)
    65.         {
    66.             return -1;
    67.         }
    68.     }

    69.     for (uint32_t i = 0U; i < I2C_DATA_LENGTH - 1; i++)
    70.     {
    71.         if (i % 8 == 0)
    72.         {
    73.             PRINTF("\r\n");
    74.         }
    75.         PRINTF("0x%2x  ", g_master_rxBuff[i]);
    76.     }
    77.     PRINTF("\r\n\r\n");
    78.                
    79.         }  // End of While Loop

    80. }
    复制代码

    5.判定可用的数据成功就可以启动门锁启动程序,这个也就是大家常见的NFC读卡器开门过程,当测试这个卡片授权通过,就发出一个ON的信号,驱动吸合磁铁释放门吸,打开门锁。过一段时间延迟后,再次OFF,关门。


    该会员没有填写今日想说内容.
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 22:36
  • 签到天数: 1866 天

    连续签到: 9 天

    [LV.Master]伴坛终老

    203

    主题

    3万

    帖子

    64

    超级版主

    Rank: 8Rank: 8

    积分
    112688
    最后登录
    2025-8-14
    发表于 2020-1-2 09:18:41 | 显示全部楼层
    不错啊~
    该会员没有填写今日想说内容.
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-8-16 03:01 , Processed in 0.086077 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表