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.

[参考译文] RTOS/TDA2HV:需要在用例模式下运行示例代码

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/651610/rtos-tda2hv-need-example-code-to-run-in-the-use-case-mode

器件型号:TDA2HV
Thread 中讨论的其他器件: SYSBIOSTDA2

工具/软件:TI-RTOS

大家好、

我们正在开发 ADAS 的 TDA2x 平台。我们使用 TDA2HV 处理器设计了定制板。我们使用 VISION SDK 进行开发。我们使用 LVDS_VIP_multicam_view 用例。 我们希望在我们的用例中使用 SPI 的数据。对于 TI 提供的 utils_Mcspi.c 和 utils_MCspi.h 文件中的 SPI 接口、该文件仅包含 SPI 初始化函数。因此、我们如何写入和读取 SPI 发送和接收缓冲区。

我的查询是、
1) 1)您能否共享我们可以在用例中运行的 SPI 的保存示例代码?

如果您需要我们方面的更多信息、请告诉我。

谢谢、
Parth Modi

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

    drivers 文件夹包含 mcspi 主从应用程序、您可以参考该应用程序。
    如果您指定要使用的 VSDK 版本、我可以帮助您找到确切的路径。
    谢谢。

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

    感谢您的快速支持。

    我们使用的是 Vision_SDK 3.0。 我们希望在 LVDS 用例中使用此数据。所以、您能否提供 SPI init、SPI read 和 writeI 的函数调用?

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

    此处显示了满足您要求的 mcspi 示例:TI_component-\drivers\pdk_01_07_00_16\packages/ti\drv\bsp_lld\mcspi\examples\mcspi_spip1tospia2。
    SYSBIOS mcspi 驱动程序基于 GIO 模型。 对于 init、您可以使用 GIO_create API。
    API GIO_Issue 用于将缓冲区提交到驱动程序、而 GIO_REBUG则 用于从驱动程序获取缓冲区。

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

    您好、Rishabh、

    根据您的建议、我了解了 MCSPI 示例代码、并制作了演示代码来测试我们一侧的 MCSPI1。 我运行此代码、 并使所有初始化函数 通过、但代码停留在 GIO_REBLEY (mcspiHandle、(ptr *)&dataparam、NULL、NULL);。 我测量了 SPI 时钟和 SPI_Cs0线路、以确认 SPI 初始化是否正常工作、但不工作。 我无法将任何 SPI 时钟和 cs0线路置为低电平。

    我为所有操作调用了 start_spi_sample_new (void)。 我随附了我的代码以供您参考。

    我在下面有一些有关这方面的问题、

    1) 1)流程中是否存在任何错误?

    2) 2)您能否分享您对 使用此代码的建议?

    如果您需要我们方面的更多信息、请告诉我。

    谢谢、

    Parth Modi

    e2e.ti.com/.../mcspiSample_5F00_io.c

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

    应使用 GIO_create 首先创建 MCSPI 句柄。
    然后使用 GIO_Issue 发出空缓冲区。
    则只能回收缓冲区。
    您能否修改 start_spi_sample_new 并尝试。

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

    您好、Rishabh、

    根据您的建议、我检查代码、下面是我的观察结果、

    CREAT Steam 函数已调用 Gio_Create()函数。

    然后、我们将调用 GIO_Issue、

    我们还检查了 MCSPI 处理程序的返回值、该值不为空。

    在调试期间、我观察到在主要函数中 、GIO_Issue 会失败、并出现以下错误。

    "无法发出空缓冲区以进行流式传输"

    我将附上我的调试日志和示例应用程序供您参考。

    请提供您的意见以解决 此问题。

    谢谢、

    Parth Modi

      e2e.ti.com/.../3146.mcspiSample_5F00_io.c

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

    您好 Parth、

    我已要求 MCSPI 专家进一步帮助您。

    此致、

    Rishabh

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

    感谢您的快速响应。

    我正在认真地处理这一问题。
    非常感谢您能尽快为我们提供帮助。

    如果您需要我们方面的任何信息、请告知我们。

    谢谢、

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

    从 VISION SDK 代码调用时、不应执行 EDMA3_init、请使用 SDK 实用程序函数获取 EDMA 句柄并使用它。

    您能否检查 GIO_Issue 函数的返回值并告知我进行进一步分析?

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

    Prasad、您好!

    根据您的建议,我们使用了实用程序功能,但 Utils_dmaInit()失败,并显示错误"utils:dma: utils_dmaInit() for instance 0... Failed (-128)(失败(-128))"。

    我们发现 故障重新发生的原因是我们在下面的两个函数中进行了注释。

    /*RetVal += BspUtils_memInit();

      IF (BSP_Sok!= RetVal)

      {

        GT_0TRACE (BspAppTrace、GT_ERR、"Error:App MEM Utils Init failed!!!\r\n\r\n);

      }

      RetVal += BspUtils_prfInit();

      IF (BSP_Sok!= RetVal)

      {

        GT_0TRACE (BspAppTrace、GT_ERR、"Error:App PRF Utils 初始化失败!!!\r\n");

      }*/

    如果我们尝试取消注释此函数、则在代码编译期间会出现以下错误

     程序将不能放入可用的内存中。  带对齐的照射行程放置

     “Group_1”大小为0xf816696的部分失败。  可用存储器范围:

     IPU1_0_DATA_MEM 大小:0xb00000  未使用:0x70cea  最大孔:0x70cea8

    因此、请为我们提供解决此编译错误的可能解决方案。

    我们为您添加了源代码、调试日志和配置错误快照、以供参考。

    谢谢、

    Parth Modi

    e2e.ti.com/.../4885.mcspiSample_5F00_io.c

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

    utils_dmaInit 将在系统初始化期间调用一次、之后您可以使用 API Utils_dmaGetEdma3Hnle 获取 EDMA 句柄。
    使用此句柄并将其传递给 McSPI 驱动程序。

    此外,GIO_Issue 函数将调用位于以下位置的驱动程序代码的内部 mcspiMdSubmitChan()函数:
    TI_components \drivers\pdk_01_07_00_16\packages/ti\drv\bsp_lld\mcspi\src\bsp_mcspi.c. 您能否检查您从驱动程序收到错误的位置?

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

    Prasad、您好!

    感谢您的快速响应。

    我们找出失败的原因、而这是由于我们对两个函数进行了注释。

    /*RetVal += BspUtils_memInit();

     IF (BSP_Sok!= RetVal)

     {

       GT_0TRACE (BspAppTrace、GT_ERR、"Error:App MEM Utils Init failed!!!\r\n\r\n);

     }

     RetVal += BspUtils_prfInit();

     IF (BSP_Sok!= RetVal)

     {

       GT_0TRACE (BspAppTrace、GT_ERR、"Error:App PRF Utils 初始化失败!!!\r\n");

     }*/

    如果我们尝试取消注释此函数、则在代码编译期间会出现以下错误

    程序将不能放入可用的内存中。  带对齐的照射行程放置

     “Group_1”大小为0xf816696的部分失败。  可用存储器范围:

     IPU1_0_DATA_MEM 大小:0xb00000  未使用:0x70cea  最大孔:0x70cea8

    因此、请为我们提供解决此编译错误的可能解决方案。

    我们已附加源代码、调试日志和编译错误快照供您参考。

    谢谢、

    Parth Modi

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

    您好!

    上一帖子是否有更新?

    我们正在等待您的答复。

    谢谢、

    Parth

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

    您应该修改内存定义 xs 文件以解决编译错误。
    这些文件位于以下目录中:vision_sdk\apps\build\ \mem_segure_define_BIOS.xs。

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

    如果我们在下面注释掉代码,它将影响我们的功能?
    目前、我们已在下面添加了注释代码、当我们发出 GIO_REACK_时、它将挂起我们的应用程序。

    哪里出错了?
    请建议。

    注释代码:
    /*RetVal += BspUtils_memInit();

    IF (BSP_Sok!= RetVal)



    GT_0TRACE (BspAppTrace、GT_ERR、"Error:App MEM Utils Init failed!!!\r\n\r\n);



    RetVal += BspUtils_prfInit();

    IF (BSP_Sok!= RetVal)



    GT_0TRACE (BspAppTrace、GT_ERR、"Error:App PRF Utils 初始化失败!!!\r\n");

    }*/

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

    您能否在上述帖子上进行更新?
    我们没有什么紧迫性。我们必须在 EOD 之前解决这些问题。

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

    我认为对这些 API 进行评论应该会影响功能。
    我已要求 MCSPI 专家查看它。 我们必须等到他作出回应。

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

    您好!

    我们将通过 MISO 线路从从器件向主器件发送数据。 而且、我们发现 MSB 的主端存在一个问题。

    问题 就像、MSB 总是会丢失、因为时钟在 MSB 之后开始。

    已附加 DSO 的屏幕截图以供参考。 在屏幕截图中、黄色通道表示 CLK、蓝色通道表示 MISO。

    为了解决此问题、我们必须实施/使用哪种 SPI 配置?

    谢谢、

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

    您好!

    上一帖子是否有更新?
    我们正在等待您的回复。

    谢谢、
    Parth

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

    您好 Parth、

    不需要从 vsdk 框架调用 BspUtils_functions。

    utils_mcspi.c 文件具有用于添加器件的函数、您需要使用 mcspi 实例编号调用 Utils_mcspiInit 函数。

    然后调用具有在 Utils_mcspi.c 文件中使用的相同器件名称的 GIO_Create API。

    根据您之前的帖子、您遇到了 GIO_Submit RIGHT 问题、您是否检查了出现错误的驱动程序代码?

    您现在是否能够接收数据、但数据已损坏?

    另外、如果 McSPI 主器件将发送时钟、而从器件必须响应接收到的时钟、那么从器件在主器件启动时钟之前如何发送数据?

    此致、
    Prasad

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

    Prasad、您好!

    感谢您的回复、

    到目前为止、我们的 TDA2x SoC 正在从模式下工作。在从模式下、 我们完全从主器件(MOSI)接收数据。但当我们从器件向主器件发送数据时、主器件侧的第一个位(MISO 线路)缺失。我们使用 SPI 模式3 (CPOL = 1且 CPHA = 1)进行通信。

    如果我们从 Salve 发送数据129 ((二进制) 1000 0001)、那么我们将接收主端3 (0000 0011)。

    我已附上 CRO 屏幕截图供您参考。内部屏幕截图中的黄色线条表示 SCLK、蓝色通道表示 MISO 线条。

    我的查询 是、

    1) 1)如何解决此数据在主器件侧发生错误的问题?

    请建议我们解决此问题的解决方案。

    如果您需要我们方面的更多信息、请告诉我。

    谢谢、

    Parth Modi

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

    您好 Parth、

    TDA2 SOC 配置为 McSPI 从模式时、不控制时钟。 它只响应来自外部主器件的时钟。 因此、它在主器件启动时钟之前继续发送该位。

    您是如何连接电路板上的从器件的? MOSI、MISO 和时钟的轨道长度是否相同?

    此致、
    Prasad

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

    Prasad、您好!

    我们的轨迹长度如下所示

    MOSI 312.61 + 4476.41 = 4789.02密耳

    MISO 306.11 + 3208.36 = 3514.47mil

    CS# 211.32 + 3103.34 = 3314.66密耳

    CLK 248.9 + 3117.13 = 3366.03mil

    我们将主器件连接到电平转换器。

    Tad2x (从设备)<->levelfel<->MCU (主设备)

    我们在调用 GIO_Issue 一次后会遇到 GIO_REW回收 滞留。如果调用此函数2次、则效果会很好(即每次需要调用2次数据问题并回收2次数据)。

    我已附上我的代码供您参考。

    在 GIO_REACK_背后 要放置什么区域?

    我们希望在从主器件接收中断的每个实例上获取 SPI 数据。请与我分享一些示例代码以实现该数据。

    谢谢、

    Parth Modie2e.ti.com/.../2744.mcspiSample_5F00_io.c

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

    Parth、

    仅在首次需要2个 GIO_Issue 时、这是为了填入要作为从器件的默认响应发送的数据。

    在从机模式下、驱动程序在内部维护要发送的响应的队列。

    之后、您可以执行 GIO_REACK_后跟 GIO_Issue。

    在随附的代码中、我发现问题仅在启动过程中出现。

    您可以参考示例本身、该示例会执行多个 GIO_Issue 和索赔。

    此致、
    Prasad

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

    您好!

    我们在进行 SPI 通信时仍面临问题、因此我想根据您之前的建议在这里澄清几点。

    对于 SPI 通信,我们应首先调用 GIO_Issue 两次,然后调用2次 GIO_REACK,这些调用仅用于进行 SPI 初始化,请验证。

    执行上述步骤后、实际数据传输将开始、直至目前为止没有有效的数据读取/写入。

    现在,在循环中,我们可以为每个数据读取/写入调用 GIO_Issue 和 GIO_Reclance,我是说每个循环中有一个问题/回收,对吧?

    请在此澄清我们的理解。

    谢谢。

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

    前2个 GIO_Issue 需要准备给驱动程序、并将要发送的数据作为响应。
    在前2个 GIO_Issue 之后、传输可以开始。 传输将由外部 SPI 主器件启动。

    之后、您可以循环执行回收和下达。
    GIO_REACTURN 是一个阻塞调用、在第一次传输完成后才返回。

    在环路外的末尾、您可以执行最终重校准、以从驱动器获取所有缓冲器。

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

    Prasad、您好!

    我们一直在努力实施 SPI 通信、但我们很难理解该问题、请阅读下面的说明以了解我们的要求和问题详细信息。

    我们使用的是 TDA2XX 板和 Vision SDK 3.1、我们在从模式下运行。
    我们的目的是从主器件读取13字节数据(包括校验和)。

    请参阅随附的文件了解我们的实现方案、我们使用 GIO_Issue 和 GIO_REACK_API 来接收数据。
    为了模拟主设备发送的数据、我们使用了"Hi-wave"工具。

    下面是从 HI-wave 工具更改数据时发生的情况。

    在 SPI 初始化之后、首先我们要更改 HI 波工具中的数据以模拟主器件到从器件的通信、使用此仿真、从器件应该从主器件接收13个字节、但从器件侧没有接收到任何数据。
    2、现在再次将数据从高波更改为不同的值、我们将接收到两个13字节的帧、其中第一个帧不正确、而第二个帧具有有效数据。
    3.第三次更改来自 HI 波的数据时,我们在从端接收到13个字节,这是垃圾值。

    以上三点在后续更改中不断重复。

    请查看我们的实施、并让我们知道、只有当主器件发送任何数据时、我们才能在单次传输中从主器件接收正确的数据。

    您可以在附加的文件中引用函数"getSpiData"以获取实际通信代码、这里是我们在该文件中使用的一些常量。

    /用于 SPI 实现的宏/

    /缓冲区大小/
    #define BUFLEN (16 * 1)

    /使用 L2缓存的缓冲区对齐/
    #define BUFALIGN 128

    /迭代次数/
    #define iteration_CNT 100

    /要发布和回收的数字 bufs /
    #define NUM_BUFS 2.

    长期以来、我们一直在努力处理 SPI、请优先回复、因为我们有一定的紧迫性。

    此致、







    e2e.ti.com/.../chains_5F00_lvdsVipMultiCamMirrorReplacement.c

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

    您好、Rajesh、

    setSpiReadyHigh 在您的代码中设置了一些 GPIO 引脚、它用于什么?

    您可以在 while 之前填充缓冲区、然后在 while 循环中、在循环开始时添加1个回收、在循环结束时添加1个问题、直到您希望从外部主控方接收数据。

    此致、
    Prasad

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

    您好!

    setSpiReadyHigh 将引脚设置为高电平/低电平、以向 MCD 发送 SoC 已准备好发送/接收数据的指示。

    正如我之前所说、我们希望发送/接收13字节数据、经过一些工作后、我们发现将其设置为16字节并将缓冲区对齐和缓冲区大小设置为16对适用于我们在一个方向(MCU -> SoC)但反向(SOC -> MCU) 对于每两个从 Sock 发送的数据、在 MCU 端仅接收一次。

    请回复您的反馈。

    此致、

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

    您能否在启动后更改 GPIO 切换?

    此外、正如我之前提到的、您需要在开始时发布2个缓冲区、这称为启动。
    之后、您可以回收一个缓冲区并循环发出一个缓冲区、直到发送/接收所需的字节数。
    您可以按上述方式更改代码流并尝试吗?

    此致、
    Prasad
x 出现错误。请重试或与管理员联系。