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.

[参考译文] TM4C129XNCZAD:配置 SSI 模块以与两个从属设备进行 SPI 通信

Guru**** 2390755 points
Other Parts Discussed in Thread: TM4C129XNCZAD

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1074703/tm4c129xnczad-configuring-ssi-module-for-spi-communication-with-two-slave-devices

部件号:TM4C129XNCZAD

大家好,我想使用 SPI 通信在 TM4C129XNCZAD 和其他两台设备之间进行通信。 我无法理解如何配置 SSI 模块以实现此目的。 下面是我的代码和 SPI 连接的 PIN 映射。

    //enable the pins used for SPI communication.
    SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOQ);
    GPIOPinConfigure(GPIO_PQ0_SSI3CLK);
    GPIOPinConfigure(GPIO_PQ1_SSI3FSS);
    GPIOPinConfigure(GPIO_PQ2_SSI3XDAT0);
    GPIOPinTypeSSI(PQ_SPI_PORT, (   PQ0_SPI_CLK_PIN         |
                                    PQ1_SPI_SS_MEMORY_PIN   |
                                    PQ2_SPI_TX_PIN          ));


    //
    // Enable the SSI0 peripheral
    //
    SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI3);

    // Wait for the SSI0 module to be ready.
    //
    while(!SysCtlPeripheralReady(SYSCTL_PERIPH_SSI3))
    {
    }

    //
    // Configure the SSI.
    //
    SSIConfigSetExpClk(SSI3_BASE, SysCtlClockFreqSet((SYSCTL_OSC_INT | SYSCTL_USE_OSC), 50000000), SSI_FRF_MOTO_MODE_0, SSI_MODE_MASTER, 2000000, 8);

    //
    //Enable the SSI module
    //
    SSIEnable(SSI3_BASE);

数字电位计(数字电位计)和数字到模拟转换器(DAC)是我要与之通信的两个设备,我假设我只需要配置两个 SSI<n>,但考虑到这两个设备都在同一个端口上,我不确定如何执行此操作。 有人能给我一个示例或一些帮助,告诉我如何配置 SSI 外围设备以作为从属设备与 TM4C 作为主设备进行通信?

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

    您好 Omer,

    要与多个从属设备进行通信,您需要为每个设备指定一条专用的 SS 线路。 大多数客户选择不直接在 SSI 外围设备中配置 SS 线路,而是将其控制为 GPIO。 这样,无论 SSI 总线上是否有一个或多个设备,您都可以控制在所有情况下要切换的 SS 线路。

    因此,您将有效地采取以下行动:

    1. 按照您的要求配置 SSI,但从 SSI 配置中省略 FSS 引脚
    2. 将 PQ1,PQ4和 PQ5引脚配置为数字输出的 GPIO,并将其设置为正确的信号以不选择设备-大多数设备为低真 SS,因此您可以将其设置为高,这将是我在执行这些步骤时的假设。
    3. 与特定设备通信时,首先设置 I/O 低(如果 SS 为低真),然后发出 SSI 读/写命令。
    4. 一旦与该设备通信完成,请重新确认高。

    我还建议您为每一个用户设置专用功能,以便它们按顺序发生,并且您不会面临另一条 SS 线路仍被中断的风险。

    希望这一流程对您有意义!

    此致,

    拉尔夫·雅各比

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

    感谢您的建议,我一直在想做整个事情,因为 GPIO 针脚读/写对我来说不会这样做,这听起来很容易。