This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] DLP-7970ABP:DLP-7970ABP

Guru**** 2589300 points
Other Parts Discussed in Thread: DLP-7970ABP, TRF7970A, CC3200

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/other-wireless-group/other-wireless/f/other-wireless-technologies-forum/621579/dlp-7970abp-dlp-7970abp

器件型号:DLP-7970ABP
主题中讨论的其他器件: TRF7970ACC3200

您好!

我正在尝试使用 C3200 Launchpad 为卡仿真模式编写 DLP-7970ABP 代码。

在浏览了技术文档和 TRF7970A 的参考代码之一之后、我已经完成了初始化、使 DLP-7970ABP 成为 A 类侦听 Android 手机命令的目标模式。 下面是代码。

无效
Trf796xInitialSettings (空)

unsigned int i;
u08_t 命令[7];
u08_t ISO_CONTROL;
u08_t temp1[30];
u08_t temp2[20];

如果(1)


命令[0]= SOFT_INIT;
Trf7970DirectCommand (命令);

COMMAN[0]=空闲;
Trf7970DirectCommand (命令);

McuDelayMillisecond(3);

//寄存器00h。 芯片状态控制寄存器
命令[0]= 0x00;
命令[1]= 0x20;

//发送器打开- 3V 工作电压

Trf7970WriteSingle (&command[0]、2);

命令[0]= 0x01;
命令[1]= 0xA4;//0x24;//类型 A

// 106kbps 标签仿真器14443A 模式

Trf7970WriteSingle (&command[0]、2);

//用一个额外的虚拟时钟复位 FIFO

命令[0]= 0x0F;
Trf7970DirectCommand (命令);

//寄存器02h。 ISO14443B TX 选项寄存器
COMMAN[0]= ISO_14443B_OPTIONS;
命令[1]= 0x01;
#if 1.
//
//自动 SDD 禁用
//
命令[1]= 0x00;
#endif


//自动 SDD 配置(符合 ISO14443A 4层标准)

Trf7970WriteSingle (&command[0]、2);

//寄存器09h。 调制器和 SYS_CLK 控制寄存器
//选项1:
// BIT6 - OOK 调制被启用
//选项2:
// BIT0 - OOK (100)
COMMAN[0]=调制器控制;
命令[1]= 0x01;

//无 SYS_CLK 输出、调制 OOK (100%)

Trf7970WriteSingle (&command[0]、2);

//寄存器0Ah。 RX 特别设置寄存器
COMMAN[0]= RX_SPECIAL_SETTINGS;
命令[1]= 0x30;

//位5 -带通450kHz 至1.5MHz -适用于 ISO14443A/B 中使用的曼彻斯特编码848kHz 副载波
//位4 -带通100kHz 至1.5MHz -适用于高比特率 ISO14443中使用的最高比特率(848kbps)

Trf7970WriteSingle (&command[0]、2);

//寄存器0Bh。 RX 特别设置寄存器
COMMAN[0]=稳压器_CONTROL;
命令[1]= 0x87;

//自动调节器设置

Trf7970WriteSingle (&command[0]、2);

//寄存器14h。 FIFO IRQ 电平寄存器
COMMAN[0]= FIFO_IRQ_LEVEL;
命令[1]= 0x0F;

//为 RX 高电平设置 FIFO IRQ 电平= 96字节和 TX 低电平32字节

Trf7970WriteSingle (&command[0]、2);

//寄存器16h。 NFC 低场侦测水平寄存器
COMMAND_0]= NFC_LOW_DETection;
命令[1]= 0x83;
//位7 -禁用时钟提取器- NFC 无源106kbps 和 ISO14443A 卡仿真
//位2:0 =用于 RF 冲突避免的 RF 场水平(显示在寄存器0x19的 B6中)

Trf7970WriteSingle (&command[0]、2);

命令[0]= NFCID;
对于(i=1;i < 11;i++)
Command[i]= TargetCID1[I-1];
// NFCID 编号(4、7或10字节)

Trf7970WriteCont (命令、11);

//寄存器18h。 NFC 目标方侦测水平寄存器
命令[0]= NFC_TARGET_LEVEL;
命令[1]= 0x27;//类型 A
#if 1.
//
//自动 SDD 禁用
//
命令[1]= 0x07;
#endif
//
//位7:6 - NFC 目标方侦测水平(NFCID 大小= 7)
//位5 -使用内部状态机的自动 SDD
//位2:0 =系统唤醒所需的 RF 场水平-显示在寄存器0x19的 B7中)

Trf7970WriteSingle (&command[0]、2);

//寄存器17h。 NFCID1编号寄存器


////寄存器1Ah。 测试寄存器(用于测试或直接使用)
COMMAND_0]= NFC_TEST_SETTING1_REG;
命令[1]= 0x40;
//设置第一个 RX 增益级

Trf7970WriteSingle (&command[0]、2);

//用一个额外的虚拟时钟复位 FIFO

命令[0]= 0x0F;
Trf7970DirectCommand (命令);

//块接收器,然后启用接收器
//--Resetting Decoders-//
命令[0]= STOP_解码 器;
Trf7970DirectCommand (命令);

命令[0]= run_decoders;
Trf7970DirectCommand (命令);


// radio_DIRECTCOMMAND (stop_decoders、buf);
// radio_DIRECTCOMMAND (run_decoders、buf);

TEMP1[0]= CHIP_STATE_CONTROL;
Trf7970ReadCont (temp1、0x17);
TEMP2[0]=NFC_TARGET_LEVEL;
Trf7970ReadCont (temp2、0x17);
ISO_CONTROL = ISO_CONTROL;
Trf7970ReadSingle (&ISO_CONTROL、1);
TEMP1[19]= NFC_TARGET_Protocol;
Trf7970ReadSingle (&temp1[19]、1);
while (1){

 

下面是中断代码    

void Trf7970PortB (void)//中断处理程序

// GPIOIntClear (GPIOA0_BASE、GPIO_PIN_7);
u08_t IRQ_STATUS[4]、ISO_CONTROL;
u08_t 寄存器[4];
静态无符号 char retry_counter = 0;

IRQ_FLAG = 0x02;

// Sergey 修复 stop_counter;//停止计时器模式
RESET_COUNTER;

操作

GPIOIntClear (GPIOA0_BASE、GPIO_PIN_7);//中断标志清零

ISO_CONTROL = ISO_CONTROL;
Trf7970ReadSingle (&ISO_CONTROL、1);
Trf7970ReadIrqStatus (IRQ_STATUS);
寄存器[0]= IRQ_STATUS;
Trf7970ReadCont (寄存器、2);// IRQ 状态寄存器地址
// Trf796xReadSingle (&Register[0]、1);

寄存器[2]= NFC_TARGET_Protocol;
Trf7970ReadSingle (&Register[2]、1);
IF (寄存器[2]=0xC5)
Trf7970ISR (IRQ_STATUS);
//否则
// Trf796xInitialSettings();
if ((ISO_CONTROL & BIT5)!= BIT5)// RFID 模式

// Trf7970ISR (IRQ_STATUS);

} while (GPIOIntStatus (GPIOA0_BASE、1)& GPIO_PIN_7);

//__BIC_SR_REGISTER_ON_EXIT (LPM0_Bits);

根据我参考的 TRF7970A 技术文档和参考代码。 初始化后、如果我从寄存器"NFC 目标方协议寄存器(0x19)"中读取值、 则当产生中断时(当移动设备靠近 Booster Pack 时)、该值应为"0xC9"。 我在这里的观察结果是、该值有时不相同、有时为0x00、有时为0x09、有时为0xC9。

并且 IRQ 状态寄存器也提供值0x04而不是0x40、这是组帧错误。

在这种方法中出错的地方、任何人都能帮助解决这一问题。

此致、

Vamsi  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vamsi、

    如果要在 CC3200上使用卡仿真、应将我们的卡仿真固件连接到器件。

    您可以从 www.ti.com/lit/pdf/sloa208获取应用手册和固件

    我们没有为 CC3200开发任何配套资料的计划、因此您需要在移植该固件时完成相关工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    卡仿真代码适用于 MSP432+DLP-7970ABP。 同样、代码具有所有模式、我认为我们应该使用宏配置所需的模式、但我希望在将 CC3200用作 LaunchPad 时仅实现卡仿真部分。 卡仿真的技术文档正在进行简要介绍。 请指导或提供任何建议以继续。

    谢谢、此致、

    Vamsi