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.

[参考译文] IWRL6432:如何在 MCSPI_transferCancel ()操作后正常运行

Guru**** 2457210 points


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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1503260/iwrl6432-how-to-operate-normally-after-mcspi_transfercancel-operation

器件型号:IWRL6432

工具/软件:

我使用 MCSPI_transferCancel ()取消了 MCSPI_transfer()的待机状态。

我可以检查被调用回调函数的状态以确认其已取消。

问题是,取消后调用代码中的 MCSPI_transfer()时不调用回调函数。

因此、我将其重新初始化、然后重新打开驱动程序。

        MCSPI_transferCancel (gMcspiHandle[CONFIG_MCSPI0]);
        MCSPI_init ();
        drivers_mcspiOpen()

但回调函数仍然不调用。 取消后、我应该做些什么才能使回叫正常工作?

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

    你好。

    我们正在研究这一点;请在几天内给我们答复。

    此致、

    Santosh

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

    您好、

    您能否共享从 McSPI 传输配置到取消的整个操作序列?

    你有相应的片段吗?

    您是在驱动程序示例中还是直接在演示代码中执行此操作?

    此致

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

    我解决了这个问题。

    我知道只有 SPI 主设备获取数据后才会调用回调函数、我相应地修改了代码。 感谢您的支持。

    这是设置参数。

    MCSPI_OpenParams gMcspiOpenParams[CONFIG_MCSPI_NUM_Instances]={

    transferMode = MCSPI_transfer_mode_callback、
    .transferTimeout = SystemP_NO_WAIT、
    transferCallbackFxn = spi_callbackFxn、
    .loopback = MCSPI_LOOPBACK_DISABLE、
    .msMode = MCSPI_MS_MODE_peripheral、
    mcspiDmaIndex =-1、
    }、
    };

    静态 MCSPI_Attrs gMcspiAttrs[CONFIG_MCSPI_NUM_EXAMS]={

    .baseAddr = CSL_MCU_MCSPI0_CFG_BASE、
    .inputClkFreq = 160000000U、
    .intriNum = 30、
    OperMode = MCSPI_OPER_MODE_INTERRUPT、
    .intriority = 4U、
    .chMode = MCSPI_CH_MODE_MULTI、
    .pinMode = MCSPI_PINMODE_4引脚、
    .initDelay = MCSPI_INITDLY_0、
    }、
    };