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/TM4C1294NCPDT:TM4C1294NCPDT 上的 SSI 问题

Guru**** 2482105 points
Other Parts Discussed in Thread: EK-TM4C1294XL, TM4C1294NCPDT, EK-TM4C123GXL

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/714908/ccs-tm4c1294ncpdt-ssi-problem-on-tm4c1294ncpdt

器件型号:TM4C1294NCPDT
主题中讨论的其他器件: EK-TM4C1294XLTM4C123EK-TM4C123GXL

工具/软件:Code Composer Studio

我 在 TivaTmEK-TM4C1294XL Launchpad 上的 TM4C1294NCPDT 的 SSI 上遇到了一些问题。  SSI 模块设为主机、发送数据时 SSI 模块不工作。  引脚时钟(PA2) 不变。 我使用 TI 技术讲座提供的代码 、如下所示。 当运行至代码'SIDataPut (SSI0_BASE、ui32Data)'时、 芯片上的所有 SSI 引脚不会改变、SSIDR 寄存器始终为零。 请帮我找出问题。 提前感谢...

#include

#include

#include "inc/hw_memmap.h"

#include "inc/hw_ssi.h"

#include "inc/hw_types.h"

#include "driverlib/ssi.h"

#include "driverlib/gpio.h"

#include "driverlib/pin_map.h"

#include "driverlib/sysctl.h"

uint32_t ui32SysClkFreq;

#define NUM_SSI_DATA 8.

const uint8_t pui8DataTx[NUM_SSI_DATA]=

{0x88、0xf8、0xf8、0x88、0x01、 0x1f、0x1F、0x01};

//逐位反转数字。

uint8_t

反向(uint8_t ui8Number)

uint8_t ui8Index;

uint8_t ui8 ReversedNumber = 0;

for (ui8Index=0;ui8Index<8;ui8Index++)

ui8ReversedNumber = ui8ReversedNumber << 1;

ui8ReversedNumber |=((1 << ui8Index)& ui8Number)>> ui8Index;

返回 ui8 ReversedNumber;

int main (空)

uint32_t ui32Index;

uint32_t ui32Data;

ui32SysClkFreq = SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480)、120000000);

SysCtlPeripheralEnable (SYSCTL_Periph_SSI0);

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);

GPIOPinConfigure (GPIO_PA2_SSI0CLK);

GPIOPinConfigure (GPIO_PA3_SSI0FSS);

GPIOPinConfigure (GPIO_PA4_SSI0XDAT0);

GPIOPinTypeSSI (GPIO_Porta_base、GPIO_PIN_4|GPIO_PIN_3|GPIO_PIN_2);

SSIConfigSetExpClk (SSI0_BASE、ui32SysClkFreq、SSI_FRF_MOTO_MODE_0、SSI_MODE_MASTER、10000、 16);

SSIEnable (SSI0_BASE);

while (1)

for (ui32Index = 0;ui32Index < NUM_SSI_DATA;ui32Index++)

ui32Data =(Reverse (pui8DataTx[ui32Index])<< 8)+(1 << ui32Index);

SSIDataPut (SSI0_BASE、ui32Data);

while (SSIBusy (SSI0_BASE))

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、我们相信、
    您是否使用了 TM4C123的技术讲座? 我真的看不到您的代码有什么问题。 我只需从运行 SSI 示例 /peripherals/ssi/spi_master.c、我看不到任何问题。 您可以尝试此示例吗? 我建议您首先从导入 CCS 项目 /examples/boards/ek-tm4c1294xl/hello、然后将 hello.c 替换为 SPI_MASTER.c 这将确保您拥有用于设置 TM4C129的所有正确的包含文件。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Charles、

    我使用的示例(实验9)是通过连接 TivaRegisteredC 系列的 LaunchPad Workshop 创建物联网解决方案、它适用于 TM4C1294XL。 我之前实际上运行 SPI_MASTER.c、但它也不起作用。

    我明白你的观点。 我本来打算这么做、但我意识到以下目录中的"boards"文件仅适用于 TM4C123

    C:\ti\TivaWare_C_Series-2.1.4.178\examples\boards\ek-tm4c123gxl\hello

    但是、我使用车间实验室做了类似的事情(对于 SPI、为 lab9)。 我导入了那个、但它也不起作用。 我应该在哪里导入 /examples/boards/ek-tm4c1294xl/hello
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Fatih、

     在我看来、您没有为每个器件安装正确的 TivaWare。 您将看到 /examples/boards/ek-tm4c1294xl/hello、如果您正确安装了用于 TM4C129的 TivaWare。

     首先转到  并单击"Get Software"。

    接下来、单击以黄色突出显示的任一项。  

    如果您想安装完整的 TivaWare、其中包括 TM4C123和 TM4C129以及所有库、则点击第二个名为"SW-TM4C-2.1.4.178.exe"的库  

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

    我做了你建议的事情。 当我运行代码时、我出现以下错误:

    #20标识符"GPIO_PA4_SSI0RX"未定义hello.c/hello行204C/C++问题
    #20标识符"GPIO_PA5_SSI0TX"未定义hello.c/hello第205行C/C++问题

    您是否也会遇到相同的错误?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我按照以下方式解决了将其更改的错误:

    GPIOPinConfigure (GPIO_PA4_SSI0XDAT0);// SSI 模块0双向数据管脚0 (传统 SSI 模式下的 SSI0TX)。
    GPIOPinConfigure (GPIO_PA5_SSI0XDAT1);// SSI 模块0双向数据管脚1 (传统 SSI 模式下的 SSI0RX)。

    但是、它仍然不起作用、我可以在 GPIO 引脚2上看到时钟信号。 SSI_DR 始终为零。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    DR 寄存器用于接收 FIFO 和发送 FIFO。 当您写入 DR 寄存器时、您会写入 FIFO。 当您从 DR 寄存器读取数据时、您将从接收 FIFO 读取数据。 什么连接到 PA5引脚? 您的从设备是否正在返回数据? 请使用示波器捕获 PA4和 PA5引脚。 出于测试目的、您甚至可以将 PA5和 PA4连接在一起以形成回路。 您应该在接收 FIFO 中看到要接收的数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、  

    实际上、PA5未连接、但至少我希望在每次执行 SSIDataPut 时都能看到来自 PA2的计时序列。

    我按照您的建议将 PA4和 PA5短接、但仍然无法读取 DR 寄存器中的任何值。  

    我意识到的另一件事是 SSIDataPut 首次执行时 SSI_RIS 变为0x00000048、然后保持原样。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您之前说过您在 PA2上看到 SPICLK? 您仍然看到时钟吗? 为什么不将 PA4和 PA5连接到逻辑分析仪? 我也看不到您在图片中将 PA4回放到 PA5。

    为什么不尝试向 DR 寄存器写入固定值。 执行 SSIDataPut (SSI0_BASE、0x55)等操作;
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我之前也没有看过时钟、但我想知道原因。 我从逻辑分析仪连接了错误的导线。 我从未想过,在观察到 DR 根本不会改变之后,这可能是问题。

    但至少我现在安装了正确的 TivaWare、它运行得很好。

    谢谢 Charles

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我只运行您的代码、甚至不接触一行、它可以正常工作、我在 PA2和 PA4上看到 SPICLK 和 SPITX。 为什么不使用示波器来捕获引脚、而不是逻辑分析仪。 有时、LA 的速度不够快、无法捕获快速开关信号。 您还可以尝试降低 SPICLK 波特率并查看 LA 是否可以捕获它们。 在任何情况下、我都可以在工作台上看到 SPICLK 和 SPITX 正在运行您的确切程序。