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.

[参考译文] CCS/MSP-EXP430G2ET:通过 SPI 读取 RFID 标签

Guru**** 2347060 points
Other Parts Discussed in Thread: MSP-EXP430G2ET, DLP-7970ABP, TRF7970A
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/875982/ccs-msp-exp430g2et-to-read-rfid-tag-via-spi

器件型号:MSP-EXP430G2ET
主题中讨论的其他器件: DLP-7970ABPTRF7970A

工具/软件:Code Composer Studio

您好!  

感谢为 TI MSP-EXP430G2ET Launchpad 提供的参考资料、DLP-7970ABP Booster Pack 可读取 ISO 14443A 标签。

链接:www.ti.com/.../sloc297

我对此有几个问题:

  1. 我使用的是 CCS 版本9.3.3,因此当我尝试使用该链接的 main.c 文件时,我收到错误消息:gmake:***没有规则使目标“干净”。 并且发生了构建文件生成错误.. 警告:此项目是使用当前未安装的编译器版本创建的- 4.3.3 [MSP430]、但 main.c 文件显示它是使用 Code Composer Studio Core Edition 版本6.0.1.00040创建的。 但是、我无法使用该文件。  但是、当我第二次运行同一程序时、我只会得到警告、没有输出。 我想知道我是否可以将该文件用作源文件... 或者使用具有相同功能的新版本重新创建相同的文件。
  2. 使用 NFC 功能(如链接中提供的示例)读取 RFID 标签是否有问题?
  3. 我有 一个 SPI 通信程序、该程序单独工作、但当我将其与 main.c (来自链接)结合使用时、我会得到此错误:  

未定义                    的首次引用   
 符号                                  
 ------                     --------   
 mcu_calculateVLOFreq         ./main.obj         
 mcu_delayMillisecond         ./main.obj         
 MCU_initClock                ./main.obj         
 TRF79xxA_checkExternalRfField /NFC/nfc_app.obj  
 TRF79xxA_disableSlotCounter  ./NFC/iso15693.obj
 TRF79xxA_enableSlotCounter   ./NFC/iso15693.obj
 TRF79xxA_getCollisionPosition ./NFC/iso14443a.obj
 TRF79xxA_getRxBytesReceived  ./NFC/iso14443a.obj
 TRF79xxA_getTrfStatus        ./NFC/iso14443b.obj
 TRF79xxA_initialSettings     ./main.obj         
 TRF79xxA_RESET               ./NFC/nfc_app.obj  
 TRF79xxA_resetFIFO           ./NFC/iso15693.obj
 TRF79xxA_resetIrqStatus      ./NFC/iso15693.obj
 TRF79xxA_sendDirectCommand   /NFC/iso15693.obj
 TRF79xxA_setTrfPowerSetting  ./main.obj         
 TRF79xxA_setupInitiator      ./NFC/iso15693.obj
 TRF79xxA_TurnRfOff           ./NFC/nfc_app.obj  
 TRF79xxA_waitRxData          /NFC/felica.obj   
 TRF79xxA_waitRxIRQ           /NFC/iso15693.obj
 TRF79xxA_waitTxIRQ           /NFC/iso15693.obj
 TRF79xxA_writeRaw            ./NFC/felica.obj   
 TRF79xxA_writeRegister       ./NFC/iso14443a.obj
 UART_putByte                 /NFC/felica.obj   
 UART_putByteDecimalValue     /NFC/nfc_app.obj  
 UART_putChar                 ./NFC/felica.obj   
 UART_introputReaderMsg       ./main.obj         
 UART_putNewLine              ./NFC/felica.obj   
 UART_sendCString             ./NFC/felica.obj   
 UART_setup                   ./main.obj         
 G_pui8TrfBuffer              ./NFC/felica.obj   
 
错误#10234-D:未解析的符号仍然存在
备注#10372-D:(ULP 4.1)在此项目中检测到未初始化的端口3。 建议初始化所有未使用的端口、以消除未使用引脚上浪费的电流消耗。
错误#10010:链接期间遇到错误;未生成"SAMPLE_RFID.OUT"
 
>>编译失败
Makefile:150:目标'scame_RFID.out'的配方失败
gmaked[1]:***[SAMPLE_RFID.OUT]错误1.
Makefile:146:目标'all'的配方失败
gmake:***[全部]错误2.

我使用的 SPI 通信程序是、

volatile char received_ch = 0;
#include

int main (空)

   WDTCTL = WDTPW + WDTHOLD;//停止 WDT

   P1OUT |= BIT5;
   P1DIR |= BIT5;
   P1SEL = BIT1 | BIT2 | BIT4;
   P1SEL2 = BIT1 | BIT2 | BIT4;

   UCA0CTL1 = UCSWRST;
   UCA0CTL0 |= UCCKPH + UCMSB + UCMST + UCSYNC;// 3引脚、8位 SPI 主器件
   UCA0CTL1 |= UCSSEL_2;// SMCLK
   UCA0BR0 |= 0x02;///2
   UCA0BR1 = 0;//
   UCA0MCTL = 0;//无调制
   UCA0CTL1 &=~UCSWRST;//**初始化 USCI 状态机**
   P1OUT &=(~BIT5);//选择器件

       while (!(IFG2 & UCA0TXIFG));// USCI_A0 TX 缓冲器准备就绪?
       UCA0TXBUF = 0xAA;//通过 SPI 向从器件发送0xAA
       while (!(IFG2 & UCA0RXIFG));// USCI_A0 RX 是否接收到?
       Received_ch = UCA0RXBUF;//存储接收到的数据

       P1OUT |=(BIT5);//取消选择器件

请帮助我指出我的错误。

提前感谢!

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

    您好!

    表示1。 在上面、检查:

    https://e2e.ti.com/support/tools/ccs/f/81/t/697064 

    对于2.、我不知道集成是否可行。 我会通知可能了解得更好的人。  

    对于3..、您将遇到典型的缺失符号。  下面的项目导入和编译错误页面包含解决此问题的其他详细信息(搜索错误)。   

    https://software-dl.ti.com/ccs/esd/documents/sdto_ccs_build-errors.html

    希望这对您有所帮助、

    拉斐尔

    e2e.ti.com/.../697064

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

    您好、Sumie、

    我已经将 SLOC297C 移植到 CCS 9.1、并且也使用了更新的编译器-这应该可以完全导入 CCS 9.3: e2e.ti.com/.../TRF7970ABP_5F00_RFID_5F00_Reader_5F00_Demo.zip 并在编译时生成输出

    这将使您运行以读取示例中的标签。

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

    [引用用户="Ralph Jacobi"]

    您好、Sumie、

    我已经将 SLOC297C 移植到 CCS 9.1、并且也使用了更新的编译器-这应该可以完全导入 CCS 9.3并在编译时生成输出: (请访问该网站以查看此文件)

    这将使您运行以读取示例中的标签。

    [/报价]

    我的设置:Windows 10、MSP-EXP430G2ET、DLP-7970A、RFID 标签 ISO14443A

    您好!

    感谢大家提供的信息!

    是的、(Ralph Jacobi)新版本运行良好、没有错误。  

    我对此还有几个问题、

    1. 程序文件的说明如下:
      *此示例检测 ISO15693、2类、3类、4A 类、4B 类
      * NFC/RFID 标签。 然后、它通过上的 LED 指示标签类型
      * TRF7970A Booster Pack。 标签 UID 和块数据等信息是
      *通过 UART 以115200波特发出、可在计算机上读取。    所以我想确保如果这个程序也读取5类标签(如 sloa227b.pdf 在第11章中所述)
    2. 如何在 CCS 中为此 Launchpad 设置串行波特率? (如果是、9600波特率是否足够?)
    3. 如何读取标签的 UID? ( (msp430.uid.uidByte[0] == 0x84) something like this is correct?)
    4. 除了您共享的 main.c 程序外、我添加了 UART 代码注释并尝试通过 SPI 运行(通过添加我在上一个问题中添加的 SPI 接口程序)、 因此、我想知道、添加 UID 读取器件是否足以获得输出

    请帮您解决此问题、并提前感谢您!

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

    您好、Sumie、

    该程序读取 ISO15693标签、我可以向您保证-我对其进行了全面测试、包括优化的防碰撞协议。 但 SLOA227并不反映 SLOC297的功能。 没有适用于 SLOC297的应用手册、只需一个 E2E 帖子: https://e2e.ti.com/support/wireless-connectivity/other-wireless/f/667/t/493678 [编辑-最初链接的错误帖子]

    我相信、尽管有评论、代码实际上使用的是9600波特。 应该能够在 CCS 中进行设置、但不幸的是、我没有真正使用它、它有一个终端。

    标签 UID 将存储在 g_pui8Iso15693UId 中。

    只需执行 ISO15693_sendSingleSlotInventory 即可获取 UID。