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.

[参考译文] CC1352R:SPI 从器件未初始化

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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1175621/cc1352r-spi-slave-not-intializing

器件型号:CC1352R

您好!

我正在尝试在 CC1352R 上初始化 SPI 从器件、但 SPI_OPEN 保持返回 NULL。 有人能告诉我我我出了什么问题吗? 请注意、我使用的是 SDK 3.20.0.68

   SPI_Params spi_params;

   //Create synchronization semaphore
   sem_init(&_g_spi_semaphore, 0, 0);

   SPI_Params_init(&spi_params);
   spi_params.frameFormat = SPI_POL0_PHA0;
   spi_params.mode = SPI_SLAVE;
   spi_params.transferCallbackFxn = spi_transfer_complete_callback;
   spi_params.transferMode = SPI_MODE_CALLBACK;
   _g_spi_slave_handle = SPI_open(Board_SPI_SLAVE, &spi_params);
   if(_g_spi_slave_handle == NULL)
   {
       while (1);
   }

来自 CC1352R1_LAUNCHXL.c 的 SPI 实例对象定义  

/*
 * NOTE: The SPI instances below can be used by the SD driver to communicate
 * with a SD card via SPI.  The 'defaultTxBufValue' fields below are set to 0xFF
 * to satisfy the SDSPI driver requirement.
 */
const SPICC26X2DMA_HWAttrs spiCC26X2DMAHWAttrs[CC1352R1_LAUNCHXL_SPICOUNT] = {
    {
        .baseAddr           = SSI0_BASE,
        .intNum             = INT_SSI0_COMB,
        .intPriority        = ~0,
        .swiPriority        = 0,
        .powerMngrId        = PowerCC26XX_PERIPH_SSI0,
        .defaultTxBufValue  = 0,
        .rxChannelBitMask   = 1<<UDMA_CHAN_SSI0_RX,
        .txChannelBitMask   = 1<<UDMA_CHAN_SSI0_TX,
        .mosiPin            = CC1352R1_LAUNCHXL_SPI0_MOSI,
        .misoPin            = CC1352R1_LAUNCHXL_SPI0_MISO,
        .clkPin             = CC1352R1_LAUNCHXL_SPI0_CLK,
        .csnPin             = CC1352R1_LAUNCHXL_SPI0_CSN,
        .minDmaTransferSize = 10
    },
    {
        .baseAddr           = SSI1_BASE,
        .intNum             = INT_SSI1_COMB,
        .intPriority        = ~0,
        .swiPriority        = 0,
        .powerMngrId        = PowerCC26XX_PERIPH_SSI1,
        .defaultTxBufValue  = 0xFF,
        .rxChannelBitMask   = 1<<UDMA_CHAN_SSI1_RX,
        .txChannelBitMask   = 1<<UDMA_CHAN_SSI1_TX,
        .mosiPin            = CC1352R1_LAUNCHXL_SPI1_MOSI,
        .misoPin            = CC1352R1_LAUNCHXL_SPI1_MISO,
        .clkPin             = CC1352R1_LAUNCHXL_SPI1_CLK,
        .csnPin             = CC1352R1_LAUNCHXL_SPI1_CSN,
        .minDmaTransferSize = 10
    }
};

/* SPI Board */
#define CC1352R1_LAUNCHXL_SPI0_MISO             IOID_29          /* RF1.20 */
#define CC1352R1_LAUNCHXL_SPI0_MOSI             IOID_28          /* RF1.18 */
#define CC1352R1_LAUNCHXL_SPI0_CLK              IOID_30         /* RF1.16 */
#define CC1352R1_LAUNCHXL_SPI0_CSN              IOID_26
#define CC1352R1_LAUNCHXL_SPI1_MISO             PIN_UNASSIGNED
#define CC1352R1_LAUNCHXL_SPI1_MOSI             PIN_UNASSIGNED
#define CC1352R1_LAUNCHXL_SPI1_CLK              PIN_UNASSIGNED
#define CC1352R1_LAUNCHXL_SPI1_CSN              PIN_UNASSIGNED

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

    您好、Matthew、

    与默认值相比、您似乎更改了 SPI 引脚:

    CC1352R1_LAUNCHXL.h

    /* SPI Board */
    #define CC1352R1_LAUNCHXL_SPI0_MISO             IOID_8          /* RF1.20 */
    #define CC1352R1_LAUNCHXL_SPI0_MOSI             IOID_9          /* RF1.18 */
    #define CC1352R1_LAUNCHXL_SPI0_CLK              IOID_10         /* RF1.16 */
    #define CC1352R1_LAUNCHXL_SPI0_CSN              IOID_11
    #define CC1352R1_LAUNCHXL_SPI1_MISO             PIN_UNASSIGNED
    #define CC1352R1_LAUNCHXL_SPI1_MOSI             PIN_UNASSIGNED
    #define CC1352R1_LAUNCHXL_SPI1_CLK              PIN_UNASSIGNED
    #define CC1352R1_LAUNCHXL_SPI1_CSN              PIN_UNASSIGNED

    谢谢、

    玛丽·H

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

    是的、不能重新映射它们?

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

    我还尝试保留默认引脚并在开发板上尝试代码。 运气差。

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

    您好、Matthew、

    您是否在 LaunchPad 上测试了运行示例?

    谢谢、

    玛丽·

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

    是的、当我在 LaunchPad 上运行代码时、该函数仍返回 NULL。

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

    您好、Matthew、

    也许,您在 SPI_open()之前没有调用 SPI_init()?

    -kel

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

    就是这样! 模块现在正在初始化、谢谢!

      根据所使用的电路板、除了更改 CC1352R1_LAUNCHXL_SPI0_MISO、CC1352R1_LAUNCHXL_SPI0_MOSI 和 CC1352R1_LAUNCHXL_SPI0_CLK 的引脚定义之外、是否还需要对示例代码进行任何其他更改?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="391424" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1175621/cc1352r-spi-slave-not-intializing/4444004 #4444004"]是否需要对示例代码进行任何其他更改,而不是更改 CC1352R1_LAUNCHXL_SPI0_MISO、 CC1352R1_LAUNCHXL_SPI0_MOSI 和 CC1352R1_LAUNCHXL_LAUNCH0_MOSI 的引脚定义[根据正在使用的报价单/SPICK]

    这是您自己需要了解的内容。 使用 SPI 时、我建议您使用逻辑分析仪探测引脚、以确保 SPI 通信符合预期。

    -kel