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.

[参考译文] LAUNCHXL-CC1352P:如何在 LAUNCHXL-CC1352P 中使用2个 SPI 通信?

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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1033263/launchxl-cc1352p-how-to-use-2-spi-communications-in-launchxl-cc1352p

器件型号:LAUNCHXL-CC1352P
Thread 中讨论的其他部件:CC2652PSysConfig

您好!

我们使用  LAUNCHXL-CC1352P 在 CC2652P 中开发应用。

我们的项目需要两个 SPI 通信。 如何在 SysConfig 工具中实现自定义 SPI 配置?

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

    我假设您可以使用相同的 SPI 接口、但两个不同的 GPO 引脚作为两个不同 SPI 从器件的 CS 引脚。

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

    不确定两个 SPI 通信的含义。

    我需要一条 SPI 总线、但需要两个不同的 CSn 信号、您可以将 sysconf 中的 SPI 配置为3线 SPI、然后让应用控制两个不同的 CSn (每个需要与之通信的外设一个)。

    如果您需要使用两个 SPI 外设、因为您有两个单独的 SPI 总线、只需在 sysconf 中添加两个 SPI 并为您要使用的引脚配置它们。

    示例代码:

    #define SPI_MSG_LENGTH  (3)
    
    unsigned char masterRxBuffer0[SPI_MSG_LENGTH];
    unsigned char masterTxBuffer0[SPI_MSG_LENGTH] = {0x55, 0xff, 0x55};
    
    unsigned char masterRxBuffer1[SPI_MSG_LENGTH];
    unsigned char masterTxBuffer1[SPI_MSG_LENGTH] = {0xff, 0x55, 0xff};
    
    void *masterThread(void *arg0)
    {
        SPI_Handle      spi0;
        SPI_Handle      spi1;
    
        SPI_Params      spiParams;
        SPI_Transaction transaction0;
        SPI_Transaction transaction1;
    
        /* Open SPI as master (default) */
        SPI_Params_init(&spiParams);
        spiParams.frameFormat = SPI_POL0_PHA1;
        spiParams.bitRate = 4000000;
    
        spi0 = SPI_open(CONFIG_SPI_0, &spiParams);
        spi1 = SPI_open(CONFIG_SPI_1, &spiParams);
    
        //memset((void *) masterRxBuffer, 0, SPI_MSG_LENGTH);
        transaction0.count = SPI_MSG_LENGTH;
        transaction0.txBuf = (void *) masterTxBuffer0;
        transaction0.rxBuf = (void *) masterRxBuffer0;
    
        transaction1.count = SPI_MSG_LENGTH;
        transaction1.txBuf = (void *) masterTxBuffer1;
        transaction1.rxBuf = (void *) masterRxBuffer1;
    
        while(1)
        {
            SPI_transfer(spi0, &transaction0);
            SPI_transfer(spi1, &transaction1);
        }
    }

    Siri