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/EK-TM4C1294XL:如何在写入后查看 EEPROM 存储器?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/600152/ccs-ek-tm4c1294xl-how-to-view-eeprom-memory-after-writes

器件型号:EK-TM4C1294XL

工具/软件:Code Composer Studio

你(们)好

我编写了一个简单的程序来计算大小、块数量、并在6KB EEPROM 存储器中写入一个模式。

我从地址0x0开始。 最多96个块(0至05)、并假设这将负责写入整个 EEPROM。 回读后打印到 UART 太硬、有时会使 Putty 挂起、

我想查看 EEPROM 中写入的内容。 我该怎么做?

我要附加程序

/
********** 读写 EEPROM 的基本程序
*

#include
#include
#include "inc/hw_memmap.h"
#include "inc/hw_types.h"
#include "inc/hw_gpio.h"
#include "inc/hw_ints.h"
#include "driverlib/gpio.h"
#include "driverlib/rom.h"
#include "driverlib/rom_map.h"
#include "driverlib/pin_map.h"
#include "driverlib/sysctl.h"
#include "driverlib/interrupt.h"
#include "driverlib/EEPROM.h"
#include "utils/uartstdio.h"
#include "drivers/pinout.h"

/
*
*变量
*
**
*

#define E2PROM_TEST_ADDRESS 0x0000

/
* main.c
(二 /

int main (void){
uint32_t e2size、e2block;
uint32_t ui32SysClock;
uint32_t ui32EEPROMInit、ui32EEPROMStatus;

//数据变量和地址
uint32_t pui32Data[2];
uint32_t pui32read[2];


//******** 将 CPU 时钟设置为120 MHz //
//从 PLL 以120MHz 运行。
//

ui32SysClock = MAP_SysCtlClockFreqSet ((SYSCTL_XTAL_25MHz |
SYSCTL_OSC_MAIN |
SYSCTL_USE_PLL |
SYSCTL_CFG_VCO_480)、120000000);


//******** 启用板载 LED 的系统时钟 //
//启用用于板载 LED 的 GPIO 端口。
//
SysCtlPeripheralEnable (SYSCTL_Periph_GPION);


//检查是否启用了外设访问。

while (!SysCtlPeripheralReady (SYSCTL_Periph_GPION))


//
//关闭 LED。
//
GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、0x0);
//为 LED (PN0)启用 GPIO 引脚。 将方向设置为输出、然后
//启用 GPIO 引脚以实现数字功能。

GPIOPinTypeGPIOOutput (GPIO_PORTN_BASE、GPIO_PIN_0);
SysCtlDelay (20000);

//打开板 LED

GPIOPinWrite (GPIO_PORTN_BASE、GPIO_PIN_0、GPIO_PIN_0);
//******** 初始化 UART //

/* EEPROM 设置*/
SysCtlPeripheralEnable (SYSCTL_Periph_EEPROM0);// EEPROM 激活
//
//等待 EEPROM 模块准备就绪。
//
while (!SysCtlPeripheralReady (SYSCTL_Periph_EEPROM0))

//等待 EEPROM 初始化完成

ui32EEPROMInit = EEPROMInit();

//
//检查 EEPROM 初始化是否返回错误
//并通知应用程序
//
if (ui32EEPROMInit!= EEPROM_INIT_OK)

while (1)


/* UART 设置*/
SysCtlPeripheralEnable (SYSCTL_Periph_GPIOA);
GPIOPinConfigure (GPIO_PA0_U0RX);
GPIOPinConfigure (GPIO_PA1_U0TX);
GPIOPinTypeUART (GPIO_Porta_base、GPIO_PIN_0 | GPIO_PIN_1);
UARTStdioConfig (0、115200、ui32SysClock);

/********* 主要行动 /

UARTprintf ("EEPROM 测试程序\r\n");


e2size = EEPROMSizeGet ();//获取 EEPROM 大小
UARTprintf ("EEPROM 大小%d 字节\n"、e2size);

e2block = EEPROMBlockCountGet ();//获取 EEPROM 块计数
UARTprintf ("EEPROM 块计数:%d\n"、e2block);

//***测试部分***************** /
//将一些数据编程到地址0x0000处的 EEPROM 中。
//计算 EEPROM 的大小和该大小的块数
pui32Data[0]= 0xFFFFFFFF;
pui32Data[1]= 0x00000000;
//等待编程完成
ui32EEPROMStatus = EEPROMProgram (pui32Data、0x400、sizeof (pui32Data));
while (ui32EEPROMStatus = EEPROM_RC_working){

UARTprintf ("写入 EEPROM 的数据:%d\n"、pui32Data);
//
//读回它。
//如果正在进行写入,请勿尝试读取
if (ui32EEPROMStatus!= EEPROM_RC_WRBUSY)
EEPROMRead (pui32Read、0x400、sizeof (pui32Read));

UARTprintf ("从 EEPROM 读取的数据:%d\n"、pui32Read);

int i =0、j=0;
/
//对于整个 EEPROM:迭代次数= EEPROMSIZE/EEPROMBLOCKS :j<(e2size/e2block)
//计算如下:
//内部循环始终遍历每个块
//外部循环负责从起始地址到每个块的正确偏移量
//第一个块:j=0l;所以内部循环从0到95位置
//内部循环的第二次迭代:j 为1 (外部循环),因此我们遍历位置96到192。
(二 /
对于(j=0;j<(e2size/e2block);j++){

对于(i=0 <e2block;i++) {
//一个块
//等待写入完成
ui32EEPROMStatus = EEPROMProgram (pui32Data、(E2PROM 测试地址+i+j*e2block)
,sizeof (pui32Data));
while (ui32EEPROMStatus = EEPROM_RC_working){
}//等待当前程序完成
//如果正在进行写入,请勿尝试读取
ui32EEPROMStatus = EEPROMStatusGet ();
如果(!ui32EEPROMStatus)// EEDONE 寄存器在 EEPROM 空闲时全为零
EEPROMRead (pui32Read、(E2PROM 测试地址+i+j*e2block)、sizeof (pui32Read));
// UARTprintf ("块%d:位置:、%d、j、i);
// UARTprintf ("从 EEPROM 读取的数据:%d\n"、pui32Read);
// UARTFlushTx (1);//等待数据被清空
}//结束内部循环
UARTprintf ("完成块 EEPROM:%d\n"、j);

}//结束循环

UARTprintf ("完成整个 EEPROM:\n");
while (1)


返回0;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    EEPROM 未映射存储器。 CPU 必须通过 EEPROM 控制器才能访问 EEPROM 的任何特定字。 您需要使用 EEPROMREAD() API 读出 EEPROM。 读出后、您可以通过 UART 将读取数据发送到终端窗口。 您为 COM 端口配置了什么波特率。 您是否尝试过115200?