[技术问答] N76E003 读取96位UID的问题

[复制链接]
1008|23
 楼主 | 2018-4-14 20:07 | 显示全部楼层 |阅读模式
这是官方给的例程,用printf输出是可以 但是用串口一个一个输出就全都是0,这是什么原因请大神指教

#include <stdio.h>
#include "N76E003.h"
#include "Common.h"
#include "Delay.h"
#include "SFR_Macro.h"
#include "Function_Define.h"

UINT8 UID_BYTE(UINT8 Addr)
{
                UINT8 DATATEMP;
                set_IAPEN;
                IAPAL = Addr;
    IAPAH = 0x00;
    IAPCN = READ_UID;
    set_IAPGO;
                DATATEMP = IAPFD;
                clr_IAPEN;
                return DATATEMP;
}

void main(void)
{
        UINT8 READ1,READ2;
        Set_All_GPIO_Quasi_Mode;
//---------toggle GPIO1---------       
        clr_GPIO1;
        Timer0_Delay1ms(100);
        set_GPIO1;
        Timer0_Delay1ms(100);
        clr_GPIO1;
        Timer0_Delay1ms(100);
        set_GPIO1;
        Timer0_Delay1ms(100);
//---------end toggle GPIO1---------
       
        READ1 = UID_BYTE(0x02);
        READ2 = UID_BYTE(0x05);
       
        printf ("\n Value = 0x%bx",READ1);
        printf ("\n Value = 0x%bx",READ2);
        while(1);

}
| 2018-4-14 23:39 | 显示全部楼层
你这例子就是printf的啊
| 2018-4-14 23:39 | 显示全部楼层
你是想要个串口输出的非printf版本?
| 2018-4-15 10:21 | 显示全部楼层
不懂楼主到底是什么问题,是读不出来还是不会按照想要的格式打印
| 2018-4-15 11:01 | 显示全部楼层
  1. #include "N76E003_iar.h"
  2. #include "Common.h"
  3. #include "Delay.h"
  4. #include "SFR_Macro.h"
  5. #include "Function_define.h"

  6. UINT8 UID_BYTE(UINT8 Addr)
  7. {
  8.                 UINT8 DATATEMP;
  9.                 set_IAPEN;
  10.                 IAPAL = Addr;
  11.     IAPAH = 0x00;
  12.     IAPCN = READ_UID;
  13.     set_IAPGO;
  14.                 DATATEMP = IAPFD;
  15.                 clr_IAPEN;
  16.                 return DATATEMP;
  17. }

  18. void main(void)
  19. {
  20.         UINT8 READ1,READ2;
  21.         Set_All_GPIO_Quasi_Mode;
  22.         InitialUART0_Timer3(115200);
  23.        
  24. //---------toggle GPIO1---------       
  25.         clr_GPIO1;
  26.         Timer0_Delay1ms(100);
  27.         set_GPIO1;
  28.         Timer0_Delay1ms(100);
  29.         clr_GPIO1;
  30.         Timer0_Delay1ms(100);
  31.         set_GPIO1;
  32.         Timer0_Delay1ms(100);
  33. //---------end toggle GPIO1---------
  34.        
  35.         READ1 = UID_BYTE(0x02);
  36.         READ2 = UID_BYTE(0x05);
  37.        
  38.         while(1)
  39.         {
  40. printf_UART("Value = 0x%x\n",READ1);
  41. printf_UART("Value = 0x%x\n",READ2);
  42.         }

  43. }

复制代码
| 2018-4-15 11:02 | 显示全部楼层
你试试IAR版的怎么样。官方最近新推出了IAR的BSP。
| 2018-4-15 20:07 | 显示全部楼层
那就是你串口没弄对。
| 2018-4-16 15:46 | 显示全部楼层
你这就跟读ID无关了,是你输出ID的问题
| 2018-4-16 18:12 | 显示全部楼层
没这个板子,官方的例子应该没问题,就一个函数,自己调用。
 楼主 | 2018-4-16 18:48 | 显示全部楼层
xinpian101 发表于 2018-4-14 23:39
你是想要个串口输出的非printf版本?

对的,就是想要让串口输出单个字节的
 楼主 | 2018-4-16 18:50 | 显示全部楼层
huangcunxiake 发表于 2018-4-15 10:21
不懂楼主到底是什么问题,是读不出来还是不会按照想要的格式打印

我想以单个字节的形式通过串口发送
 楼主 | 2018-4-16 18:51 | 显示全部楼层
小灵通2018 发表于 2018-4-16 15:46
你这就跟读ID无关了,是你输出ID的问题

是的 想让UID单个输出
| 2018-4-16 19:12 | 显示全部楼层
就一个函数,很难操作吗
 楼主 | 2018-4-16 19:14 | 显示全部楼层
捉虫天师 发表于 2018-4-16 19:12
就一个函数,很难操作吗

这个不会呀 就觉得很难  望大神指教
| 2018-4-16 19:23 | 显示全部楼层
跑官网的例子看看,结果,然后直接调用那个函数就行了啊, 你是想搞懂那个函数怎么回事?
| 2018-4-16 20:59 | 显示全部楼层
看看手册怎么讲的,我是用不着啊。应该就是读某个内存。
| 2018-4-17 14:52 | 显示全部楼层
看出来一个问题,这个函数好像是返回一个字节数据,那么也就是8BIT,你用了两次也就是16BIT,跟96差很多。
| 2018-4-17 15:21 | 显示全部楼层
0000H to 000BH

这12个地址是UID


| 2018-4-17 15:21 | 显示全部楼层
查看手册1.0.5版本的
21.1 IAP 命令
N76E003 通过IAP可操作 APROM、 LDROM或 CONFIG。 IAP操作模式和编程区域是由IAP控制寄存器IAPCN决
定的。
这个涨价有个表,看完你什么都明白了。
这个例子应该是只读了两个字节的,一共有12个字节。
| 2018-4-17 15:22 | 显示全部楼层
        READ1 = UID_BYTE(0x02);
        READ2 = UID_BYTE(0x05);
例子里是这两个,实际上全部的是从0x00到0x0B
你可以试试
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

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