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/MSP430FR2633:TRF7960A 和 MSP430FR2633之间的 SPI 连接

Guru**** 2529560 points
Other Parts Discussed in Thread: MSP430FR2633, TRF7960A, MSP430F2370, MSP430FR4133

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/569679/ccs-msp430fr2633-spi-connection-between-trf7960a-and-msp430fr2633

器件型号:MSP430FR2633
主题中讨论的其他器件: TRF7960AMSP430F2370MSP430WAREMSP430FR4133

工具/软件:Code Composer Studio

我正在使用两个板、一个是 MSP430FR2633板、另一个是 TRF7960A 评估板。 基本上、我需要在这两个板之间建立 SPI 连接、因为我已经断开了 TRF7960A 板中与 MSP430F2370一起存在的所有连接。 我不想使用 MSP430F2370微控制器、因为我需要在 TRF7960a 和 MSP430FR2633之间建立 SPI 连接。 有人可以帮助我使用 Code Composer Studio 进行编程吗?

谢谢你。

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

    您好、Vivek、

    MSP430Ware 提供了有关如何在 MSP430FR2633上执行 SPI 通信的示例。 有3线制和4线制模式以及从模式和主模式的示例。 MSP430Ware 下载并安装完成后、可通过 CCS 中的 Resource Explorer 进行访问。

    此致、  
    Caleb Overbay

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

    您好 Caleb、

    感谢你们的帮助,但不幸的是,这不是我想要的。 我需要在 TRF7960A EVM 和 MSP430FR2633之间建立 SPI 连接。 您能不能帮我解决这个问题、因为 MSP430软件中的示例对我没有帮助。  我需要 RFID 设置、以便在我放置标签时、它会向我显示该标签的名称、这就是我使用 TRF7960A EVM 的原因。

    谢谢

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

    您好、Vivek、

    我认为我不理解您的要求。 MSP430WARE 中提供的示例展示了如何正确设置 MSP430与另一器件之间的 SPI 通信。 另一个器件可以是您想要的任何器件、包括 TRF7960A EVM。

    如果您正在寻找更具体的 EVM、下面是一些 代码示例 、其中显示了用于 TRF7960A EVM 的所有代码。 您可以使用这些命令来查看 TRF7960A 和 MSP430F2370之间如何执行 SPI 通信、然后将其更改为与 MSP430FR2633配合使用。

    如果您询问如何将 MSP430FR2633正确连接到 TRF7960A EVM、我将首先查看 EVM 的原理图及其如何连接到 MSP430F2370。

    此致、  
    Caleb Overbay

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

    您好 Caleb、

    再次感谢您使用 MSP430FR2633的原因、因为我的项目中需要一个电容式触控按钮、而且我还想使用 我在 TRF7960A EVM 板中找到的 RFID、所以基本上我不能同时使用这两个 MSP430。 我所做的是、断开了与 MSP430F2370相连的 TRF7960A EVM 板中的 SPI 线路。 断开连接后、我使用了这些 SPI 线路(查看 EVM 的原理图后)、并与 MSP430FR2633通过硬接线进行连接。 我按如下方式连接了线路:

    TRF7960A MSP430FR2633
    I/O 4 (5)(SLAVE_SELECT) P1.0
    DATA_CLK UCA1CLK (CAP1.1) P2.4
    I/O 6 (7)(SOMI) UCA1SOMI (电容1.2) P2.5
    I/O 7 (8)(SIMO) UCA1SIMO (CAP1.3) P2.6
    英文 电容0.2 = P2.3
    ASK/OOK CAP3.0 = P2.7
    IRQ P1.1
    模块 未使用
    CapTIvate 触控 CAP0.0

    我为此编写了一个代码、但不幸的是、我无法获取时钟信号(DATA_CLK)。

    请帮帮我。 感谢您的支持。

    此致

    Vivek

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

    您好、Vivek、

    在我最近一篇文章(代码示例)中链接的示例中、TRF7960A 和 MSP430F2370之间实现了 SPI 通信。 虽然这并不是您想要的、但它与 MSP430FR2633上的代码类似。 它还显示了如何设置时钟。  

    我会使用此示例以及 MSP430WARE 示例来构建软件来完成任务。 阅读 《MSP430FR4xx 和 MSP430FR2xx 系列用户指南》的第22节也不会有任何影响。

    此致、  

    Caleb Overbay

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

    您好 Caleb、

    您好!

    我所做的:
    我按照您的建议制作了一个 RFID 项目、我在使用 MSP430FR2633板的 SPI 接口的地方、我还上传了我的代码、以便更好地理解。

    问题:

    在调试我的代码后、我无法在引脚(CAP1.1) P2.4、引脚(电容1.2) P2.5上的 UCA1SOMI 和 引脚(CAP1.3) P2.6上的 UCA1SIMO 生成时钟信号 UCA1CLK。

    请告诉我代码中的错误是什么、我必须更改什么?

    感谢您的努力和帮助。

    e2e.ti.com/.../Project_5F00_RFID.tar.gz
    此致、

    Vivek Garg

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

    您好、Vivek、  

    感谢您提供详细说明。 查看您的代码后、我怀疑问题是由 P2SELx 位设置不当造成的:

    P2SEL0 = BIT4 | BIT5 | BIT6;
    P2SEL1 = BIT4 | BIT5 | BIT6; 

    查看 MSP430FR2633的数据表时、可以看到以下内容:

    虽然 P2SELx 位的表示令人困惑、但它显示应该将它们设置为"01"以实现您所需的功能。 我相信您正使用上述代码将其设置为"11"。 同样、这是一个令人困惑的表示、因为您不确定要设置哪个位(例如 P2SEL0 或 P2SEL1)。 通常、这在数据表中明确说明。 我已提交一份澄清此问题的请求、并将在收到回复时向您提供最新信息。 但是、我怀疑这是设置 P2SEL0和复位 P2SEL1的信号。 尝试一下、让我知道结果。  

    此致、  
    Caleb Overbay

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

    您好 Caleb、

    再次感谢。

    正如您所说的、我已经完成了操作、并将 P2SELx 部分更改如下:

       P2SEL0 = BIT4 | BIT5 | BIT6;
       P2SEL1 &=~(BIT4 + BIT5 + BIT6);

    更改此值后、示波器在 P2.6/UCA1SIMO/CAP1.3上显示3.3伏电压、在 P1.0上显示3.3伏电压、用于选择从引脚。 但我还需要时钟信号 P2.4/UCA1CLK。 我尝试了很多次、但我无法获得时钟信号。 时钟信号没有发生任何变化。 请告诉我我我出了什么问题吗?

    非常感谢。

    此致

    Vivek Garg

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

    我不确定您对 SPI 通信的熟悉程度、因此如果我说过您已经了解的任何内容、请原谅我。 在 SPI 通信期间、时钟仅在数据被发送时有效。 因此、在设置这些位后、您在开始通信之前不会看到时钟。 您是否曾尝试将值加载到 UCA1TXBUF 中、然后监测 SPI 总线? 当您在传输缓冲区中放置一个值时、时钟将启动、数据应被发送。

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

    您好 Caleb、

    我理解您所说的内容、这是我第一次使用 SPI、因此我在这方面不太好。 我阅读了数据表和一些 pdf 相关 SPI。 但是、正如您所说的、我对程序进行了更新、我所做的就是将传输和接收部分添加到缓冲区中。 但问题仍然相同。 我无法看到时钟信号。 我不知道留下什么或我做了什么错误。 因此、如果可能、您可以在这方面提供帮助、如果可能、您可以向我发送代表 TRF7960a 和 MSP430FR2633之间 SPI 接口的示例代码吗?

    我正在再次上传我的代码。 请看一下吗?e2e.ti.com/.../tpm_5F00_weihnachts_5F00_prototyp.tar.gz

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

    尊敬的 Caleb:

    我已经根据 示例和一些 pdf 在 TRF7960a 和 MSP430FR2633之间进行了 SPI 连接、并尝试将一些数据发送到缓冲器中、但我发现在观察窗口中、它显示一条消息(无法从非基元位置加载) 我怀疑这就是为什么传输不起作用的原因。 请帮我上传图片和代码、以便更好地理解。

    e2e.ti.com/.../8877.tpm_5F00_weihnachts_5F00_prototyp.tar.gz

    提前感谢您。

    此致、

    Vivek Garg

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

    您好、Vivek、

    为什么要使用 EUSCI_A_SPI_transmitData 函数? 先前提供的示例代码中的通信代码显示了正确的通信、不使用此函数。

    我建议回顾我之前链接的示例代码。 此代码已经过测试、并经证明可与 MSP430FR2370和 TRF7960A 搭配使用。 通信代码无需进行大量更改即可正常运行。 唯一需要更改的是 EUSCI 模块的设置、并确保所有已寻址的 SPI 寄存器都反映了此更改。

    查看此示例中的代码,我看到 Trf796xWriteSingle()结构如下:

    void
    Trf796xWriteSingle (u08_t * pbuf、u08_t length)
    {
    if (SPIMODE)//跳线设置指定的 SPI 模式
    {
    SpiWriteSingle (pbuf、length);
    }
    else//并行模式
    {
    ParallelWriteSingle (pbuf、length);
    }
    } 

    您可以看到 SpiWriteSingle 正在使用、因为我们通过 SPI 总线进行通信。 通过查看该函数、我们可以看到:

    void
    SpiWriteSingle (u08_t * pbuf、u08_t length)
    {
    u08_ti = 0;
    
    slave_select_low;//启动 SPI 模式
    
    while (length > 0)
    {
    //地址/命令字位分布
    //地址、写入、单个(p1f 3位= 0)
    * pbuf =(0x1f & pbuf
    = 0);i =(I = 2)*地址/(I = 0);I =(I = 2);I = 1 = 1 *地址/(I = 0 i++)
    {
    while (!(IFG2 & UCB0TXIFG))// USCI_B0 TX 缓冲区就绪?
    {
    
    UCB0TXBUF =* pbuf;//之前发送到 TX、RX
    
    while (UCB0STAT 和 UCBUSY)
    {
    }
    
    temp = UCB0RXBUF;
    
    pbuf++;
    length-;}
    
    
    while (UCB0STAT 和 UCBUSY)
    }{
    
    if (direct_mode = 0x00);
    }
    spi_select}/从机模式
    
    

    在这里、需要进行一些更改。 我相信您正在使用 UCA1外设、因此您需要将寄存器、如 UCB0RXBUF 更改为 UCA1TXBUF 等。 此外、请确保已正确连接 CS 信号且 极性正确。  

    最后、请参阅 《MSP430 MCU 上常见 eUSCI 和 USCI 通信问题解决方案 》、了解有关调试这些问题的更多详细信息。  

    此致、  
    Caleb Overbay

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

    此外、在观察窗口中未正确显示 EUSCI_A_SPI_transmitData 的原因是它是一个函数。 您只能在此窗口中观察变量值。

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

    尊敬的 Caleb:

    大家好、非常感谢您的帮助。 我按照您的指示操作、在代码中添加用于传输数据的函数(void SpiWriteSingle (u08_t * pbuf、u08_t length)后、我仍然无法在示波器的引脚 P2.4处看到时钟信号(UCA1CLK)。 引脚 P2.6和 P2.3上有两个高电平引脚 UCA1SIMO 和 UCA1STE。 但没有时钟信号。 为了能够看到时钟信号、我应该在代码中更改或添加什么内容?

    我上传代码是为了更好地理解。

    e2e.ti.com/.../6318.tpm_5F00_weihnachts_5F00_prototyp.tar.gz

    提前感谢您。

    此致、

    Vivek Garg

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

    您好、Vivek、

    由于您不熟悉 SPI 通信、我建议您阅读协议。 快速的谷歌搜索将为您提供许多资源供您阅读。 然后、当您觉得自己熟悉协议的工作原理后、我将 通过 Code Composer Studio 中的 Resource Explorer 转到 MSP430Ware 中的示例。 我知道这些示例并不是您想要的示例、但您首先需要熟悉如何在 MSP430上完成 SPI 通信、然后再尝试调试更复杂的项目。 这些示例展示了如何启动和运行 SPI 通信、仅显示功能所需的最低要求。 在这样的情形中、这是最好的起点。 我认为 msp430fr243x_euscia0_spi_09.c 示例最适合您的情况。  请在尝试进一步调试更复杂的项目之前尝试执行此操作。  

    此致、

    Caleb Overbay

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

    您是否在这方面取得了任何您想分享的进展?

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

    您好 Caleb、

    感谢您的提问。

    我在 TRF7960a 和 MSP430FR2633之间的通信方面取得了一些进展。 我上传了一张图片、其中显示了 SPI 信号的监控。 信号如下:

    1.黄色线表示从器件选择(SS*)信号。

    2.绿线表示数据时钟(DATA_CLK)信号。

    3.蓝色线表示接收(SOMI)信号。

    4、粉红色线表示发送(MOSI)信号。

    遗憾的是、我没有收到任何接收信号(SOMI)。 蓝线为0。 即使查看我的代码、RxDATA 也会为0。 除此接收信号(SOMI)外、一切都正常。

    您能不能指导我下一步要做什么才能获取接收信号? 尽管我尝试了 TRF7960A_06_2011中的示例。 但经过多次尝试,我不知道我做了什么错。

    我也上传了我的代码。 请查找附件。

    谢谢你。

    此致、

    Vivek Garg

    e2e.ti.com/.../BOx.tar.gz

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

    我在支持 TRF7960A 的应用团队工作、我将为您提供一个代码库、您可以从中进行开发、这将有助于解决您的许多问题、 我希望今天能做到这一点、因为我必须对它进行一些调整、但我还没有机会。 请再给我1-2个工作日、我将能够为您提供一个更可靠的代码库、以便使用 TRF7960A_06_2011项目中提供的代码库。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Jacobi、

    非常感谢您的帮助、我期待解决方案的出现。

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

    您好、Vivek、

    我在下面附加了一个与 TRF7960A 和 MSP430FR4133一同使用的项目。 此固件是最新的(与您当前拥有的 TRF7960A 项目不同)、组织有序、包含注释以及适用于已处理 SPI 通信的 TRF7960A 的全功能驱动程序。

    您应该能够轻松地将其移植到 FR2633、然后利用此项目创建您自己的 NFC 应用。

    e2e.ti.com/.../TRF7960A_5F00_FR4133_5F00_FRL_5F00_Reader.zip

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

    您好 Ralph、

    非常感谢您为我提供了代码。 我对微控制器 MSP430FR2633的配置进行了一些更改。 TRF7960A 和 MSP430FR2633之间的 SPI 通信正在工作、仅当我按下 MSP430FR2633评估板上的 RESET 按钮时、才会为我提供所需的值。 在不按下复位按钮的情况下、我无法在示波器上看到信号(没有触发)、要么只是显示高电平、如3.3伏或0伏。 那么、我还需要添加或更改其他内容吗? 我正在上传项目代码以获得更好的 understanding.e2e.ti.com/.../Nochmal.tar.gz

    非常感谢您的努力。

    此致、

    Vivek Garg

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

    您好、Vivek、

    这是预期的结果。 TRF7960A 不能自行运行。 它需要来自 MCU 的常数指令(在本例中为 FR2633)。 您需要使用 API 来触发器件搜索标签。

    如果 while (1)循环没有连接到 TRF7960A 的 API、那么您只能看到初始配置、其他什么也看不到。

    尝试 在 while (1)循环中使用 NFC_findISO15693Tag API、并查看是否可以使用它检测 ISO15693标签。