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.

[参考译文] TM4C1294NCPDT:用于直接寄存器配置的 SSI 代码

Guru**** 2531950 points
Other Parts Discussed in Thread: TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1322569/tm4c1294ncpdt-ssi-code-for-direct-register-configuration

器件型号:TM4C1294NCPDT

您好!

我需要在 TM4C1294NCPDT 控制器中对 SPI 配置进行直接寄存器配置。

任何示例代码都是建议使用的。

谢谢大家、

维贾伊

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

    您好!

     我们提供了 TivaWare SDK 及外设驱动程序、以使用户从硬件中抽象出来。 我们没有任何使用 DRM (直接寄存器操作)样式的编码的示例。 但是、您可以轻松查看任何一个 SPI API 源代码以了解如何使用 SPI 寄存器进行操作。 您还可以参阅数据表。 器件数据表包含完整的寄存器说明。 只需要写入和读取指定地址的寄存器。 下面是将数据写入 SPI 数据寄存器的代码片段。 请参考 C:\ti\TivaWare_C_Series-2.2.0.295\driverlib\ssi.c 文件。  

    void
    SSIDataPut(uint32_t ui32Base, uint32_t ui32Data)
    {
        //
        // Check the arguments.
        //
        ASSERT(_SSIBaseValid(ui32Base));
        ASSERT((ui32Data & (0xfffffffe << (HWREG(ui32Base + SSI_O_CR0) &
                                           SSI_CR0_DSS_M))) == 0);
    
        //
        // Wait until there is space.
        //
        while(!(HWREG(ui32Base + SSI_O_SR) & SSI_SR_TNF))
        {
        }
    
        //
        // Write the data to the SSI.
        //
        HWREG(ui32Base + SSI_O_DR) = ui32Data;
    }

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

    尊敬的 Charles:

    我了解 API 的可用性及其操作方式。 然而、当我检查 API 代码时、我发现寄存器地址与数据表的直接寄存器地址有很大不同。

    如何使用 DRM (直接寄存器操作)发送和接收数据以及配置 SPI (SSI)? 该流程中的具体步骤是什么?

    谢谢。此致、

    维贾伊

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

    数据表中列出了 QSSI 模块的基地址。  您需要使用这些寄存器。 它们与 hw_memmap.h 文件匹配。  

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

    尊敬的 Charles:

    配置 SSI 寄存器需遵循哪些步骤?
    您能解释一下分步寄存器配置方法吗?

    谢谢。此致、

    维贾伊

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

    为什么不在 C:\ti\TivaWare_C_Series-2.2.0.295\examples\peripherals\ssi\spi_master.c 中运行简单示例、并逐个步骤查看源代码、它为您提供了 API 如何使用 DRM 来设置所有寄存器的分步式示例。  

    举个简单的例子、说明如何写入寄存器。 假设您要向 SSI0模块中的 SSIDR 寄存器写入一个随机值0x1234。  

    HWREG (SSI0_BASE + SSI_O_DR)= 0x1234;  

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

    尊敬的 Charles:

    感谢您的帮助。

    此致、

    维贾伊