一种存储器,可以在设备关闭时写入、擦除和读取重要信息。
A
A
硬件概览
它是如何工作的?
EEPROM 12 Click基于STMicroelectronics的M24256E EEPROM。保护功能包括整个内存阵列的写保护、增强的ESD/锁存保护等。它可以承受超过400万次写入周期,数据保持时间超过200年。字节或页面的写入时间均在5ms内,并支持随机和顺序读取模式。写入页面模式允许在一个写入周期内写入最多64字节的数据。每组四个EEPROM字节
上实施的错误纠正码(ECC)提高了读取的可靠性。在内部写入周期期间,设备将自己与总线断开,并将其内部锁存器中的数据副本写入存储单元,从而最大限度地减少写入延迟。EEPROM 12 Click使用标准的2线接口与主机MCU通信,支持高达1MHz的时钟频率。EEPROM支持可配置设备地址寄存器(CDA),允许用户定义设备地址,并通
过设备地址锁(DAL)锁定可配置设备地址寄存器。EEPROM还支持写入控制保护,可以通过WC引脚访问。此Click板™可以通过VCC SEL跳线选择3.3V或5V逻辑电压水平运行。这样,3.3V和5V能力的MCU都可以正确使用通信线路。此外,此Click板™配备了一个包含易于使用的函数库和示例代码的库,可以作为进一步开发的参考。
功能概述
开发板
Clicker 4 for STM32F3 是一款紧凑型开发板,作为完整的解决方案而设计,可帮助用户快速构建具备独特功能的定制设备。该板搭载 STMicroelectronics 的 STM32F302VCT6 微控制器,配备四个 mikroBUS™ 插槽用于连接 Click boards™、完善的电源管理功能以及其他实用资源,是快速开发各类应用的理想平台。其核心 MCU STM32F302VCT6 基于高性能
Arm® Cortex®-M4 32 位处理器,运行频率高达 168MHz,处理能力强大,能够满足各种高复杂度任务的需求,使 Clicker 4 能灵活适应多种应用场景。除了两个 1x20 引脚排针外,板载最显著的连接特性是四个增强型 mikroBUS™ 插槽,支持接入数量庞大的 Click boards™ 生态系统,该生态每日持续扩展。Clicker 4 各功能区域标识清晰,界面直观简洁,极大
提升使用便捷性和开发效率。Clicker 4 的价值不仅在于加速原型开发与应用构建阶段,更在于其作为独立完整方案可直接集成至实际项目中,无需额外硬件修改。四角各设有直径 4.2mm(0.165")的安装孔,便于通过螺丝轻松固定。对于多数应用,只需配套一个外壳,即可将 Clicker 4 开发板转化为完整、实用且外观精美的定制系统。
微控制器概述
MCU卡片 / MCU

建筑
ARM Cortex-M4
MCU 内存 (KB)
256
硅供应商
STMicroelectronics
引脚数
100
RAM (字节)
40960
使用的MCU引脚
mikroBUS™映射器
“仔细看看!”
Click board™ 原理图

一步一步来
项目组装
软件支持
库描述
该库包含 EEPROM 12 Click 驱动程序的 API。
关键功能:
eeprom12_memory_write- EEPROM 12 内存写入功能。eeprom12_memory_read- EEPROM 12 内存读取功能。
开源
代码示例
完整的应用程序代码和一个现成的项目可以通过NECTO Studio包管理器直接安装到NECTO Studio。 应用程序代码也可以在MIKROE的GitHub账户中找到。
/*!
* @file main.c
* @brief EEPROM 12 Click example
*
* # Description
* This example demonstrates the use of EEPROM 12 Click board™.
* The demo app writes specified data to the memory and reads it back.
*
* The demo application is composed of two sections :
*
* ## Application Init
* The initialization of I2C module, log UART, and additional pins.
*
* ## Application Task
* The demo application writes a desired number of bytes to the memory
* and then verifies if it is written correctly
* by reading from the same memory location and displaying the memory content.
* Results are being sent to the UART Terminal, where you can track their changes.
*
* @author Nenad Filipovic
*
*/
#include "board.h"
#include "log.h"
#include "eeprom12.h"
static eeprom12_t eeprom12;
static log_t logger;
#define DEMO_TEXT_MESSAGE_1 "MikroE"
#define DEMO_TEXT_MESSAGE_2 "EEPROM 12 Click"
#define STARTING_ADDRESS 0x4321
void application_init ( void )
{
log_cfg_t log_cfg; /**< Logger config object. */
eeprom12_cfg_t eeprom12_cfg; /**< Click config object. */
/**
* Logger initialization.
* Default baud rate: 115200
* Default log level: LOG_LEVEL_DEBUG
* @note If USB_UART_RX and USB_UART_TX
* are defined as HAL_PIN_NC, you will
* need to define them manually for log to work.
* See @b LOG_MAP_USB_UART macro definition for detailed explanation.
*/
LOG_MAP_USB_UART( log_cfg );
log_init( &logger, &log_cfg );
log_info( &logger, " Application Init " );
// Click initialization.
eeprom12_cfg_setup( &eeprom12_cfg );
EEPROM12_MAP_MIKROBUS( eeprom12_cfg, MIKROBUS_1 );
if ( I2C_MASTER_ERROR == eeprom12_init( &eeprom12, &eeprom12_cfg ) )
{
log_error( &logger, " Communication init." );
for ( ; ; );
}
Delay_ms ( 100 );
log_info( &logger, " Application Task " );
Delay_ms ( 100 );
}
void application_task ( void )
{
uint8_t data_buf[ 128 ] = { 0 };
memcpy( data_buf, DEMO_TEXT_MESSAGE_1, strlen( DEMO_TEXT_MESSAGE_1 ) );
if ( EEPROM12_OK == eeprom12_memory_write( &eeprom12, STARTING_ADDRESS,
data_buf,
strlen( DEMO_TEXT_MESSAGE_1 ) ) )
{
log_printf( &logger, " Write data: %s\r\n", data_buf );
Delay_ms ( 100 );
}
memset( data_buf, 0, sizeof( data_buf ) );
Delay_ms ( 100 );
if ( EEPROM12_OK == eeprom12_memory_read( &eeprom12, STARTING_ADDRESS,
data_buf,
strlen( DEMO_TEXT_MESSAGE_1 ) ) )
{
Delay_ms ( 100 );
log_printf( &logger, " Read data: %s\r\n\n", data_buf );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
}
memcpy( data_buf, DEMO_TEXT_MESSAGE_2, strlen( DEMO_TEXT_MESSAGE_2 ) );
if ( EEPROM12_OK == eeprom12_memory_write( &eeprom12, STARTING_ADDRESS,
data_buf,
strlen( DEMO_TEXT_MESSAGE_2 ) ) )
{
log_printf( &logger, " Write data: %s\r\n", data_buf );
Delay_ms ( 100 );
}
memset( data_buf, 0, sizeof( data_buf ) );
Delay_ms ( 100 );
if ( EEPROM12_OK == eeprom12_memory_read( &eeprom12, STARTING_ADDRESS,
data_buf,
strlen( DEMO_TEXT_MESSAGE_2 ) ) )
{
Delay_ms ( 100 );
log_printf( &logger, " Read data: %s\r\n\n", data_buf );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
Delay_ms ( 1000 );
}
}
int main ( void )
{
/* Do not remove this line or clock might not be set correctly. */
#ifdef PREINIT_SUPPORTED
preinit();
#endif
application_init( );
for ( ; ; )
{
application_task( );
}
return 0;
}
// ------------------------------------------------------------------------ END
额外支持
资源
类别:电可擦只读存储器






























