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.

[参考译文] J721EXSOMXEVM:通过 SPI3 和 SPI6 发送数据只会发送一个字节

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1526811/j721exsomxevm-transmitting-data-over-spi3-and-spi6-only-transmits-one-byte

器件型号:J721EXSOMXEVM

工具/软件:

我从 TVALVM 板上移植到了带有 SOM 的完整 J721E 板、现在通过 GESI 板访问 MCSPI3 和 MCSPI6。 我将使用 MCU2_1、FreeRTOS、使用带 PDK 的 10.x TI SDK。

我观察到我可以成功地在每个上发送和接收、但在我尝试过的每种情况下、我只发送一个字节。 我希望整个信息都能传达出来。  

任务已启动:

void spi_test_master_cb(void *arg0, void *arg1)
{
    UART_printf("Starting SPI Master test. \n");
    TaskP_sleepInMsecs(1000);
    uint32_t  terminateXfer = 1;

    SPI_init();

    // == Set up the SPI test for receive ==
    SPI_Handle        spi;
    SPI_Params        spiParams;

    // Creates a callback semaphore
    SPI_osalSemParamsInit(&cbSemParams);
    cbSemParams.mode = SemaphoreP_Mode_BINARY;
    cbSem[0] = SPI_osalCreateBlockingLock(0, &cbSemParams);

    uint32_t instance = MCSPI3_CONFIG_IDX; 
    uint32_t domain = SPI_MCSPI_DOMAIN_MAIN;

    // MCSPI_socInit();

    SPI_HWAttrs spi_cfg;
    SPI_socGetInitCfg(domain, instance, &spi_cfg);
    spi_cfg.enableIntr = BFALSE; 
    spi_cfg.edmaHandle = NULL;
    spi_cfg.dmaMode    = BFALSE;

    /* Set the SPI init configurations */
    spi_cfg.chNum = 0;
    spi_cfg.chnCfg[0].dataLineCommMode = MCSPI_DATA_LINE_COMM_MODE_6;
    spi_cfg.chnCfg[0].tcs = MCSPI_CS_TCS_0PNT5_CLK;
    spi_cfg.chnCfg[0].trMode = MCSPI_TX_ONLY_MODE;

    /* Set the SPI init configurations */
    SPI_socSetInitCfg(domain, instance, &spi_cfg);

    /* Initialize SPI handle */
    SPI_Params_init(&spiParams);
    spiParams.mode = SPI_MASTER;
    spiParams.transferMode = SPI_MODE_BLOCKING;
    spiParams.transferTimeout = SemaphoreP_WAIT_FOREVER;
    spiParams.frameFormat = SPI_POL1_PHA0;
    spiParams.dataSize = 8U; // 8 bits
    spiParams.bitRate = 468750;

    spi = SPI_open(domain, instance, &spiParams);

    if (NULL == spi)
    {
        UART_printf("Error initializing SPI\n");
        return;
    }

    uint32_t num_xfers = 0;
    uint32_t xfer_len = SPI_MSG_LENGTH; //8

    Osal_delay(500);

    // Attempt a transfer
    // uintptr_t addrMasterRxBuf = (uintptr_t)masterRxBuffer;
    uintptr_t addrMasterTxBuf = (uintptr_t)masterTxBuffer;
    bool transferOK = true;

    // memset(masterRxBuffer, 0, sizeof(masterRxBuffer));
    memset(masterTxBuffer, 0, sizeof(masterTxBuffer));

    while (1)
    {

        memcpy(masterTxBuffer, "TEST1234", 8);

        SPI_Transaction   transaction;
        transaction.count = xfer_len;
        transaction.arg = (void *)&terminateXfer;
        transaction.txBuf = (void *)addrMasterTxBuf;
        transaction.rxBuf = NULL; // (void *)addrMasterRxBuf;
        
        transferOK = SPI_transfer((SPI_Handle)spi, &transaction);
        if (!transferOK)
        {
            UART_printf("Error in SPI transfer\n");
        }
        else
        {   
            UART_printf("SPI transfer successful.\n");

        }
        Osal_delay(10);

    }
}

我发现如果我启用 Turbo 模式、我会得到两个字节、但我永远不会收到整个消息。 此外、如果我在 SPI_Params 结构中更改“dataSize",“,它、它似乎扩展到两个字节、但对于较大的消息来说并不现实。

其他我做过调整但没有看到变化/无法正常工作的事情:

*增加比特率。

*调整 SPI_HWAttrs 中的 txTrigLvl。

有什么想法我还应该尝试什么,或者你看到这里的设置是不正确的吗?

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

    您好:

    您是否正在使用自定义 SPI 驱动程序? 哪个 SDK 也是 10.0 或 10.1?

    我只看到 SPI6 使用了 MCSPI_TX_ONLY_mode。您能更清楚地说明您的用例吗? SPI3 是在此处向 SPI6 发送数据、还是在此处向 SPI6 发送数据?

    此致

    Tarun Mukesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否使用自定义 SPI 驱动程序? 哪个 SDK 也是 10.0 或 10.1?

    我将使用 PDK 中的 SPI 驱动程序。 SDK 版本为 10.01.00.04 和 PDK 10.01.00.25。

    我只看到 SPI6 使用了 MCSPI_TX_ONLY_mode。您能更清楚地解释您的用例吗? SPI3 是在此处向 SPI6 发送数据、还是在此处向 SPI6 发送数据?

    我目前将 SPI3 直接连接到示波器。 目前不对 SPI6 执行任何操作。

    我在这里包含 SPI6 的唯一原因是表明这不仅发生在 SPI3 上。 如果我可以轻松访问这些 SPI、我可能会与其他 SPI 进行演示。 在任何一种情况下、我只使用一个 SPI(无论是 3 还是 6)连接到示波器。

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

    作为一个实验、我尝试了相同的代码(除了将其更改为 SPI5)并在 TVAL4VM 板上运行它。 我看到有 3 个字节。 它仍然不是我期望的全部 8 个字节、但有所不同。

    这很奇怪。 我之前知道、当我使用主板作为从板进行发送和接收测试时、我会收到整个消息、但当我只执行 TX 时、它不会发送整个消息。 这里一定有我遗漏的东西来理解。 当然、并非每个 TI 产品都有故障。

    编辑:再次尝试。 在 TVAL4VM 上从 MCU2_1 更改为 MCU2_0、恢复为一个字节。 某项操作正在提前终止传输。

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

    作为一个实验、我尝试了相同的代码(除了将其更改为 SPI5)并在 TVAL4VM 板上运行它。 我看到有 3 个字节。 它仍然不是我期望的全部 8 个字节、但有所不同。

    这很奇怪。 我之前知道、当我使用主板作为从板进行发送和接收测试时、我会收到整个消息、但当我只执行 TX 时、它不会发送整个消息。 这里一定有我遗漏的东西来理解。 当然、并非每个 TI 产品都有故障。

    编辑:再次尝试。 在 TVAL4VM 上从 MCU2_1 更改为 MCU2_0、恢复为一个字节。 某项操作正在提前终止传输。

    编辑 2:我将比特率更改为 12MHz。 我看到了完整的消息、似乎暗示了正在发生的事情:

    第一个字节和其余字节之间有很大的间隙。 不知道什么是延迟它,但在较低的比特率,这一差距是它被切断的地方。 是的、在较低的比特率下、消息的其余部分肯定不会传输。 我已经通过消除 Δ V OSAL_DELAY (`);`μ s 并看到它反复重复一个字节来验证这一点。

    请务必了解、较高的比特率不是此处的解决方案。

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

    因此、在 SPI_HWAttrs 中禁用 FIFO (.enableFIFO = 0) 似乎允许通过完整的预期数据、因此问题似乎与 FIFO 有关。 现在的问题是怎么来的?

    纵观底层、我看到 PDK 中的 spi_v1.c 中将完整的 MCSPI_FULL_FIFO_SIZE 用于 FIFO 大小、然后将 MCSPI_xferSetup_v1 () 中的 txTrigLv 覆盖为数据大小(或事务->count)。 到目前为止、似乎就是这样。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid=“652899" url="“ url="~“~/support/processors-group/processors/f/processors-forum/1526811/j721exsomxevm-transmitting-data-over-spi3-and-spi6-only-transmits-one-byte/5871604 #5871604“]

    作为一个实验、我尝试了相同的代码(除了将其更改为 SPI5)并在 TVAL4VM 板上运行它。 我看到有 3 个字节。 它仍然不是我期望的全部 8 个字节、但有所不同。

    这很奇怪。 我之前知道、当我使用主板作为从板进行发送和接收测试时、我会收到整个消息、但当我只执行 TX 时、它不会发送整个消息。 这里一定有我遗漏的东西来理解。 当然、并非每个 TI 产品都有故障。

    编辑:再次尝试。 在 TVAL4VM 上从 MCU2_1 更改为 MCU2_0、恢复为一个字节。 某项操作正在提前终止传输。

    [/报价]

    通过更改内核和 SPI 实例、驱动程序将不会有不同的行为。 我预计问题在其他地方。

    您要在消息中传输多少字节? 您是否也在使用带 DMA 的 SPI? 如果是这样,那么你的消息应该是 trglvl 的倍数。

    此致

    Tarun Mukesh

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

    这个消息中有 8 个字节、但我计划将来做更多工作。

    您是否也在使用带 DMA 的 SPI?

    无 DMA。

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

    您好、Tyler、

    如果您不使用 DMA、那么 FIFO 不应该有任何问题。

    根据您的意见、这对我来说非常不清楚、什么可能是问题?

    对于 Tx 和 Rx 模式、您可以看到完整消息、但在仅 Tx 模式下会出现以下问题

    1) SPI3 您只能在 MCU2_1 上传输 8 个字节中的 1 个字节、从而启用涡轮模式、可以传输 8 个字节中的 2 个字节。

    2) SPI5、您可以在 MCU2_1 上从 8 个字节中传输 3 个字节

    3) SPI5 同样、您能够在 MCU2_0 上仅传输 1 个字节(8 个字节)

    4) 您将比特率更改为 12MHz、然后可以看到完整的消息、但第一个消息字节和后一个消息字节之间存在间隙。

    5) 如果禁用 FIFO、则显示完整消息、没有任何间隙。

     如果您在 MCU2_1 上进行一个场景 SPI3 并与我共享内核寄存器转储以进行分析、那会很好。

    纵观底层、我看到 PDK 中的 spi_v1.c 中 对 FIFO 大小使用完整的 MCSPI_FULL_FIFO_SIZE、然后将 MCSPI_xferSetup_v1() 中的 TrigtxLv 覆盖 为数据大小(或事务->count)。 到目前为止、似乎就是这样。

    如果仅 Tx 模式的事务消息字节小于 FIFO_FULL_SIZE、则触发电平将根据本例中的事务字节 (8) 更新。 这应该可以、因为只有触发器才会发生、以发送要传输的字节。

    是否从其他内核对这些实例进行任何并行访问? 如果没有、我不知道为什么会出现这么多的故障情况。   

    一项检查是 SPI3 默认作为从器件连接到 MCU_SPI1

    请参阅 https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1128170/tda4vm-internal-spi-communication-between-spi3-and-spi6-not-working

    此致

    Tarun Mukesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    对于 Tx 和 Rx 模式、您可以看到完整消息、但在仅 Tx 模式下会遇到以下问题

    我还没有将 Rx 模式引入进来。 但这是一个完全不同的主题。

    是否有任何从其他内核并行访问这些实例?

    不可以。mcu1_0 运行 SciServer、只在 MCU2_1 上运行代码。

    一项检查是 SPI3 默认作为从器件连接到 MCU_SPI1

    我想我可以强迫它  

    CSL_REG32_WR(CSL_MCU_CTRL_MMR0_CFG0_BASE +
        CSL_MCU_CTRL_MMR_CFG0_MCU_SPI1_CTRL,
            CSL_MCU_CTRL_MMR_CFG0_MCU_SPI1_CTRL_SPI1_LINKDIS_MASK);
    

    但这样做是无效的。

    我借助 SPI3 恢复到上述原始情况、并获得了内核寄存器转储、但不知道这可能有何帮助:

    e2e.ti.com/.../r5f_5F00_mcu2_5F00_1.txt

    我发现、如果我将 transferMode 置于 SPI_MODE_Callback 中、它就会按照我的需要发挥作用。 让它处于阻塞模式似乎是输出格式错误的说法似乎很奇怪。

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

    在上面、我尝试设置 SPI1_LINKDIS 标志、但似乎尚未设置。 我在前后添加了断点、看不到值变化。

    这毫无意义。 我可以清楚地看到存储器地址为 0x40F04060、并且我对其执行的任何写入代码都不起作用。

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

    您好:

    我想我可以用 
    强制它

    在上面、我尝试设置 SPI1_LINKDIS 标志、但似乎尚未设置。 我在前后添加了断点、看不到值变化。

    这毫无意义。 我可以清楚地看到存储器地址为 0x40F04060、并且我对其执行的任何写入代码都不起作用。

    [/报价]

    这是一个 MMR 寄存器,你不能直接写没有解锁 MMR 寄存器的密钥.

    您需要执行以下操作、

    首先使用 KEY 解锁寄存器所在的 MMR 分区、然后写入寄存器。  

        /* Unlock lock key registers for Partition 1 */
        /* write Partition Lock Key 0 Register */
        CSL_REG32_WR(CSL_MCU_CTRL_MMR0_CFG0_BASE + CSL_MCU_CTRL_MMR_CFG0_LOCK1_KICK0, 0x68EF3490);
        /* write Partition Lock Key 1 Register */
        CSL_REG32_WR(CSL_MCU_CTRL_MMR0_CFG0_BASE + CSL_MCU_CTRL_MMR_CFG0_LOCK1_KICK1, 0xD172BC5A);
        /* Check for unlock */
        regVal = CSL_REG32_RD(CSL_MCU_CTRL_MMR0_CFG0_BASE + CSL_MCU_CTRL_MMR_CFG0_LOCK1_KICK0);
        while ((regVal & 0x1) != 0x1U)
        {
            regVal = CSL_REG32_RD(CSL_MCU_CTRL_MMR0_CFG0_BASE + CSL_MCU_CTRL_MMR_CFG0_LOCK1_KICK0);
        }
    
        /* Enable MCU_MCSPI1 and MCSPI3 independently pin out */
        CSL_REG32_WR(CSL_MCU_CTRL_MMR0_CFG0_BASE + CSL_MCU_CTRL_MMR_CFG0_MCU_SPI1_CTRL, CSL_MCU_CTRL_MMR_CFG0_MCU_SPI1_CTRL_SPI1_LINKDIS_MASK);
    

    我通过 SPI3 回到上面的原始情况并获得了内核寄存器转储、尽管不知道这有何帮助:

    您正在共享 R1 至 R14 寄存器、这些寄存器没有任何帮助。 我需要 SPI 的核心寄存器、请查看下面的屏幕截图

    此致

    Tarun Mukesh

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

    此外

    我发现、如果我将 transferMode 置于 spi_mode_callback 中、它会按照我的需要运行。 让它处于阻塞模式似乎是输出格式错误。

    您是否认为在 SPI3 上一切都能正常运行 SPI_MODE_CALLBACK?如果是这样、上述配置将只正确。

    此致

    Tarun Mukesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    首先使用 KEY 解锁寄存器所在的 MMR 分区、然后写入寄存器。  [/报价]

    明白了! 我看到这种情况发生了。 没有变化。

    您正在共享 R1 到 R14 寄存器、这些寄存器没有任何帮助。 我需要 SPI
    的核心寄存器

    啊,对不起的困惑。 这应该是:

    e2e.ti.com/.../r5f_5F00_mcu2_5F00_1_5F00_mcspi3.txt

    我隔离了代码、以便我可以将全部内容与您共享。

    e2e.ti.com/.../8015.main.c

    e2e.ti.com/.../3730.CMakeLists.txt

    您是否认为 spi_mode_callback 在 SPI3 上都可以正常工作?如果可以、那么上述配置仅是正确的。

    您能解释一下吗? 仅对回调模式正确? 还是您说配置已经正确?

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

    您好:

    我会帮您转储寄存器、然后返回。

    您能澄清一下吗? 仅对回调模式正确?

    我在 SPI_MODE_CALLBACK 中问您、 对于 SPI3、一切都正常或不正常?

    此致

    Tarun Mukesh

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在 spi_mode_callback 中询问您 、对于 SPI3、一切都正常还是不正常?

    是的、如果处于回调模式、一切似乎都正常工作、但不是处于阻塞模式。

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

    侧面问题、但可能是相关问题、在那篇文章中、他们使用的是通道 1 而不是 0 进行配置。 我想这是为了让 CS1 用于片选吗? 到达事物的 Rx 部分时、我很高兴能确定。

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

    您好:

    是的、如果处于回调模式、但没有阻塞、一切似乎都可以正常工作。

    这对我来说似乎更奇怪。 在此模式下、它将阻塞、直至成功完成传输、而回调模式则不会。

    虽然可能有相关问题、但在这篇文章中、他们使用的是通道 1、而不是 0。 我想这是为了让 CS1 用于片选吗? 我很高兴能确定何时进入了 Rx 部分。

    任何通道 CS1 或 CS0 都应该正常。它们仍在使用阻塞模式、但处于 TxRx 模式。 您是否仍可以保留阻塞模式并尝试使用 TxRx 模式?

    此致

    Tarun Mukesh

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

    因此、我在注意到我根本没有得到芯片选择后、深入探讨了芯片选择的工作原理。 实际上、片选看起来与通道对齐(通道 0 为 CS0、通道 1 为 CS1 等)。 当我开始对所有内容使用通道 1 时、会出现芯片选择、消息的整个 8 个字节也是如此!

    您是否仍可以保留阻塞模式并尝试使用 TxRx 模式?

    已尝试此操作、并且无论是仅 TX 模式还是 TX 与 RX 模式都无效。

    ——

    我认为 CS0 不会与 GESI 板进行引脚多路复用。 我必须进入并针对我们的情况对其进行 pinmux 以重新构建电路板库、或使用不同的芯片选择。 因为它不是引脚多路复用出来的、所以它将这个球用于其他东西、当 SPI 代码尝试切换芯片选择时、它会有某种“抖动“、从而切断消息或延迟消息的其余部分。

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

    您好、Tyler、

    正如您提到的,使用 TI EVM +GESI 板,我在 GESI 原理图中进行了检查。  

    如果将此 PIN 重新配置为任何其他用途、则可能会出现错误行为。

    因此、我认为 CS0 并未针对 GESI 板进行引脚多路复用。 我必须进入并针对我们的情况对其进行 pinmux 以重新构建电路板库、或使用不同的芯片选择。 因为它不是引脚多路复用的,它是使用这个球的其他东西,当 SPI 代码试图切换芯片选择,它会有某种“ stutter“,切断消息或延迟消息的其余部分.[/报价]

    并非每个引脚都可以在 TI 板中探测出来。 如果您能够使用 SPI3_CS1、请继续使用它。 它与 CS0 具有相同的功能。

    是的、可能已经为某些其他引脚配置了与 SPI3_CS0 相关的焊球且这些焊球可供使用。

    当我开始使用通道 1 进行所有操作时、芯片选择就会出现、消息的整个 8 个字节也会出现!

    这很好理解、这确认 PDK 驱动程序没有问题。

    此致

    Tarun Mukesh

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、可能已经为某些其他引脚配置了与 SPI3_CS0 相关的焊球、并且这些焊球可以使用。

    在这种情况下、是否有可能通过这些 SPI 接收?  

    在 TRM 中:  

    12.1.5.1.2 MCSPI 不支持的特性
    该系列器件不支持以下特性:
    ...
    •在从模式下、仅使用通道 0

    编辑:我在 ti/CSL 代码中找到一个设置 MCSPI_CHCONF_0.SPIENSLV 的调用、如下所示:

    McSPISetSlaveChipSel (spi_cfg.baseAddr、spi_cfg.chNum、1);

    这似乎适用于将 CS1 更改为 1、但这是否符合预期?

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

    您好:

    并非 SPI 中的所有引脚都被探测出来,并且可以通过 TI EVM 进行测试。  

    在这种情况下、是否有可能通过这些 SPI 接收?  

    在 TRM 中:  

    12.1.5.1.2 MCSPI 不支持的特性
    该系列器件不支持以下特性:
    ...
    •在从模式下、仅使用通道 0

    [/报价]

    在您的情况下 SPI3 是正确的主模式? 它是传输 Tx 的时钟和数据的一个。

    I 当前有 SPI3 直接连接到示波器。 [/报价]

    您正在将 SPI3 连接到示波器并将数据作为主器件从 SPI3 发送到示波器。您是否更改了设置?

    此致

    Tarun Mukesh

    [/quote]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    在您的情况下、SPI3 正处于主模式?
    您是否更改了设置?

    设置未更改。 抱歉、在这里、我可能会提前尝试了解 TI 在此处实现的 SPI。 我对 RX 的问题可能应该在另一个主题中讨论。  

    至于我的 TX 问题、我认为已经解决。 谢谢你。