TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1370159/tm4c1294ncpdt-ssi-maximum-clock-configuration

器件型号:TM4C1294NCPDT

工具与软件:

您好、TI 团队、

我希望以最大速度传输 SPI 数据。 在数据表中、它给出了如下所示的60MHz 最大值、

在我的代码中,我只能给出30MHz 最大值。 提供的电流大于该电流。 不管用。 我已提及以下代码、

空配置 SPI (uint32_t 时钟)
{
//
//必须启用 SSI0外设。
//
SysCtlPeripheralEnable (SYSCTL_Periph_SSI0);

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);

//
//在 PA 上配置用于 SSI0功能的引脚复用。
//
GPIOPinConfigure (GPIO_PA2_SSI0CLK);// PA2 - SSI0CLK
GPIOPinConfigure (GPIO_PA3_SSI0FSS);// PA3 - SSI0Fss
GPIOPinConfigure (GPIO_PA4_SSI0XDAT0);// PA4 - SSI0TX
GPIOPinConfigure (GPIO_PA5_SSI0XDAT1);// PA5 - SSI0RX


GPIOPinTypeSSI (GPIO_Porta_base、GPIO_PIN_5 | GPIO_PIN_4 | GPIO_PIN_2);

SSIConfigSetExpClk (SSI0_BASE、Clock、SSI_FRF_MOTO_MODE_0、SSI_MODE_MASTER、30000000、16);
// SSIConfigSetExpClk (SSI0_BASE、时钟、SSI_FRF_MOTO_MODE_0、SSI_MODE_MASTER、27000000、8);

// SSIIntEnable (uint32_t ui32Base、uint32_t ui32IntFlags)

//
//启用 SSI0模块。
//
SSIEnable (SSI0_BASE);

谢谢。此致、

A. Ajith Kumar

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

    您好!

    在我的代码中,我只能给出30MHz 的最大值。 提供的电流大于该电流。 它不起作用

    您能否说明在将其设置为60MHz 时哪些不起作用? 您在示波器上测量的实际频率是多少? 在这个频率下、我假设您到从器件的距离更短。  

     在下面调用以配置 SSI 时钟时、"时钟"是什么? 它需要为120MHz 才能实现最高60MHz SSI 时钟。  

      SSIConfigSetExpClk (SSI0_BASE、Clock、SSI_FRF_MOTO_MODE_0、SSI_MODE_MASTER、30000000、16);

    我想您必须将时钟设置为如下内容。 是这样吗? 时钟返回什么? 是不是12万?

    CLOCK = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
    SYSCTL_OSC_MAIN |
    SYSCTL_USE_PLL |
    SYSCTL_CFG_VCO_240)、120000000);

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

    尊敬的 Charles Tsai:

    感谢您的答复、

    我已经将时钟设置为仅120MHz、并尝试将 SPI 时钟设置为60MHz。 SPI 时钟引脚的输出端未绘制时钟。

    G_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_240)、120000000);

    我们只能在 SPI 时钟下实现30MHz。 更重要的是设置意味着没有从 SPI 时钟引脚接收到时钟。

    谢谢。此致、

    R·巴拉甘尼什

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

    您好!

    SSIConfigSetExpClk (SSI0_BASE、Clock、SSI_FRF_MOTO_MODE_0、SSI_MODE_MASTER、30000000、16);

    在您最初的发布中,您将时钟变量作为源时钟传递给  SSIConfigSetExpClk()。

    我已经将时钟设置为仅120MHz、并尝试将 SPI 时钟设置为60MHz。 SPI 时钟引脚的输出端未绘制时钟。

    G_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_240)、120000000);

    [/报价]

    在上一次回复中、我们设置了上述系统时钟、将系统时钟频率返回 g_ui32SysClock 变量。 我只是想确保把'Clock '或'g_ui32SysClock '传递给 SSIConfigSetExpClk ()。  

    当您读取时钟变量中存储的值是多少?

       读取时存储在 g_ui32SysClock 中的值是什么?

    我们只能在 SPI 时钟下实现30MHz。 如果设置的值超过此值、则表示没有从 SPI 时钟引脚接收到时钟。

    当同时为30Mhz 和60MHz 进行配置时、您能展示 SPICLK 的示波器捕获吗?

    另请告诉我、您是在您自己的定制电路板上运行还是在 LaunchPad 上运行? 如果您正在使用自己的电路板、是否有25MHz 晶体?

    可以在 LaunchPad 上运行同样的代码吗、看到了什么?

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

    尊敬的 Charles Tsai:

     g_ui32SysClock 变量 和 clock 都是相同的、它们都是120MHz。  g_ui32SysClock 是变量、而 clock 是函数的属性。

    ConfigureSPI(g_ui32SysClock );

    我已经将时钟设置为仅120MHz、并尝试将 SPI 时钟设置为60MHz。 SPI 时钟引脚的输出端未绘制时钟。

    G_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_240)、120000000);

    我们只能在 SPI 时钟下实现30MHz。 更重要的是设置意味着没有从 SPI 时钟引脚接收到时钟。

    谢谢。此致、

    A. Ajith Kumar

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

    我无法在 LaunchPad 上重现您的问题。 请参见下面我针对 SPICLK 上60MHz 的截屏。

    下面是我使用的简单代码。  

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #include <stdbool.h>
    #include <stdint.h>
    #include "inc/hw_memmap.h"
    #include "driverlib/gpio.h"
    #include "driverlib/pin_map.h"
    #include "driverlib/ssi.h"
    #include "driverlib/sysctl.h"
    #include "driverlib/uart.h"
    #include "driverlib/rom_map.h"
    #include "driverlib/rom.h"
    #include "utils/uartstdio.h"
    //*****************************************************************************
    //
    //! \addtogroup ssi_examples_list
    //! <h1>SPI Master (spi_master)</h1>
    //!
    //! This example shows how to configure the SSI0 as SPI Master. The code will
    //! send three characters on the master Tx then polls the receive FIFO until
    //! 3 characters are received on the master Rx.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    您从未回答过以下三个问题。

    当同时为30Mhz 和60MHz 进行配置时、您能展示 SPICLK 的示波器捕获吗?

    另请告诉我、您是在您自己的定制电路板上运行还是在 LaunchPad 上运行? 如果您正在使用自己的电路板、是否有25MHz 晶体?

    可以在 LaunchPad 上运行同样的代码吗、看到了什么?