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.

[参考译文] CCS/TM4C1294KCPDT:如何将 SSI 用作已复用 CS 线路而不是直接 GPIO 引脚的 SPI?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/592180/ccs-tm4c1294kcpdt-how-to-use-ssi-as-spi-having-muxed-cs-line-instead-of-direct-gpio-pin

器件型号:TM4C1294KCPDT

工具/软件:Code Composer Studio

您好!

有关 TI 封装中提供的 tm4c 示例代码、我需要一些帮助:

"TivaWare_C_Series-2.1.4.178\examples\peripherals\SSI"

如何将示例代码用于任何其他 SPI 支持芯片,例如:LTC1863与 CS 的多路复用 CS 线路而不是直接 GPIO 引脚一起使用?

我们将感谢您提供任何指导和建议。

谢谢、此致

Anan

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

    我已经使用引脚多路复用工具为 SSI1端口配置引脚。 仅使用 SSI1XDAT0、SSI1XDat1和 SSI1CLK 配置以及芯片选择配置
    我的目标是对复用 CS 线路进行外部处理、在写入()时选择芯片、在执行与读取()类似的操作后再次禁用芯片。 但无法读取 ADC LTC1863值。

    请根据需要更正我的问题。 并指导我采取正确的方法。

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

    Anan、

    实际上、建议将 GPIO 用于 CSB、而不是让标准硬件来处理它(因为它可能会在不兼容的时序中控制它、因为 SPI "太灵活了...")

    这是一段代码、经实践证明适用于一种特定类型的传感器。 也许它会对您有所帮助。 它确实使用 GPIO 作为 CSB、并读取一个小的字节序列。 我不包括配置部分、因为您似乎在那里。

    GPIOPinWrite (gyroHW->GPIOFSSPort、gyroHW->GPIOFSSPin、0); //降低 CSB
    SSIDataPut (gyrohw->SSIBase、frameHigh); //仅发送高16位
    while (SSIBusy (gyroHW->SSIBase));
    SSIDataGet (gyrohw->SSIBase、readCrap); //读取无用数据
    SSIDataPut (gyroHW->SSIBase、(帧低)); //这会发送其他16位
    while (SSIBusy (gyroHW->SSIBase));
    GPIOPinWrite (gyroHW->GPIOFSSPort、gyroHW->GPIOFSSPin、gyroHW->GPIOFSSPin); //提升 CSB
    SSIDataGet (gyrohw->SSIBase、readCrap); //读取无用数据
    GPIOPinWrite (gyroHW->GPIOFSSPort、gyroHW->GPIOFSSPin、0); //降低 CSB
    SSIDataPut (gyrohw->SSIBase、frameHigh); //刷新其他16位
    while (SSIBusy (gyroHW->SSIBase)); //等待位被清空
    SSIDataGet (gyrohw->SSIBase、read16High); //读取16位
    SSIDataPut (gyroHW->SSIBase、frameLow); //刷新其他16位
    while (SSIBusy (gyroHW->SSIBase)); //等待位被清空
    SSIDataGet (gyroHW->SSIBase、read16Low); //读取更多数据
    GPIOPinWrite (gyroHW->GPIOFSSPort、gyroHW->GPIOFSSPin、gyroHW->GPIOFSSPin); //提升 CSB 

    此致

    布鲁诺

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

    您好、Bruno、

    非常感谢您的回复。 但我已经解决了我的案例中的问题。 它处于 SSIConfigSetExpClk()配置中。 我以前可能已经检查过它。 好的、是的、这是我的不好... :P  

    但无论如何、现在我可以使用多路复用芯片选择线路、并可以保存其他 GPIO 以用于其他目的。  

    问题在这里:

    SSIConfigSetExpClk (SSI1_base、ui32SysClock、SSI_MODE_MASTER、SSI_MODE_MASTER、1000000、8);

    和更正后的配置:

    SSIConfigSetExpClk (SSI1_base、ui32SysClock、SSI_FRF_MOTO_MOTO_0、SSI_MODE_MASTER、1000000、8);

     

    我可以读取 ADC ltc1863数据、是的、这仍在测试中、因此无法对其行为进行大量描述、但总的来说、项目一直保持稳定。

    再次感谢 Bruno。

    此致

    Anan