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.

[参考译文] TDA2EXEVM:与另一个 SPI 从器件通信

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1000532/tda2exevm-communication-with-another-spi-slave

器件型号:TDA2EXEVM
主题中讨论的其他器件:TDA2

您好!


您能否给出一些有关如何共享 TDA2 SPI 主设备(有4个可作为主设备的 SPI 模块、其中每个模块支持4个从设备(4个 CS))的说明? Utils_mcspi.c 中有一个 API、我将其作为参考。
启动时、雷达 SDK 使用通道0 (CS0)初始化4个 SPI 实例、以设置与4个附加 AWR 的 SPI 通信。 我的问题如下:
1.为什么 在 AWR Init 期间无需调用 Utils_mcspiOpen()?
2.为什么 静态 Utils_mcspiDeviceCommObj gUtils_mcspiDeviceCommObj[utils_MCSPI_NUM_DEVICS];其中 utils_MCSPI_NUM_DEVICES = 8? 我认为只有4个 SPI 模块。
3. 在我使用 CS1共享 SPI 模数0以与从器   件通信的应用中,我调用 Utils_mcspiOpen(),指定 deviceId = 0、mcSpiDevInstNum = 0、mcSpiChannelNum = 1。 这会导致启动期间崩溃。 据说 FIFO 已被使用。
调用 Utils_mcspiOpen()时的想法是 因为 SPI 4实例已在 AWR 设置期间初始化。 我假设我需要在调用 Utils_mcspiRead ()/Write ()之前调用 Open()。

提前感谢您、

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

    您好!

    每个 McSPI 最多可支持4个主器件、但仅支持1个从器件。

    配置需要 SPI、只要在雷达配置步骤之前调用、就可以。

    utils_MCSPI_NUM_DEVICES  只是一个数字、用于限制可连接到 SPIx 的外部器件总数、而不是 SPI 模块的数量。 这只是我们选择的一个数字。 作为主器件的每个 McSPI 最多可连接4个器件。

    设备 ID 是雷达设备的索引,而不是 mcspi 实例 ID。 如果 McSPI1上已经有一个具有 CS0的雷达(mcspi 实例0)、则这将是 deviceId =1。

    4._Init()然后_open()获取句柄。 之后、使用句柄调用读取/写入。

    此致、

    斯坦利  

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

    您好、Stanley、
    感谢您的说明。 得到了进一步的发展。 我们需要更加明确一点才能使其正常工作。
    1.  Utils_mcspiOpen()中的 mcSpiChannelNum 是否与 ChipSelect 相同? 如果没有、我是否需要在 mcSpi 模块上指定 CS#?
    2.我现在调用 Utils_mcspiInit (1)、然后 调用 Utils_mcspiOpen (1、0、1、  edmaHandle) 以获取有效的 SPI 句柄。 这导致了 A  
    UTILS_MCSPI:McSPI GIO 创建失败!! 在控制台上。 发生故障。
    看起来我们仍然 不完全 了解 API 的使用情况。
    谢谢、

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

    有什么建议吗?

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

    您好、Asher、

    我不确定我是否遵循您在这里尝试实施的内容。

    您是否在 SDK 中使用雷达驱动器?

    如果是~、则在 μ C/pdk_xx_xx_xx_xx/packages/ti/drv/vps/src/devices/radar_ar12xx/src/bspdrv_ar12xxMcspiCfgPrivv.c.中实现雷达 SPI 驱动程序

    在用例中只调用 Utils_mcspiInit(),以将 McSPI instace 添加到 GIO 器件并配置交叉开关以实现中断。

    稍后、该实例将由 PDK 中的雷达 SPI 驱动程序打开。

    ~配置雷达、我们使用来自 RL_sensor.c 的雷达 API、单位为 μ C/mmwave_DFP/ti/control/mmwavelink/src/rL_sensor.c、其中回调连接到雷达 SPI 驱动器。

    我们不会直接从用例中调用 McSPI API、因为 SPI 协议由雷达链路层实现。

    此致、
    斯坦利

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

    此外 、请注意 Utils_mcspiInit (uint32 mcSpiInstNum)、其中 mcSpiInstNum = 0 (McSPI1)、1 (McSPI2)、2……

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

    您好、Stanley、

    很抱歉造成混淆。 让我再次重新开始。

    我们希望使用(配置) TDA2上的4个 mcSPI 模块中的一个与 SPI 从器件进行通信。 请提供有关如何完成此操作的步骤。

    我们浏览了雷达 SDK 中的 utils_mcspi.c、认为这是我们应该用作 awr12xx 配置的 API、它正在使用该 utils API 来配置 AWR。  

     我们阅读 TDA2数据表、其中指出每个 MCSPI 模块可以支持4个从器件。 情况不是这样吗? 我想您简要地说、"每个 McSPI 最多可支持4个主器件、但仅支持1个从器件"。 这是否意味着我们无法使用 SPI 通过 SPI 与外部器件通信?

    如果为 true、则关闭大小写。 SPI 不是解决方案。 如果可以使用 mcSPI 模块、请提供有关如何使用芯片选择将 SPI 从器件添加到 mcSPI 模块的说明、了解每个 mcSPI 模块是每个从器件 AWR 的主器件。

    谢谢、

    ——Khai

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="379156" URL"~/support/processors-group/processors/f/processors-forum/1000532/tda2exevm-communication-with-another-spi-slave/3735426 #3735426">我们 阅读了 TDA2数据表、其中指出每个 MCSPI 模块可以支持4个从器件。 这不是吗?

    我的意思是、当 McSPI 是主器件时、它最多可以支持4个具有4个 CSn 的从器件。

    因此、是的、作为主器件的每个 McSPI 模块都可以连接到4个从器件。

    您连接到哪个外部 SPI 从器件? 雷达或其他物体?

    如果是雷达、您为什么不使用我们的雷达 SPI 驱动器?

    此致、
    斯坦利

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

    另一个 SPI 从器件。 请提供有关如何配置的分步说明。 我已经尝试了 Uitls_mcspi.c API。 如果您返回我的以下问题:

    感谢您的说明。 得到了进一步的发展。 我们需要更加明确一点才能使其正常工作。
    1.  Utils_mcspiOpen()中的 mcSpiChannelNum 是否与 ChipSelect 相同? 如果没有、我是否需要在 mcSpi 模块上指定 CS#?
    2.我现在调用 Utils_mcspiInit (1)、然后 调用 Utils_mcspiOpen (1、0、1、  edmaHandle) 以获取有效的 SPI 句柄。 这导致了 A  
    UTILS_MCSPI:McSPI GIO 创建失败!! 在控制台上。 发生故障。
    看起来我们仍然 不完全 了解 API 的使用情况。
    谢谢、

    ——Khai

    你给了我一些提示

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

    您好、Stanley、

    只想关注这个主题。 您能不能提供建议...

    SDK 中的当前设置是每个 mcSPI 模块都是处理器端的主器件、AWR 作为从器件。 因此、4个 mcSPI 模块与4个 AWR 从器件配对。 该部分我不必执行任何操作。 一切都在正常工作。

    现在、我需要将另一个 SPI 从器件添加到4个主器件中的1个。 因此、我们需要在主器件侧配置 ChipSelect。 如何通过 Utils_mcSPI.c API 实现这一点实际上是我的问题。 我在没有运气的情况下尝试了我上面描述的几件事。

    如果您有答案、请在此处说明、以便我可以尝试一下。 对于这样的情况、conf 调用的效率会大大提高。

    谢谢、

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

    您好!

    好的。 现在更有意义了。

    1.您不必 再次调用 Utils_mcspiInit (instId)、因为每个实例只需要初始化一次。 由于您正在使用雷达使用的实例之一,因此 它已在 ChainCommon_ar12xxInit()中调用。 确保仅在 ChainCommon_ar12xxInit()之后打开 SPI 通道。

    2.每个 McSPI 实例只能在一个通道上启用 FIFO 模式。 utils_mcspiOpen()在其范围内跟踪它。 但是,雷达驱动程序在 Utils_mscpioOpen()之外的自身打开调用中启用 FIFO 模式。 要使用例正常工作,必须在 Utils_mcspiOpen()中禁用 FIFO 模式。

    您可以将 Utils_mcspiOpen()中的以下行更改为1以禁用 FIFO 模式。

    static UInt32 fifoEnabled[UTILS_MCSPI_NUM_MCSPI_INST] = {1U, 1U, 1U, 1U};

    请尝试一下、看看它是否起作用。

    此致、
    斯坦利