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.

[参考译文] TM4C123GH6PM:将 SSI 信号配置为高阻抗

Guru**** 2601915 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/742599/tm4c123gh6pm-configure-ssi-signals-to-high-impedance

器件型号:TM4C123GH6PM

您好!

如何将 SSI 配置 为高阻抗?

我们将在 MCU 和 FPGA 之间连接 QSPI 闪存。

该 QSPI 闪存由 MCU 和 FPGA 通过 SPI 共享。

当 FPGA 访问闪存时、MCU SSI 需要处于高阻抗状态。

谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    当用作 QSPI 的引脚配置为通用输入引脚时、它们为高阻抗。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们将在 MCU 和 FPGA 之间连接 QSPI 闪存。  

    两者都可以在不同的时序访问闪存。

    仅当需要更新 QSPI 闪存时、才需要使用 SSI 引脚。完成此操作后、必须将 SSI 引脚设置为高阻抗、并让 FPGA 接管闪存。

    问题:

    我们能否将 SSInClk/SSInFS/SSInRx/SSInTx 信号动态地配置为 GPIO 和 SSI 信号(无论何时需要),还是只能预配置(在操作过程中不能更改)?

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

    这些引脚可根据需要由软件重新配置。

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

    您好、克罗斯比、

    您是否有一个如何将 SSI 配置为高阻抗的示例代码?

    抱歉、我对微控制器编码非常陌生。

    谢谢你。

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

    这是一个例程、它将一些数据从 SSI 发送出去、然后将引脚转换为 GPIO 输入。 最后、引脚配置有上拉电阻、因此您可以在逻辑分析仪图片中看到效果。

    #include 
    #include 
    #include "inc/hw_types.h"
    #include "inc/hw_memmap.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/gpio.h"
    #include "driverlib/ssi.h"
    #include "driverlib/pin_map.h"
    
    unsigned char u8DataTx[4]={'8'
    
    
    
    、'd'、'in'、
    'in'、'in'、'in'、'in'、'in'、'in'、'in'、'in'、'in'、'in'
    
    uint32_t ui32Index、ui32DataPut、ui32DataGet;
    
    SysCtlClockSet (SYSCTL_SYSDIV_1 | SYSCTL_USE_OSC | SYSCTL_OSC_MAIN |
    SYSCTL_XTAL_16MHz);
    //必须启用 SSI2外设才能使用。
    SysCtlPeripheralEnable (SYSCTL_Periph_GPIOB);
    SysCtlPeripheralEnable (SYSCTL_Periph_SSI2);
    GPIOPinConfigure (GPIO_PB4_SSI2CLK);
    GPIOPinConfigure (GPIO_PB5_SSI2FSS);
    GPIOPinConfigure (GPIO_PB6_SSI2RX);
    GPIOPinConfigure (GPIO_PB7_SSI2TX);
    GPIOPinTypeSSI (GPIO_PORTB_BASE、GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7);
    SSIConfigSetExpClk (SSI2_base、SysCtlClockGet ()、SSI_FRF_MOTO_MOTO_MODE_0、
    SSI_MODE_MASTER、1000000、8);
    SSIEnable (SSI2_base);
    
    //
    //发送 n 个字节的数据。
    //
    for (ui32Index = 0;ui32Index < 4;ui32Index++)
    {
    ui32DataPut =(uint32_t) u8DataTx[ui32Index];
    SSIDataPut (SSI2_base、ui32DataPut);
    SSIDataGet (SSI2_base、&ui32DataGet);
    u8DataRx[ui32Index]=(uint8_t) ui32DataGet;
    }
    
    //现在将 SPI 引脚配置为数字输入
    GPIOPinTypeGPIOInput (GPIO_PORTB_BASE、GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7);
    //使用上拉电阻进行配置
    GPIOPadConfigSet (GPIO_PORTB_BASE、GPIO_PIN_4 | GPIO_PIN_5 | GPIO_PIN_6 | GPIO_PIN_7、
    GPIO_Strength _2mA、GPIO_PIN_TYPE_STD_WPU);
    }
    

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

    谢谢、我会尝试一下。