查看: 16992|回复: 16
打印 上一主题 下一主题

[原创] 【LPC8N04初体验】5.LPC8N04之NFC读写测试

[复制链接]
  • TA的每日心情

    2021-1-28 20:09
  • 签到天数: 317 天

    连续签到: 1 天

    [LV.8]以坛为家I

    61

    主题

    1582

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    9709
    最后登录
    2022-5-12
    跳转到指定楼层
    楼主
    发表于 2018-7-1 17:44:03 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 小马哥-1650185 于 2018-7-2 18:04 编辑

    这个帖子主要测试NFC 功能的读写数据。注本帖仅测试 NDEFT2T_RECORD_TYPE_TEXT 类型,其他类型方法一样。
    测试APP为nxp官方的LPC8N04 NFC Demo: com.nxp.lpc8nxxnfcdemo-v2.0.zip (1.42 MB, 下载次数: 126)


    下图是通过app写入一个字符串“大豆包吃了肚子疼。”
    可以看到数据写入成功,这个字符串在lpc8n04里面存入eeprom。

    然后通过NFC读取测试,首先要知道一点,lpc8n04初始化时候是先读取eeprom里面的字符串,然后在后面追加一个现显示温度的字符串。

    demo里面显示的是华氏度,这里我转换成了摄氏度。读取信息如下图







    后面为了方便测试,都是用英文字符串,中文字符在MDK的watch窗口里面显示乱码,不知道怎么调,试了gb2312,utf-8, ANsi 等  都是乱码,囧。。。。


    首先来大概你分析下demo的代码吧,说实话 这个demo的代码风格写的很乱,看起来你很不舒服。。。

    工程中有两个模块:
    tmeas.c------是温度驱动
    ndeft2t.c-----是nfc驱动
    。。。。。。。。。。。。。。。

    系统上电后先进性一系列的初始化,即Init();函数。
    初始化时钟为2Mhz
    1. Chip_Clock_System_SetClockFreq(2 * 1000 * 1000);
    复制代码


    然后初始化 board,温度模块,nfc模块,eeprom模块,rtc的timer模块
    1. Board_Init();
    2.    TMeas_Measure(TSEN_10BITS, TMEAS_FORMAT_FAHRENHEIT, false, 0 /* Value used in pp_TmeasCb*/);
    3.     Chip_NFC_Init(LPC_NFC);
    4.     NDEFT2T_Init();
    5.     Chip_EEPROM_Init(LPC_EEPROM);
    6.     Timer_Init();
    复制代码


    然后Creates an NDEF message. & Commits message by finalising the message header.
    1.     NDEFT2T_CreateMessage(sNdefInstance, sData, sizeof(sData), true);
    2.     NDEFT2T_CommitMessage(sNdefInstance);
    复制代码


    最后初始化led的io
    1. Chip_IOCON_SetPinConfig(LPC_IOCON, (IOCON_PIN_T)0, IOCON_FUNC_0 | IOCON_RMODE_INACT);
    2.     Chip_IOCON_SetPinConfig(LPC_IOCON, (IOCON_PIN_T)1, IOCON_FUNC_0 | IOCON_RMODE_INACT);
    3.     Chip_IOCON_SetPinConfig(LPC_IOCON, (IOCON_PIN_T)2, IOCON_FUNC_0 | IOCON_RMODE_INACT);
    4.     Chip_IOCON_SetPinConfig(LPC_IOCON, (IOCON_PIN_T)3, IOCON_FUNC_0 | IOCON_RMODE_INACT);
    5.     Chip_IOCON_SetPinConfig(LPC_IOCON, (IOCON_PIN_T)4, IOCON_FUNC_0 | IOCON_RMODE_INACT);
    6.     Chip_IOCON_SetPinConfig(LPC_IOCON, (IOCON_PIN_T)5, IOCON_FUNC_0 | IOCON_RMODE_INACT);
    7.     Chip_IOCON_SetPinConfig(LPC_IOCON, (IOCON_PIN_T)6, IOCON_FUNC_0 | IOCON_RMODE_INACT);
    8.     Chip_IOCON_SetPinConfig(LPC_IOCON, (IOCON_PIN_T)7, IOCON_FUNC_0 | IOCON_RMODE_INACT);
    9.     Chip_IOCON_SetPinConfig(LPC_IOCON, (IOCON_PIN_T)8, IOCON_FUNC_0 | IOCON_RMODE_INACT);
    10.     Chip_IOCON_SetPinConfig(LPC_IOCON, (IOCON_PIN_T)9, IOCON_FUNC_0 | IOCON_RMODE_INACT);
    11.     Chip_IOCON_SetPinConfig(LPC_IOCON, (IOCON_PIN_T)10, IOCON_FUNC_2 | IOCON_RMODE_PULLDOWN);
    12.     Chip_IOCON_SetPinConfig(LPC_IOCON, (IOCON_PIN_T)11, IOCON_FUNC_2 | IOCON_RMODE_PULLDOWN);

    13.     LPC_GPIO->DATA[0xFFF] = 0;
    14.     LPC_GPIO->DIR = (LPC_GPIO->DIR & 0xFFF) | 0x3FF;
    复制代码

    static void DeInit(void)函数主要是 反初始化,用于系统进入sleep模式是 销毁之前初始化的的外设,节能。
    初始化完成后,读取eeprom里面的数据到g_displayText 中,如果eeprom中没有数据,系统自动写入"The LPC Experience; Your World Reimagined"

    由于之前通过NFC向板卡写入了Hello,world.   这里可以读出来。


    然后初始化timer32_0,


    然后到while循环,这个核我们之前见到的不一样
    1. while (hostTicks < hostTimeout)
    复制代码
    系统设置100s 超时后,进入sleep模式。

    未用手机NFC和  板卡交互之前,while里面的函数都是不执行的,此时程序在timer32_0的中断函数中执行流水灯和S2按键任务
    1. void CT32B0_IRQHandler(void)
    复制代码


    当手机NFC和  板卡交互时,触发NFC中断函数void NFC_IRQHandler(void);
    在nfc中断函数中 有调用
    1. NDEFT2T_FIELD_STATUS_CB(true);
    复制代码
    通过以下宏关联到NDEFT2T_FieldStatus_Cb中

    1. #define NDEFT2T_FIELD_STATUS_CB NDEFT2T_FieldStatus_Cb
    复制代码


    在函数 void NDEFT2T_FieldStatus_Cb(bool status)  中nfcOn = true;


    使while函数中的第一个if条件满足
    1. if(nfcOn && !displayInProgress)
    复制代码
    在这个函数里面执行eeprom读取,P7,P8,P9的io初始化,这里注意下,如果调试模式下,测试nfc,程序走到这里debug就会断掉,因为swd的 两个io口在这里被初始化为了普通的io口,所以建议调试时 关掉io初始化,如下图



    在函数 startLEDDisplay(true);中刷新温度

    并且让标志位displayInProgress  置true
    1. if(!displayInProgress) {
    2.                 displayInProgress = true;
    复制代码

    是while中的 if(displayInProgress && g_updateTemp) 条件满足,刷新温度,并把温度字符串保存到eeprom读取字符串的后面。


    同时 static bool takeMemSemaphore(void)  获取信号ok


    使下条件满足
    1. if(displayInProgress && !sTargetWritten && updateNFC && takeMemSemaphore())
    复制代码



    通过接口 static bool writeNFCDisplayMsg(char *str, uint32_t len),把g_displayText中的数据 通过nfc传输到手机。

    仿真如下

    手机收到的显示数据



    读测试ok。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

    写数据:
    nfc链接手机触发板卡的nfc中断,



    在函数void NDEFT2T_MsgAvailable_Cb(void) 中 使能写标志


    触发while的的条件
    1. if ((sTargetWritten) && takeMemSemaphore())
    复制代码


    写入数据Hello,world.,并保存到eeprom中。


    手机端也提示 写入成功



    恩,到这里基本上测试完了,最后再说一点,就是关于while的循环条件。
    1. while (hostTicks < hostTimeout)
    复制代码
    其中hostTimeout 初始化为0x64。
    1. <div>hostTimeout = FIRST_HOST_TIMEOUT;</div><div>#define FIRST_HOST_TIMEOUT 100</div>
    复制代码


    1. <div> hostTimeout = HOST_TIMEOUT;</div><div>#define HOST_TIMEOUT 100</div>
    复制代码


    hostTicks 在rtc时钟计数下一秒累加


    hostTicks 加到100时,系统进入sleep模式。


    然而没当有nfc交互是,这个计数是清零的,既能保证系统正常工作,又能达到节能的目的





    Over。。。。。


















    评分

    参与人数 1 +3 收起 理由
    doatello + 3

    查看全部评分

    好好
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2025-7-11 08:53
  • 签到天数: 301 天

    连续签到: 2 天

    [LV.8]以坛为家I

    4216

    主题

    7885

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    43324
    最后登录
    2026-4-3
    沙发
    发表于 2018-7-2 09:31:25 | 只看该作者
    小马哥的帖子,还是写的,辣么棒~~
    qiandao qiandao
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-2-5 17:05
  • 签到天数: 206 天

    连续签到: 1 天

    [LV.7]常住居民III

    28

    主题

    1820

    帖子

    2

    金牌会员

    Rank: 6Rank: 6

    积分
    6137
    最后登录
    2026-3-11
    板凳
    发表于 2018-7-2 10:13:40 | 只看该作者
    疼着吧               
    哎...今天够累的,签到来了~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-11-22 09:55
  • 签到天数: 179 天

    连续签到: 1 天

    [LV.7]常住居民III

    12

    主题

    1122

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1377
    最后登录
    2019-11-22
    地板
    发表于 2018-7-2 11:22:15 | 只看该作者
    这个DEMOapp有安装包的吗,我装了但是找不到安装包
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-1-28 20:09
  • 签到天数: 317 天

    连续签到: 1 天

    [LV.8]以坛为家I

    61

    主题

    1582

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    9709
    最后登录
    2022-5-12
    5#
     楼主| 发表于 2018-7-2 12:07:36 | 只看该作者
    队长shiwo 发表于 2018-7-2 11:22
    这个DEMOapp有安装包的吗,我装了但是找不到安装包

    我在论坛里面别人帖子里面下载的,刚找了 没找到呢呗帖子,你找下哈,,,没找到的话晚上回去 我传上来
    好好
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2025-1-21 08:52
  • 签到天数: 861 天

    连续签到: 1 天

    [LV.10]以坛为家III

    75

    主题

    2523

    帖子

    24

    金牌会员

    Rank: 6Rank: 6

    积分
    5867
    最后登录
    2025-1-22
    6#
    发表于 2018-7-2 12:30:23 | 只看该作者
    感谢分享,跟着小马哥学习
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    前天 08:40
  • 签到天数: 2590 天

    连续签到: 20 天

    [LV.Master]伴坛终老

    56

    主题

    5659

    帖子

    73

    金牌会员

    Rank: 6Rank: 6

    积分
    26748
    最后登录
    2026-4-3
    7#
    发表于 2018-7-2 13:04:20 | 只看该作者
    队长shiwo 发表于 2018-7-2 11:22
    这个DEMOapp有安装包的吗,我装了但是找不到安装包

    https://www.nxpic.org.cn/module/forum/thread-614519-1-1.html
    帖子尾部有安装包
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    慵懒
    2019-11-22 09:55
  • 签到天数: 179 天

    连续签到: 1 天

    [LV.7]常住居民III

    12

    主题

    1122

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    1377
    最后登录
    2019-11-22
    8#
    发表于 2018-7-2 13:06:04 | 只看该作者
    Angel_YY 发表于 2018-7-2 13:04
    https://www.nxpic.org.cn/module/forum/thread-614519-1-1.html
    帖子尾部有安装包

    谢谢     
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2021-1-28 20:09
  • 签到天数: 317 天

    连续签到: 1 天

    [LV.8]以坛为家I

    61

    主题

    1582

    帖子

    6

    金牌会员

    Rank: 6Rank: 6

    积分
    9709
    最后登录
    2022-5-12
    9#
     楼主| 发表于 2018-7-2 18:06:17 | 只看该作者

    哈哈 就是在你那下载的,自己下载了好多版本 ,都不是这demo的,是clock的
    好好
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2020-7-1 10:30
  • 签到天数: 5 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    5

    主题

    34

    帖子

    1

    注册会员

    Rank: 2

    积分
    174
    最后登录
    2021-11-9
    10#
    发表于 2018-7-3 11:21:49 | 只看该作者
    刚收到板子,多谢分享了
    打卡打卡!今天天气不好!
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2026-4-5 02:53 , Processed in 0.099950 second(s), 29 queries , Redis On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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