[技术问答]

N76E003 读取96位UID的问题

[复制链接]
3202|23
手机看帖
扫描二维码
随时随地手机跟帖
yxys_1988|  楼主 | 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);

}
xinpian101| | 2018-4-14 23:39 | 显示全部楼层
你这例子就是printf的啊

使用特权

评论回复
xinpian101| | 2018-4-14 23:39 | 显示全部楼层
你是想要个串口输出的非printf版本?

使用特权

评论回复
huangcunxiake| | 2018-4-15 10:21 | 显示全部楼层
不懂楼主到底是什么问题,是读不出来还是不会按照想要的格式打印

使用特权

评论回复
gejigeji521| | 2018-4-15 11:01 | 显示全部楼层
#include "N76E003_iar.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;
        InitialUART0_Timer3(115200);
       
//---------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);
       
        while(1)
        {
printf_UART("Value = 0x%x\n",READ1);
printf_UART("Value = 0x%x\n",READ2);
        }

}

使用特权

评论回复
gejigeji521| | 2018-4-15 11:02 | 显示全部楼层
你试试IAR版的怎么样。官方最近新推出了IAR的BSP。

使用特权

评论回复
幸福小强| | 2018-4-15 20:07 | 显示全部楼层
那就是你串口没弄对。

使用特权

评论回复
小灵通2018| | 2018-4-16 15:46 | 显示全部楼层
你这就跟读ID无关了,是你输出ID的问题

使用特权

评论回复
zhuomuniao110| | 2018-4-16 18:12 | 显示全部楼层
没这个板子,官方的例子应该没问题,就一个函数,自己调用。

使用特权

评论回复
yxys_1988|  楼主 | 2018-4-16 18:48 | 显示全部楼层
xinpian101 发表于 2018-4-14 23:39
你是想要个串口输出的非printf版本?

对的,就是想要让串口输出单个字节的

使用特权

评论回复
yxys_1988|  楼主 | 2018-4-16 18:50 | 显示全部楼层
huangcunxiake 发表于 2018-4-15 10:21
不懂楼主到底是什么问题,是读不出来还是不会按照想要的格式打印

我想以单个字节的形式通过串口发送

使用特权

评论回复
yxys_1988|  楼主 | 2018-4-16 18:51 | 显示全部楼层
小灵通2018 发表于 2018-4-16 15:46
你这就跟读ID无关了,是你输出ID的问题

是的 想让UID单个输出

使用特权

评论回复
捉虫天师| | 2018-4-16 19:12 | 显示全部楼层
就一个函数,很难操作吗

使用特权

评论回复
yxys_1988|  楼主 | 2018-4-16 19:14 | 显示全部楼层
捉虫天师 发表于 2018-4-16 19:12
就一个函数,很难操作吗

这个不会呀 就觉得很难  望大神指教

使用特权

评论回复
捉虫天师| | 2018-4-16 19:23 | 显示全部楼层
跑官网的例子看看,结果,然后直接调用那个函数就行了啊, 你是想搞懂那个函数怎么回事?

使用特权

评论回复
yiy| | 2018-4-16 20:59 | 显示全部楼层
看看手册怎么讲的,我是用不着啊。应该就是读某个内存。

使用特权

评论回复
dongnanxibei| | 2018-4-17 14:52 | 显示全部楼层
看出来一个问题,这个函数好像是返回一个字节数据,那么也就是8BIT,你用了两次也就是16BIT,跟96差很多。

使用特权

评论回复
dongnanxibei| | 2018-4-17 15:21 | 显示全部楼层
0000H to 000BH

这12个地址是UID


使用特权

评论回复
dongnanxibei| | 2018-4-17 15:21 | 显示全部楼层
查看手册1.0.5版本的
21.1 IAP 命令
N76E003 通过IAP可操作 APROM、 LDROM或 CONFIG。 IAP操作模式和编程区域是由IAP控制寄存器IAPCN决
定的。
这个涨价有个表,看完你什么都明白了。
这个例子应该是只读了两个字节的,一共有12个字节。

使用特权

评论回复
dongnanxibei| | 2018-4-17 15:22 | 显示全部楼层
        READ1 = UID_BYTE(0x02);
        READ2 = UID_BYTE(0x05);
例子里是这两个,实际上全部的是从0x00到0x0B
你可以试试

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

25

帖子

0

粉丝