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.

[参考译文] TM4C1290NCPDT:SSI 通信

Guru**** 2537350 points
Other Parts Discussed in Thread: TM4C1290NCPDT, EK-TM4C1294XL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1031201/tm4c1290ncpdt-ssi-communication

器件型号:TM4C1290NCPDT
Thread 中讨论的其他器件: EK-TM4C1294XL

您好!

我使用的是 TM4C1290NCPDT 定制板。 使用 SSI2进行通信时、EEPROM 读取/写入不起作用。

SSI2DR 在寄存器窗口中始终显示0?  

在 SSIDataPut 执行后 、SSI2DR 寄存器中没有变化

SSIDataPut (SSI2_base、ucData);

while (map_SSIBusy (SSI2_base))

同样 、SSIDataGetNonBlocking 执行 SSI2DR 寄存器中没有变化

if (SSIDataGetNonBlocking (SSI2_base、&UDATA))

*bptrReturnValue =(字节)(UDATA);

请帮帮我。

谢谢。

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

    Thalapushpam,您好!  

    我假设这是您正在与之通信的外部 EEPROM?

    您以前是否在 EK-TM4C1294XL 等 EVM 上进行过此操作?

    您能否发布 SSI2模块的配置代码?

    发布代码的最佳方式在以下位置进行了说明: https://e2e.ti.com/support/site-support-group/site-support/f/site-support-forum/812271/faq-how-do-i-add-a-code-snippet-to-my-post

    此致、

    Ralph Jacobi

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

    您好、Ralph、

    是我们在应用中使用的外部 EEPROM (M95040)。

    在收到自定义电路板之前、我们使用了 EK-TM4C1294XL 、但未测试 EEPROM 读取/写入。

    我们在软件代码中控制的芯片选择、是否会导致任何问题?

    其他使用 TI 内置的 Tx、Rx、clk。

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

    Thalapushpam,您好!  

    [引用 userid="487825" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1031201/tm4c1290ncpdt-ssi-communication/3815757 #3815757"]我们在软件代码中控制的芯片选择,是否会导致任何问题?

    没有问题、这也是我们通常所做的事情。

    如果 EEPROM 未经测试、我的第一个想法是检查数据表以了解需要使用什么 SPI 模式。 可以使用不同的极性和相位。 SPI 在初始通信时出现问题的最常见原因之一是选择了错误的 SPI 模式。

    https://en.wikipedia.org/wiki/Serial_Peripheral_Interface#Clock_polarity_and_phase

    此致、

    Ralph Jacobi

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

    谢谢 Ralph。

    根据 EEPROM 数据表、

    模式0只有我在代码中使用、无论如何、如果我将数据放在数据寄存器中、它将能够查看吗?

    void SSCHardwareInit( void )
    {
      
      UINT32 ui32SysClock;
      
        // The SSI2 peripheral must be enabled for use    
        MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_SSI2);
        
        
        //SSI2 is used with PortD[0:3]
        MAP_SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOD);
        
        // Configure the pin muxing for SSI2 functions on PD[0:3]
        MAP_GPIOPinConfigure(GPIO_PD3_SSI2CLK);
       // MAP_GPIOPinConfigure(GPIO_PD2_SSI2FSS);
        MAP_GPIOPinConfigure(GPIO_PD1_SSI2XDAT0);
        MAP_GPIOPinConfigure(GPIO_PD0_SSI2XDAT1);
        
        // Configure the GPIO settings for the SSI pins
        // The pins are assigned as follows:
        //      SSI2
        //      PD0 - SSI2RX
        //      PD1 - SSI2TX
        //      PD2 - SSI2Fss
        //      PD3 - SSI2CLK
        MAP_GPIOPinTypeSSI(GPIO_PORTD_BASE, GPIO_PIN_3 |
                       /*GPIO_PIN_2 |*/ GPIO_PIN_1 | GPIO_PIN_0);
        
        //get system clock frequency
        ui32SysClock = GetSystemClockFrequency(); 
        
        // Configure and enable the SSI2 port for SPI master mode.  Use SSI2,
        // system clock supply, idle clock level low and active low clock in legacy
        // Freescale SPI mode Moto fmt, polarity 0, phase 0, master mode, 
        // 2MHz SSI frequency, and 8-bit data.
        // previously used 1MHz 2MHz used here needs to check
        MAP_SSIConfigSetExpClk(SSI2_BASE, ui32SysClock, SSI_FRF_MOTO_MODE_0,
                           SSI_MODE_MASTER, 2000000, 8);  
        
       
        
        // Enable the SSI2 module
        MAP_SSIEnable(SSI2_BASE);  
        
        
        GPIOPinWrite(GPIO_PORTH_BASE, GPIO_PIN_0, 1);     
    
    }

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

    Thalapushpam,您好!  

    这里的配置代码对我来说一切正常、您是否将 SSI 线路范围限定为查看数据的外观?

    我想此时您需要使用示波器或 LSA 验证命令、以确保 EEPROM 接收到正确的命令。 如果您看到任何 TM4C 输出不寻常的情况、那么一定要共享屏幕截图、以便我可以看到发生了什么情况。

    但是、根据您对 EEPROM 要求的描述和配置代码、我不会想到 SSI 本身会有任何问题。

    此致、

    Ralph Jacobi