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.

[参考译文] Starterware/TM4C1294NCPDT:EEPROM

Guru**** 1796780 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/574002/starterware-tm4c1294ncpdt-eeprom

器件型号:TM4C1294NCPDT

工具/软件:Starterware

您好!

我们的项目之一是使用 TI TM4C1294NCPDT 与 EEPROM (LE25U40CQH)进行连接。

本期:

  1. 下载 TI 的代码我们正在写入一些数据、但会读回。 其中读取数据始终为0。

请找到我使用过的以下代码。


#include
#include
#include "inc/hw_ints.h"
#include "inc/hw_memmap.h"
#include "driverlib/debug.h"
#include "driverlib/gpio.h"
#include "driverlib/interrupt.h"
#include "driverlib/pin_map.h"
#include "driverlib/rom.h"
#include "driverlib/rom_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/uart.h"
#include "driverlib/ssi.h"
#include "utils/uartstdio.h"

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

UART 回波(UART_ECHO)


//!
//! 此示例应用利用 UART 来回显文本。 第一个 UART
//! (连接到评估板上的 USB 调试虚拟串行端口)
//! 将配置为115、200波特、8-n-1模式。 接收到的所有字符
//! UART 被发送回 UART。
//
#define NUM_SSI_DATA 8 //要发送和接收的字节数。

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

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


#endif

//
//
// UART 中断处理程序。
//
//
无效
UARTIntHandler (空)

uint32_t ui32Status;

//
//获取中断状态。
//
ui32Status = ROM_UARTIntStatus (UART3_base、true);

//
//清除已发出的中断。
//
ROM_UARTIntClear (UART3_base、ui32Status);

//
//在接收 FIFO 中有字符时循环。
//
while (ROM_UARTCharsAvail (UART3_base))

//
//从 UART 读取下一个字符并将其写回 UART。
//
ROM_UARTCharPutNonBlocking (UART3_base、
ROM_UARTCharGetNonBlocking (UART3_base));

//
//闪烁 LED 以显示字符传输正在发生。
//
GPIOPinWrite (GPIO_PORTQ_BASE、GPIO_PIN_0、GPIO_PIN_0);

//
//延迟1毫秒。 每个 SysCtlDelay 大约为3个时钟。
//
SysCtlDelay (g_ui32SysClock /(1000 * 3));

//
//关闭 LED
//
GPIOPinWrite (GPIO_PORTQ_BASE、GPIO_PIN_0、0);

//
//
//向 UART 发送字符串。
//
//
无效
UARTSend (const uint8_t * pui8缓冲器、uint32_t ui32计数)

//
//循环,同时有更多字符要发送。
//
while (ui32Count---)

//
//将下一个字符写入 UART。
//
ROM_UARTCharPutNonBlocking (UART3_base、* pui8Buffer++);

//
//
//此示例演示了如何将一串数据发送到 UART。
//
//
内部
main (空)

uint32_t pui32Data[NUM_SSI_DATA];
uint32_t pui32DataTx[NUM_SSI_DATA];
uint32_t pui32DataRx[NUM_SSI_DATA];
//uint32_t* pui32DataRx;
uint32_t ui32Index;
//uint32_t pui32Data[NUM_SSI_DATA];

//
//将时钟设置为直接从频率为120MHz 的晶体运行。
//
G_ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
SYSCTL_OSC_MAIN |
SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480)、120000000);

SysCtlPeripheralEnable (SYSCTL_Periph_SSI3);//必须启用 SSI0外设才能使用。

SysCtlPeripheralEnable (SYSCTL_Periph_GPIOF);//需要启用 GPIO 端口 A 以便可以使用 SSI 引脚。

GPIOPinConfigure (GPIO_PF3_SSI3CLK);//在 PA2上配置 SSI SCLK

GPIOPinTypeGPIOOutput (GPIO_PORTF_BASE、GPIO_PIN_2);//~CS -将其配置为 GPIO 输出

GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、GPIO_PIN_2);//~CS -将其设置为逻辑高电平

GPIOPinConfigure (GPIO_PF1_SSI3XDAT0);//在 PA4上配置 MOSI

GPIOPinConfigure (GPIO_PF0_SSI3XDAT1);//在 PA5上配置 MISO


GPIOPinTypeSSI (GPIO_PORTF_BASE、GPIO_PIN_0| GPIO_PIN_1 | GPIO_PIN_2| GPIO_PIN_3);//配置 SSI 引脚的 GPIO 设置。


SSIConfigSetExpClk (SSI3_base、g_ui32SysClock、SSI_FRF_MOTO_MOTO_MODE_0、//为 SPI 主控模式配置和启用 SSI 端口。 使用 SSI3、
SSI_MODE_MASTER、1000000、8);//系统时钟电源、空闲时钟电平低电平和低电平有效时钟输入
//飞思卡尔 SPI 模式、主控模式、1MHz SSI 频率和8位数据。
//对于 SPI 模式,可以设置 SSI 时钟的极性
//单元空闲。 您还可以配置所需的时钟边沿
//在上捕获数据。 有关的更多信息、请参阅数据表
//不同的 SPI 模式


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

//
//初始化要发送的数据。
//


// pui32DataTx[0]= 0x06;//将数据写入0x000000
pui32DataTx[0]= 0x02;//
pui32DataTx[1]= 0x00;
pui32DataTx[2]= 0x00;
pui32DataTx[3]= 0x00;
pui32DataTx[4]= 0x56;
pui32DataTx[5]= 0x57;
pui32DataTx[6]= 0x58;

//虚拟字节来生成用于从 MISO 读取1个字节的 SCLK


//
//发送3个字节的数据。
//


//启用用于板载 LED 的 GPIO 端口。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOQ);

//
//为 LED (PN0)启用 GPIO 引脚。
//
ROM_GPIOPinTypeGPIOOutput (GPIO_PORTQ_BASE、GPIO_PIN_0|GPIO_PIN_1);

//
//启用此示例使用的外设。
//
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_UART3);
ROM_SysCtlPeripheralEnable (SYSCTL_Periph_GPIOJ);

//
//启用处理器中断。
//
//rom_IntMasterEnable();

//
//将 GPIO A0和 A1设置为 UART 引脚。
//
GPIOPinConfigure (GPIO_PJ0_U3RX);
GPIOPinConfigure (GPIO_PJ1_U3TX);
ROM_GPIOPinTypeUART (GPIO_PORTJ_BASE、GPIO_PIN_0 | GPIO_PIN_1);

//
//将 UART 配置为115、200、8-N-1操作。
//
ROM_UARTConfigSetExpClk (UART3_base、g_ui32SysClock、115200、
(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE |
UART_CONFIG_PAR_NONE));

//
//启用 UART 中断。
//
//rom_IntEnable (INT_UART3);
///ROM_UARTIntEnable (UART3_base、UART_INT_RX | UART_INT_RT);

//
//提示输入文本。
//
UARTSend ((uint8_t *)"\033[2JEnter 文本:"、16);

SysCtlDelay (10000000);//延迟


//
//循环通过 UART 永久回显数据。
//
GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、0);//~CS -将其设置为逻辑低电平-开始传输
SysCtlDelay (100);
SSIDataPut (SSI3_base、0x05);

SSIDataGet (SSI3_base、&pui32DataRx[0]);

pui32DataRx[0]&=0x00FF;

UARTCharPut (UART3_base、pui32DataRx[0]);

SysCtlDelay (100);

GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、GPIO_PIN_2);// CS 高电平


GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、0);//~CS -将其设置为逻辑低电平-开始传输
SysCtlDelay(1);

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

SSIDataPut (SSI3_base、pui32DataTx[ui32Index]);
// UARTCharPut (UART3_base、'a');
SysCtlDelay (10);

//SSIDataGet (SSI3_base、&pui32DataRx[ui32Index]);

//pui32DataRx[ui32Index]&=0xFF00;
//UARTCharPut (UART3_base、pui32DataRx[ui32Index]);

SysCtlDelay(1);

GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、GPIO_PIN_2);//~CS -将其设置为逻辑高电平-传输结束

SysCtlDelay (10000000);

pui32Data[0]= 0x03;
pui32Data[1]=0x00;
pui32Data[2]=0x00;
pui32Data[3]=0x00;
pui32Data[4]=0xff;
pui32Data[5]= 0xff;
pui32Data[6]= 0xff;

GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、0);//~CS -将其设置为逻辑低电平-开始传输
SysCtlDelay(1);

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

SSIDataPut (SSI3_base、pui32Data[ui32Index]);
//UARTCharPut (UART3_base、'a');

SSIDataGet (SSI3_base、&pui32DataRx[ui32Index]);

pui32DataRx[ui32Index]&=0x00FF;
UARTCharPut (UART3_base、pui32DataRx[ui32Index]);
SysCtlDelay (10000000);

SysCtlDelay(1);

GPIOPinWrite (GPIO_PORTF_BASE、GPIO_PIN_2、GPIO_PIN_2);//~CS -将其设置为逻辑高电平-传输结束

GPIOPinWrite (GPIO_PORTQ_BASE、GPIO_PIN_0、GPIO_PIN_0);

while (1)

UARTCharPut (UART3_base、'H');
UARTCharPut (UART3_base、'I');
SysCtlDelay (10000000);
GPIOPinWrite (GPIO_PORTQ_BASE、GPIO_PIN_1、GPIO_PIN_1);
SysCtlDelay (10000000);
GPIOPinWrite (GPIO_PORTQ_BASE、GPIO_PIN_1、0x0);

请建议

    2.请检查以下 EEPROM 的原理图接口是否正常。

请见所附文件中的原理图。

 e2e.ti.com/.../Schematic.docx

e2e.ti.com/.../Schematic.docx

此致、

Sateesh。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否使用示波器检查了引脚? 尤其是检查 CS。 看起来您将 PF2配置为 GPIO 输出高电平、但尝试将其用作 SSI3Fss。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的先生:

    对于我们的项目之一、 我们需要将 TM4C1294NCPDT 控制器与4MB EEPROM 连接。

    1A)。 请建议此 EEPROM 的预填充器件号是多少。

    1b)。 什么是可 用于接口 EEPROM 的预填充接口(微控制器引脚、接口类型--UART)。

    2)。 请建议基于此 TM4C1294NCPDT 微控制  器且具有4MB (或更少或更多) EEPROM 兼容性的任何开发板。

    3)。 请建议使用基于此 TM4C1294NCPDT 微控制 器且与闪存兼容的任何开发板。

    此致、

    Sateesh。

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

    查看 DK-TM4C129X 开发板: 链接。 它在电路板上有两个非易失性存储器解决方案。 它具有一个四通道 SSI 支持的512Mb 闪存和一个 microSD 插槽。 512Mb 闪存是一款 Micron MX66L5、扇区大小为4KB。

    另一种选择是将 TM4C1294 Launchpad 非易失性存储 接口板配合使用。  

    如果您确实需要位可写 EEPROM、您可能更希望获得 TM4C129 Launch Pad 和 Booster Pack 原型板、并添加几个串行 EEPROM、如 CAT25M02。 这将需要您进行更多的硬件和软件开发工作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    某种程度上-适合海报应用的"Darwin"板圈...
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的先生:

    感谢您的建议。

    您能否提供该微控制器和具有 SPI 的 EEPROM 的示例代码?

    此致、

    沙特什。