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/IWR6843:"SPI_TRANSFER"不在&quot 中工作;MmwDemo_mboxReadTask"

Guru**** 2540720 points
Other Parts Discussed in Thread: IWR6843, MMWAVEICBOOST

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/904133/ccs-iwr6843-spi_transfer-not-work-in-mmwdemo_mboxreadtask

器件型号:IWR6843
主题中讨论的其他器件: MMWAVEICBOOST

工具/软件:Code Composer Studio

您好、先生、

我已将"C:\ti\mmwave_automotive_toolbox_2_9_1\labs\lab0002_short_range_radar"演示代码迁移到 IWR6843、它运行正常。

但 SPI 功能存在一些问题。

我引用驱动程序 SPI 演示代码并合并到 MSS_main.c 中

当我在"main"或"SRR_MSS_initTask"中调用函数"Test_XWR1xxxWithXWR1xxx" 并选择 SPI 主控模式时。

它可以 通过示波器测量 SPI-CLK 和 SPI-MOSI。

但是、当我在 "MmwDemo_mboxReadTask"中调用函数"Test_XWR1xxxWithXWR1xxx"时、 根本没有 SPI-MOSI 信号。(SPI-CLK 仍然有效)

我在 "spi_transfer"之前检查了 SPI txBuf、它具有正常值。

请帮助澄清这些问题 A.S.A.P.

PS."Test_XWR1xxxWithXWR1xxx"是来自驱动程序/SPI 测试代码的函数。

BR

谢谢

弗兰克

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

    您好、先生、

    有更新吗?

    是否存在有关任务大小或任务优先级的根本原因?

    BR

    谢谢

    弗兰克

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

    问题得到解决

    谢谢

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

    您好、 

    您是如何解决该问题的? 我可以使 SPI_open 成功、但 SPI_transfer 未执行。 如果您能分享您的代码或告诉我解决该问题的方法、我将不胜感激。

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

    根本原因是我在另一个函数中重新定义了 GPIO 引脚。

    在我标记它之后、SPI 工作正常。

    供参考

    BR

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

    您好、Silkworm、

    1.您是指 GPIO 引脚复用设置吗?

    2.我修改了 SDK -> DRIVER->TEST 文件夹中的 SPI 代码。 它不包含任何 GPIO 设置。 您是否根据我的以下代码得出另一个原因?

    SPI_Params Params;
    SPI_Handle 句柄;
    
    SPI_PARAMS_INIT (params);
    
    params.mode = SPI_SLAVE;
    Params.U.slaveParams.dmaCfg.txDmaChanNum =1U;
    Params.U.slaveParams.dmaCfg.rxDmaChanNum =0U;
    
    /*启用 DMA 并设置 DMA 通道*/
    params.dmaEnable = 1;
    params.dmaHandle = gDmaHandle;
    
    params.frameFormat = SPI_POL0_PHA0;
    Params.pinMode = SPI_PINMODE_4PIN_CS;
    params.transferMode = SPI_MODE_BLOCKING;
    params.transferTimeout = SPI_WAIT_FOREVER;
    params.bitrate = 1000000;
    params.dataSize = 8;
    
    句柄= SPI_open (0、params);
    if (handle == NULL)
    {
    System_printf ("错误:无法打开 SPI 实例\n");
    返回;
    }
    System_printf ("调试:SPI 实例%p 已在从模式下成功重新打开\n"、句柄);
    
    SPI_Transaction 事务;
    
    /*配置数据传输*/
    transaction.count = spi_test_MSGLEN;
    transaction.txBuf =(void *) txBuf;
    transaction.rxBuf =(void *) rxBuf;
    //transaction.slaveIndex = 0U;
    
    /*开始数据传输*/
    if (SPI_TRANSFERY (Handle、&transaction)!= true)
    {
    System_printf ("unsuccessful SPI transfer");
    }
    
    否则
    {
    System_printf ("SPI transfer OK");
    } 

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

    我是说另一个 init 函数会影响 SPI 工作。

    在本例中是 CANFD 初始化。

    标记后、我的 SPI 函数正常工作、我也参考驱动程序测试代码。

    供参考

    BR

    谢谢

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

    以前、我也无法同时运行 UART 和 SPI。 但是、在更改了 SPI 的一些参数后、UART 可以通过 GUI 演示运行。 尽管我已经解决了这个问题、但我仍然不太清楚如何同时运行多个任务。 您是否知道如何使 SPI 和 CAN-FD 同时运行而无需标记其中一个?

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

    Hector、您好!

    如 MMWAVEICBOOST 承载卡上 的 MMWAVEICBOOST 和天线模块用户指南第2.7.6节中所述、SPI 和 CAN-FD 可在多路复用。CAN 连接器(J1和 J2)。 使用开关 S1只能选择一条路径。 因此、您不能同时使用它们在演示应用中的两个上输出数据。

    此致

    尼廷