24xx256 series(24AA256, 24LC256, 24FC256)

24xx256系列(24AA256、24LC256、24FC256)的概述以及24xx256系列专用OSS-ECAL的提供情况。24xx256系列是Microchip Technology公司生产的EEPROM(32,768字节×8位)。
MCU interface : I2C

注意:本资源的原始语言为英语。 翻译仅为方便起见提供概要,可能使用了机器翻译,我们对翻译的准确性和合理性不作任何保证。 此外,在进行实际设计等操作前,请务必参考最新版本的Datasheet。

24xx256 series

概述

Microchip Technology Inc. 24xx256 是一款 32K x 8 (256-Kbit) 串行电可擦除 PROM (EEPROM),能够在宽电压范围(1.7V 至 5.5V)内工作,专为个人通信或数据采集等先进的低功耗应用而开发。 该器件还具有多达 64 字节数据的页面写入能力。
该器件能够随机和顺序读取高达 256K 边界的数据 功能地址线允许同一总线上最多有 8 个器件,地址空间可达 2 Mbit。

Part NumberVcc RangeMaximum Clock
Frequency
Temperature
Ranges
Available Packages
24AA2561.7~5.5V400kHz(1)I, ECS, MF, MS, P, SN, SM, MNY, ST
24LC2562.5~5.5V400kHzI, EMF, MS, P, SN, SM, MNY, ST
24FC2561.7~5.5V1Mhz(2)I, EMF, MS, P, OT, SN, SM, MNY, ST

Note
1: 100 kHz for Vcc < 2.5V
2: 400kHz for Vcc < 2.5V

特点

  • 单电源供电,24AA256 和 24FC256 设备工作电压低至 1.7V,24LC256 设备工作电压低至 2.5V
  • 低功耗 CMOS 技术
    最大写入电流 3mA
    最大待机电流 1μA (I-temp.)
  • 两线串行接口,兼容 I2C
  • 最多可串联八个设备
  • 用于抑制噪声的 Schmit 触发器输入端
  • 输出斜率控制,消除地面反弹
  • 100 kHz、400 kHz 和 1MHz 兼容性
  • 页面写入时间 5 ms,最长
  • 自定时擦除/写入周期
  • 64-Byte 页面写入缓冲区
  • 硬件写保护
  • 静电放电保护 >4000V
  • 超过 100 万次擦写循环
  • 数据保存 >200 年
  • 可进行工厂编程
  • 符合 RoHS 规范
  • 温度范围
    工业(I): -40°C to +85°C
    扩展(E): -40°C to +125°C
  • 汽车 AEC-O100 认证

OSS-ECAL 规格

API 函数

OSS-ECAL API 函数基本上被假定为周期性Thread (TASK) 的函数调用。

etSTS o24xx256_BYTE_WRITE( etCMP cmp, uint16 mem_adr, uint8 val )

o24xx256_BYTE_WRITE 函数是一个 API 函数,用于将 Val 的值写入 24xx256 系列(24AA256、24LC256、24FC256)的指定地址 mem_adr。 该函数返回返回值 eSTS_EXE,直到完成写入的时间(i24xx256_WRITE_TIME [ms])过去。

注意 :
i24xx256_WRITE_TIME [ms] 已用测量值是根据调用此函数的线程周期计算得出的,因此应将线程周期设为 THREAD_OSS_ECAL_PERIOD [ms]。
使用此函数之前,请使用 o24xx256_WP_DIS 函数解除写保护。

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_EXE跑步
eSTS_ERR_PARAMETER参数错误(内存地址)
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
eSTS_ERR_HAL_I2CHAL I2C 错误
参数 INetCMP cmpOSS-ECAL components code
uint16 mem_adrMemory address0x0000 to 0x7fff
uint8 valData to write
etSTS o24xx256_PAGE_WRITE( etCMP cmp, uint16 mem_adr, uint16 len, uint8* buf )

o24xx256_PAGE_WRITE 函数是一个 API 函数,用于从指定地址 mem_adr 依次写入 24xx256 系列(24AA256、24LC256、24FC256)的 buf[0] 至 buf[len-1] 值。 在完成写入的时间(i24xx256_WRITE_TIME [ms])结束之前,该函数返回返回值 eSTS_EXE。

注意 :
如果 mem_adr + len > 0bXXXXXXXXX111111,则地址 A6 至 A14 固定不变,A0 至 A5 翻转至 0bXXXXXXXXX000000。
i24xx256_WRITE_TIME [ms] 已用测量值是根据调用此函数的线程周期计算得出的,因此应将线程周期设为 THREAD_OSS_ECAL_PERIOD [ms]。
使用此函数之前,请使用 o24xx256_WP_DIS 函数解除写保护。

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_EXE跑步
eSTS_ERR_PARAMETER参数错误(内存地址)
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
eSTS_ERR_HAL_I2CHAL I2C 错误
参数 INetCMP cmpOSS-ECAL components code
uint16 mem_adrMemory address0x0000 to 0x7fff
uint16 lenNumber of bytes to write (Max 64)
参数 OUTuint8* bufData buffer to write
etSTS o24xx256_CURRENT_READ( etCMP cmp, uint8* rlt )

o24xx256_CURRENT_READ 函数是一个 API 函数,用于从 24xx256 系列(24AA256、24LC256、24FC256)的最后一个读或写地址 + 1 中读取 1 个字节的值并将其存储到 rlt 中。

注意 :
如果 mem_adr + len >0x7fff,地址将滚转到 0x0000。

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
eSTS_ERR_HAL_I2CHAL I2C 错误
参数 INetCMP cmpOSS-ECAL components code
参数 OUTuint8* bufData buffer to write
etSTS o24xx256_RANDOM_READ( etCMP cmp, uint16 mem_adr, uint8* rlt )

o24xx256_RANDOM_READ 函数是一个 API 函数,用于从 24xx256 系列(24AA256、24LC256、24FC256)的指定地址 mem_adr 中读取一个 1 字节的值并将其存储到 rlt 中。

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_ERR_PARAMETER参数错误(内存地址)
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
eSTS_ERR_HAL_I2CHAL I2C 错误
参数 INetCMP cmpOSS-ECAL components code
uint16 mem_adrMemory address0x0000 to 0x7fff
参数 OUTuint8* rltData to read
etSTS o24xx256_SEQ_READ( etCMP cmp, uint16 mem_adr, uint16 len, uint8* buf )

o24xx256_SEQ_READ 函数是一个 API 函数,用于从 24xx256 系列(24AA256、24LC256、24FC256)的指定地址 mem_adr 依次读取 len 的数据,并将数据从 buf[0] 存储到 buf[len-1]。

注意 :
如果 mem_adr + len >0x7fff,地址将滚转到 0x0000。

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
eSTS_ERR_HAL_I2CHAL I2C 错误
参数 INetCMP cmpOSS-ECAL components code
参数 OUTuint8* rltData to read
etSTS o24xx256_RANDOM_READ( etCMP cmp, uint16 mem_adr, uint8* rlt )

o24xx256_RANDOM_READ 函数是一个 API 函数,用于从 24xx256 系列(24AA256、24LC256、24FC256)的指定地址 mem_adr 中读取一个 1 字节的值并将其存储到 rlt 中。

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_ERR_PARAMETER参数错误(内存地址)
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
eSTS_ERR_HAL_I2CHAL I2C 错误
参数 INetCMP cmpOSS-ECAL components code
uint16 mem_adrMemory address0x0000 to 0x7fff
参数 OUTuint8* rltData to read
etSTS o24xx256_SEQ_READ( etCMP cmp, uint16 mem_adr, uint16 len, uint8* buf )

o24xx256_SEQ_READ 函数是一个 API 函数,用于从 24xx256 系列(24AA256、24LC256、24FC256)的指定地址 mem_adr 依次读取 len 的数据,并将数据从 buf[0] 存储到 buf[len-1]。

注意 :
如果 mem_adr + len >0x7fff,地址将滚转到 0x0000。

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_ERR_PARAMETER参数错误(内存地址)
eSTS_ERR_I2C_OBJECTI2C 对象选择错误
eSTS_ERR_OTHERS_RUN其他组件正在执行程序
eSTS_ERR_HAL_OTHERS_RUN其他应用程序正在运行 HAL
eSTS_ERR_HAL_I2CHAL I2C 错误
参数 INetCMP cmpOSS-ECAL components code
uint16 mem_adrMemory address0x0000 to 0x7fff
uint16 lenNumber of bytes to read
参数 OUTuint8* bufData buffer to read
etSTS oAT24C08C_WP_EN( etCMP cmp )

o24xx256_WP_EN 函数是一个 API 函数,用于输出 24xx256 系列(24AA256、24LC256、24FC256)的写保护启用(写禁用)=”Hi”。

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_ERR_GPIO_OBJECTGPIO 对象选择错误
参数 INetCMP cmpOSS-ECAL components code
etSTS oAT24C08C_WP_DIS( etCMP cmp )

o24xx256_WP_DIS 函数是一个 API 函数,用于输出 24xx256 系列(24AA256、24LC256、24FC256)的写保护禁用(写使能)=”Low”。

返回值etSTSOSS-ECAL status code
eSTS_FIN成功完成
eSTS_ERR_GPIO_OBJECTGPIO 对象选择错误
参数 INetCMP cmpOSS-ECAL components code

HAL 支持列表

OSS-ECAL 的 HAL 支持如下。 请注意,即使使用相同的 HAL,不同的版本、MCU 和开发环境也可能无法协同工作。 该列表正在按顺序扩展。

ManufacturerSDK/IDE ToolHAL NameVerHALNAMESupport
ArduinoArduino IDEArduino1.8.6ARDUINOX
ArmKeil MDK v6Mbed OS6.17.0MBEDX
DebianGNU/Linux10.3Linux
InfineonModusToolboxmtb-hal-cat12.4.3ModusToolboxX
NXPMCUXpresso SDKSDK_2.x_EVKB-IMXRT10502.16iMXRT1051B1052BX
RenesasSynergy Software PackageHAL2.6.0SSP
STMicroelectronicsSTM32CubeSTM32CubeF4V1.28.1STM32F4X
开发环境

OSS-ECAL 开发过程中的 MCU 和开发环境如下。

HALNAMEManufacturerBoardMCUIDE
ARDUINOArduino1.Mega 2560 Rev3
2.Arduino Pro Mini 3.3V
ATmega2560
ATmega328P
Arduino IDE 2.3.3
MBEDSTMicroelectronicsSTM32 Nucleo-64 boardsSTM32F401RETxArm Keil Studio Cloud
LinuxBeagleBoardBeagleBone BlackTI AM335x
ModusToolboxInfineonCY8CPROTO-063-BLE PSoC 6 BLE Prototyping KitCYBLE-416045-02ModusToolbox
iMXRT1051B1052BNXPIMXRT1050-EVKBi.MX RT1050MCUXpresso IDE
SSPRenesasS7G2 SKR7FS7G27H3A01CFCe² studio for Renesas Synergy
STM32F4STMicroelectronicsSTM32 Nucleo-64 boardsSTM32F401RETxSTM32CubeIDE

文件结构

Folder*FileSummary
24xx256_HALNAME_010000/samplesample.c (.cpp)Sample application program
sample.hSample application header
24xx256_HALNAME_010000o24xx256.c (.cpp)OSS-ECAL program for 24xx256
o24xx256.hOSS-ECAL header for 24xx256
oss_ecal.hOSS-ECAL common header
24xx256_ARDUINO.inoSample application programs for Arduino
user_setting.c (.cpp)User configured constants and tables
user_setting.hUser configuration Header
oHAL_i2c_stm32f4.cHAL Program for STM32Cube FW_F4
oHAL_i2c_stm32f4.hHAL Header for STM32Cube FW_F4
readme.mdReadme
OSS-ECAL Terms of Use.txtOSS-ECAL Terms of Use

* 有关 HALNAME,请参阅 HAL 支持。

OSS-ECAL 下载

请从 OSS-ECAL 英文网站下载 OSS-ECAL。下载时,请先登录 OSS-ECAL 英文网站,然后再进行操作。

内置方法

参考以下内容,在用户程序中加入 API 功能。

应使用 user_setting.h 中的以下代码设置引脚 A2。

// Device address Code bit2:A2 bit1:A1 bit0:A0
#define M24xx256_1              0b00000000

对于英飞凌 ModusToolbox HAL,请使用 user_setting.h 中的以下代码设置 I2C 超时。 详情请参阅 cyhal_i2c_master_write()、cyhal_i2c_master_read() 参数超时。

#define I2C_TIMEOUT             10U     // Timeout[ms] 

对于 STM32Cube FW_F4 HAL,I2C 超时时间为 25ms。

注意:
对于以下命令 API 函数,超时时间取决于读/写数据长度 len。
etSTS o24xx256_PAGE_WRITE( etCMP cmp, uint16 mem_adr, uint16 len, uint8* buf )
etSTS o24xx256_SEQ_READ( etCMP cmp, uint16 mem_adr, uint16 len, uint8* buf )

如何将 OSS-ECAL 纳入用户程序

如何在用户程序中整合多个 OSS-ECAL(相同的 MCU 功能)

如何在用户程序中整合多个 OSS-ECAL(不同 MCU 功能)

如何将多个相同的电子元件整合到一个用户程序中

如何通过更换电子元件减少对用户程序的影响

注意

OSS-ECAL 示例版本不适用于线程(任务)或不同优先级的中断。 请不要像下面的示例那样使用它。

例如 如果每个传感器被分配到相同的 ADC 组,而 OSS-ECAL API 在具有不同优先级的进程中执行,则可能无法获得正确的值。

ADC Gr0 Ch0 Temperature sensor AD22100A 每隔 100 毫秒采集一次温度(低优先级)
ADC Gr0 Ch1 Pressure sensor   MPX5999D 事件中断时采集压力(高优先级)

OSS-ECAL Chinese
error: 内容受保护 !