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.

[参考译文] AM6442:mcspi(在 M4F 上)

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1516068/am6442-mcspi-on-m4f

器件型号:AM6442
主题:SysConfig 中讨论的其他器件

工具/软件:

您好 TI 专家

这是我的配置

1 - 2 倍于 M4F 的 MCPI 控制器

2-每 62.5us、M4F 将从 R5F00 接收 IPCNotify

4 每个 MCSPI 需要 在每个 IPCNotify 上传输 22 字节的唯一数据

5-SCLK 为 10MHz

7 - MCSPI0 是双向的、在传输结束时、M4F 需要处理来自 MSCPI0 外设的数据

6-两个 MCSPI 必须在下一个 IPCNotify 之前完成传输、MCSPI0 也需要完成数据处理

8-我已经使用 HLD、中断驱动和非阻塞配置了两个 MCSPI。  

如果我们做粗略计算,  

22*8 = 176bits * 0.1us = 17.6us + CS enable(估计为 5us)+ Disable (估计为 5s)= 27.6us。  

即使有阻塞,我们也应该能够在 55.2 μ s 内完成传输

作为非阻塞、 MSCPI1 可以在 MCSPI0 传输时开始 传输、因此它应该有足够的时间来完成两次传输

到目前为止,我还不能让 MSCPI 在 62.5us 内完成传输

是否有任何可加快 MSCPI 传输速度的配置/设置

谢谢你

Alan I

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

    您好 Alan、

    感谢您撰写如此准确和清晰的描述。

    请允许我在某段时间内提出一个解释、我将从我的角度寻求对进一步问题的答复

    恭敬地说:

    Vaibhav

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

    您好 Alan、

    请告知 MCSPI0 和 MCSPI1 实例的线路上显示的时间。

    此外、还为 MCSPI0 和 MCSPI1 实例输出 MCSPI_TRANSFIT() API 调用的时间。

    如果线缆传输时间(可通过逻辑分析仪看到) 不可用、则可以、您可以继续、给我留出第二个问题的时间。

    恭敬地说:

    Vaibhav

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

    你好、Vaibhav

    下面是我在当前系统中看到的

    MSCPI0 Init 发生 ~0us  

    MCSP1 初始化的时间为~6us

    MCSPI0 回拨~54us

    MCSPI1 回拨时间~65us

    谢谢

    Alan I

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

    您好 Alan、

    请帮助我了解更多信息。

    MCSPI0 回拨~54us

    回调是在 54 us 时启动还是在 54 us 时完全执行?

    此致、

    Vaibhav

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

    你好、Vaibhav

    MCSPI0 回拨从 53us 开始

    MCSPI0 回叫在 54us 结束

    谢谢

    Alan I

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

    您好 Alan、

    MCSPI0 和 MCSPI1 的事务发生在两个不同的线程上?

    此致、

    Vaibhav

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

    你好、Vaibhav

    我正在运行裸机、单线程

    Alan I

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

    您好 Alan、

    请将两个 MCSPI 的 SysConfig 设置发送给我、屏幕截图也会显示。

    此致、

    Vaibhav

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

    /**
    *这些参数是在生成此文件时使用的。 它们将自动应用于后续载荷
    *通过 GUI 或 CLI 运行带有“--help"的“的 CLI 以获取有关如何覆盖这些参数的更多信息。
    *@cliArgs --device “AM64x"--package“--package “ALV"--part"“--part"默认“默认“--context “m4fss0-0"--product“--product “MCU_PLUS_SDK_AM64x@09.02.01
    *@版本{“tool":“:“1.20.0+3587"}“}
    */

    /**
    *导入此配置中使用的模块。
    */
    const IPC = scripting.AddModule(“/drivers/ipc/ipc);
    const mcspi = scripting.AddModule(“/drivers/mcspi/mcspi “、{}、false);
    const mcspi1 = mcspi.addInstance ();
    const mcspi2 = mcspi.addInstance ();
    const addr_translate = scripting.AddModule(“/kernel/dpl/addr_translate、{}、false);
    const addr_translate1 = addr_translate.addInstance ();
    const addr_translate2 = addr_translate.addInstance ();
    const addr_translate3 = addr_translate.addInstance ();
    const addr_translate4 = addr_translate.addInstance ();
    const clock = scripting.AddModule(“/kernel/dpl/clock);
    const debug_log = scripting.AddModule(“/kernel/dpl/debug_log);
    const mpu_armv7 = scripting.AddModule(“/kernel/dpl/mpu_armv7、{}、false);
    const mpu_armv71 = mpu_armv7.addInstance ();
    const mpu_armv72 = mpu_armv7.addInstance ();
    const mpu_armv73 = mpu_armv7.addInstance ();

    /**
    *将自定义配置值写入导入的模块。
    */
    ipc.r5fss1_0 =“无“;
    ipc.r5fss1_1 =“无“;
    ipc.r5fss0_1 =“无“;
    ipc.r5fss0_0 =“通知“;
    ipc.intrPriority = 0;

    mcspi1.$name =“config_mcSPI0";“;
    mcspi1.transferMode =“回调“;
    mcspi1.txFifoTrigLevel =32;
    mcspi1.rxFifoTrigLevel = 32;
    mcspi1.intrPriority = 5;
    mcspi1.transferCallbackFxn =“isr_ch_a_callback";“;
    mcspi1.MCU_SPI.$assign =“MCU_SPI0";“;
    mcspi1.mcspiChannel[0].$name =“CONFIG_MCSPI_CH0";“;
    mcspi1.mcspiChannel[0].frameFormat =“POL0_PHA1";“;
    mcspi1.mcspiChannel[0].bitrate = 10000000;
    mcspi1.child.$name =“drivers_mcspi_v0_mcspi_v0_template0";“;

    mcspi2.$name =“config_MCSPI1";“;
    mcspi2.transferMode =“回调“;
    mcspi2.txFifoTrigLevel =32;
    mcspi2.rxFifoTrigLevel = 32;
    mcspi2.intrPriority = 6;
    mcspi2.transferCallbackFxn =“isr_ch_b_callback";“;
    mcspi2.mcu_spi.$assign =“MCU_SPI1";“;
    mcspi2.mcspiChannel[0].$name =“CONFIG_MCSPI_CH1";“;
    mcspi2.mcspiChannel[0].frameFormat =“POL0_PHA1";“;
    mcspi2.mcspiChannel[0].bitrate = 10000000;
    mcspi2.mcspiChannel[0].mcu_CSn.$assign =“MCU_UART1_RTSn";“;
    mcspi2.child.$name =“drivers_mcspi_v0_mcspi_v0_template1";“;

    addr_translate1.$name =“CONFIG_ADDR_translate_REGION0";“;
    addr_translate1.localAddr = 0x80000000;

    addr_translate2.$name =“CONFIG_ADDR_translate_REGION1";“;
    addr_translate2.systemAddr = 0x20000000;
    ddr_translate2.localAddr = 0xA0000000;

    addr_translate3.$name =“CONFIG_ADDR_translate_Region2";“;
    addr_translate3.systemAddr = 0x40000000;
    addr_translate3.localAddr = 0xC0000000;

    addr_translate4.$name =“CONFIG_ADDR_translate_Region3";“;
    addr_translate4.systemAddr = 0x60000000;
    addr_translate4.localAddr = 0x60000000;

    debug_log.enableCssLog = false;
    debug_log.enableLogZoneWarning = false;
    debug_log.enableLogZoneError = false;

    MPU_armv71.$name =“CONFIG_MPU_REGION0";“;
    mpu_armv71.attributes =“Device";“;
    mpu_armv71.allowExecute = false;

    mpu_armv72.$name =“CONFIG_MPU_REGION1";“;
    mpu_armv72.size = 18;

    mpu_armv73.$name =“CONFIG_MPU_Region2";“;
    mpu_armv73.attributes =“NonCached";“;
    mpu_armv73.baseAddr = 0x701E0000;
    mpu_armv73.size = 16;
    mpu_armv73.allowExecute = false;

    /**
    *用于未锁频引脚/外设的 Pinmux 解决方案。 这可确保将来对自动解算器进行细微更改
    *该工具的版本不会影响您最初看到的 pinmux。 这些行可以完全删除、以便于
    *从头开始重新解决。
    */
    mcspi1.MCU_SPI.CLK.$SugestSolution =“MCU_SPI0_CLK";“;
    mcspi1.mcu_spi.d0.$AspestSolution =“MCU_SPI0_D0";“;
    mcspi1.mcu_spi.d1.$AspestSolution =“MCU_SPI0_D1";“;
    mcspi1.mcspiChannel[0].mcu_CSn.$AspestSolution =“MCU_SPI0_CS0";“;
    mcspi2.MCU_SPI.CLK.$SugestSolution =“MCU_SPI1_CLK";“;
    mcspi2.mcu_spi.d0.$SugestSolution =“MCU_SPI1_D0";“;
    mcspi2.mcu_spi.d1.$AspestSolution =“MCU_SPI1_D1";“;

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

    您好 Alan、

    感谢指定 SysConfig 文件。 请允许我就此发表意见。

    此致、

    Vaibhav

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

    您好 Alan、

    我打开了 SysConfig 并检查了配置。

    您能尝试看看您对 MCSPI 操作、基本上是以假设 50MHz 的频率进行的吗?

    请告诉我。

    此外、我假设我们也可以看到时序/延迟的改进。

    此致、

    Vaibhav