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:TM4C1294NCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/569253/tm4c1294ncpdt-tm4c1294ncpdt

器件型号:TM4C1294NCPDT

您好、先生、

 我们将 LED 和 UART 代码下载到运行良好的 TM4C1294NCPDT Launchpad 中。 我已将 SSI 代码添加到 LED 和 UART 代码中、现在我尝试 使用 LM 闪存编程器工具将代码下载到 launchpad 中、但并非如此。

我正在使用 LM 闪存编程器工具来下载代码。

请找到以下视频链接。

drive.google.com/open

我使用了以下代码。

请找到以下代码。  


#include
#include
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "driverlib/gpio.h"
#include "drivers/pinout.h"
#include "driverlib/pin_map.h"
#include "driverlib/rom.h"
#include "driverlib/rom_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "utils/uartstdio.h"
#include "driverlib/ssi.h"
#include "inc/hw_ssi.h"
#include "driverlib/debug.h"
#include "inc/hw_sysctl.h"
#include "inc/hw_types.h"

//
//
//! \addtogroup example_list
//!

Hello World (您好)


//!
//! 一个非常简单的``hello world '示例。 它只显示``Hello World!'"
//! 并且是更复杂应用的起点。
//!
//! 用115、200 8-N-1打开一个终端、以查看此演示的输出。
//
//

//
//
//系统时钟速率,单位为 Hz。
//
//
uint32_t g_ui32SysClock;

//
//
//驱动程序库遇到错误时调用的错误例程。
//
//
#ifdef 调试
无效
_error__(char * pcFilename、uint32_t ui32Line)


#endif

//
//
//配置 UART 及其引脚。 这必须在 UARTprintf()之前调用。
//
//
无效
配置 UART (空)

//
//启用 UART 使用的 GPIO 外设。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);

//
//启用 UART0
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART0);

//
//为 UART 模式配置 GPIO 引脚。
//
ROM_GPIOPinConfigure (GPIO_PA0_U0RX);
ROM_GPIOPinConfigure (GPIO_PA1_U0TX);
ROM_GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);

//
//初始化控制台 I/O 的 UART
//
UARTStdioConfig (0、115200、g_ui32SysClock);


无效
SSIConfigSetExpClk (uint32_t ui32Base、uint32_t ui32SSIClk、
uint32_t ui32协议、uint32_t ui32模式、
uint32_t ui32BitRate、uint32_t ui32DataWidth)

uint32_t ui32MaxBitRate;
uint32_t ui32RegVal;
uint32_t ui32 PreDiv;
uint32_t ui32SCR;
uint32_t ui32SPH_SPO;

//
//检查参数。
//
assert (_SSIBaseValid (SSI0_BASE));
Assert ((ui32Protocol == SSI_FRF_MOTO_MODE_0)||
(ui32Protocol =SSI_FRF_MOTO_MODE_1)||
(ui32Protocol =SSI_FRF_MOTO_MODE_2)||
(ui32协议=SSI_FRF_MOTO_MODE_3)||
(ui32Protocol =SSI_FRF_TI)||
(ui32协议=SSI_FRF_NMW);
断言((ui32Mode = SSI_MODE_MASTER)||
(ui32Mode = SSI_MODE_SLAVE);
Assert ((((ui32Mode = SSI_MODE_MASTER)&&
(ui32BitRate <=(ui32SSIClk / 2))))||
((ui32Mode!= SSI_MODE_MASTER)&&
(ui32BitRate <=(ui32SSIClk / 12)));
assert (((ui32SSIClk / ui32BitRate)<=(254 * 256));
assert (((ui32DataWidth >= 4)&&(ui32DataWidth <= 16));

//
//设置模式。
//
ui32RegVal =(ui32Mode = SSI_MODE_MASTER)? 0:SSI_CR1_MS;
HWREG (SSI0_BASE + SSI_O_CR1)= ui32RegVal;

//
//设置时钟预分频器。
//
ui32MaxBitRate = ui32SSIClk / ui32BitRate;
ui32 PreDiv = 0;
操作

ui32 PreDiv += 2;
ui32SCR =(ui32MaxBitRate / ui32PreDiv)- 1;

while (ui32SCR > 255);
HWREG (SSI0_BASE + SSI_O_CPSR)= ui32 PreDiv;

//
//设置协议和时钟速率。
//
ui32SPH_SPO =(ui32Protocol & 3)<< 6;
ui32协议&= SSI_CR0_FRF_M;
ui32RegVal =(ui32SCR << 8)| ui32SPH_SPO | ui32Protocol |
(ui32DataWidth - 1);
HWREG (SSI0_BASE + SSI_O_CR0)= ui32RegVal;


无效
SSIEnable (uint32_t ui32Base)

//
//检查参数。
//
assert (_SSIBaseValid (ui32Base));

//
//读取-修改-写入使能位。
//
HWREG (ui32Base + SSI_O_CR1)|= SSI_CR1_SSE;


无效
SSIDataPut (uint32_t ui32Base、uint32_t ui32Data)

//
//检查参数。
//
assert (_SSIBaseValid (ui32Base));
Assert (((ui32Data &(0xfffffffe <<)(HWREG (ui32Base + SSI_O_CR0)&
SSI_CR0_DSS_M))= 0);

//
//等待,直至有空格。
//
while (!(HWREG (ui32Base + SSI_O_SR)& SSI_SR_TNF))

//
//将数据写入 SSI。
//
HWREG (ui32Base + SSI_O_DR)= ui32Data;

//
//
//打印"Hello World!" 连接到智能 UART 模块上的 UART。
//
//
内部
main (空)

//
//从 PLL 以120MHz 运行。
//
G_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
SYSCTL_OSC_MAIN | SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480)、120000000);

//
//配置器件引脚。
//
PinoutSet (false、false);


//
//为 LED D1 (PN1)启用 GPIO 引脚。
//
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTN_BASE、GPIO_PIN_1);

//
//初始化 UART。
//
ConfigureUART();

//
//初始化 SSI0。
//
SSIEnable (SSI0_BASE);
SSIConfigSetExpClk (SSI0_BASE、50000000、SSI_FRF_MOTO_MOTO_0、SSI_MODE_MASTER、1000000、8);


SSIDataPut (SSI0_BASE、"B");

//
//您好!
//
while (1)

//UARTprintf (" UART 代码!\n");

SSIDataPut (SSI0_BASE、0x55);
//
//我们已完成。 在闪烁的 D1周围挂起。
//

//
//打开 D1。
//
LEDWrite (CLP_D1、1);


//
//延迟一位。
//
SysCtlDelay (g_ui32SysClock / 10 / 3);

//
//关闭 D1。
//
LEDWrite (CLP_D1、0);

//
//延迟一位。
//
SysCtlDelay (g_ui32SysClock / 10 / 3);


 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Sateesh、
    如果您通过 LMFlash 发送代码、那么尝试调试程序将会非常困难。
    我建议您安装 Code Composer、编译程序、启动调试会话并逐步运行代码以查看发生了什么。
    首先使用已知良好的工作代码执行此操作、以便您了解此调试理念在 CCS 中的工作原理。
    此致
    布鲁诺
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Sateesh

    首先、当 TivaWare driverlib 中已经存在相同的函数时、重新创建 SSI 函数的原因。

    其次、SSI 没有时钟配置功能。 因此、我的最佳选择是、CPU 在尝试访问 SSI 寄存器时出现总线故障、
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢主席先生