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 Number | Vcc Range | Maximum Clock Frequency | Temperature Ranges | Available Packages |
---|---|---|---|---|
24AA256 | 1.7~5.5V | 400kHz(1) | I, E | CS, MF, MS, P, SN, SM, MNY, ST |
24LC256 | 2.5~5.5V | 400kHz | I, E | MF, MS, P, SN, SM, MNY, ST |
24FC256 | 1.7~5.5V | 1Mhz(2) | I, E | MF, 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 函数解除写保护。
返回值 | etSTS | OSS-ECAL status code | |
eSTS_FIN | 成功完成 | ||
eSTS_EXE | 跑步 | ||
eSTS_ERR_PARAMETER | 参数错误(内存地址) | ||
eSTS_ERR_I2C_OBJECT | I2C 对象选择错误 | ||
eSTS_ERR_OTHERS_RUN | 其他组件正在执行程序 | ||
eSTS_ERR_HAL_OTHERS_RUN | 其他应用程序正在运行 HAL | ||
eSTS_ERR_HAL_I2C | HAL I2C 错误 | ||
参数 IN | etCMP cmp | OSS-ECAL components code | |
uint16 mem_adr | Memory address | 0x0000 to 0x7fff | |
uint8 val | Data 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 函数解除写保护。
返回值 | etSTS | OSS-ECAL status code | |
eSTS_FIN | 成功完成 | ||
eSTS_EXE | 跑步 | ||
eSTS_ERR_PARAMETER | 参数错误(内存地址) | ||
eSTS_ERR_I2C_OBJECT | I2C 对象选择错误 | ||
eSTS_ERR_OTHERS_RUN | 其他组件正在执行程序 | ||
eSTS_ERR_HAL_OTHERS_RUN | 其他应用程序正在运行 HAL | ||
eSTS_ERR_HAL_I2C | HAL I2C 错误 | ||
参数 IN | etCMP cmp | OSS-ECAL components code | |
uint16 mem_adr | Memory address | 0x0000 to 0x7fff | |
uint16 len | Number of bytes to write (Max 64) | ||
参数 OUT | uint8* buf | Data 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。
返回值 | etSTS | OSS-ECAL status code | |
eSTS_FIN | 成功完成 | ||
eSTS_ERR_I2C_OBJECT | I2C 对象选择错误 | ||
eSTS_ERR_OTHERS_RUN | 其他组件正在执行程序 | ||
eSTS_ERR_HAL_OTHERS_RUN | 其他应用程序正在运行 HAL | ||
eSTS_ERR_HAL_I2C | HAL I2C 错误 | ||
参数 IN | etCMP cmp | OSS-ECAL components code | |
参数 OUT | uint8* buf | Data 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 中。
返回值 | etSTS | OSS-ECAL status code | |
eSTS_FIN | 成功完成 | ||
eSTS_ERR_PARAMETER | 参数错误(内存地址) | ||
eSTS_ERR_I2C_OBJECT | I2C 对象选择错误 | ||
eSTS_ERR_OTHERS_RUN | 其他组件正在执行程序 | ||
eSTS_ERR_HAL_OTHERS_RUN | 其他应用程序正在运行 HAL | ||
eSTS_ERR_HAL_I2C | HAL I2C 错误 | ||
参数 IN | etCMP cmp | OSS-ECAL components code | |
uint16 mem_adr | Memory address | 0x0000 to 0x7fff | |
参数 OUT | uint8* rlt | Data 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。
返回值 | etSTS | OSS-ECAL status code | |
eSTS_FIN | 成功完成 | ||
eSTS_ERR_I2C_OBJECT | I2C 对象选择错误 | ||
eSTS_ERR_OTHERS_RUN | 其他组件正在执行程序 | ||
eSTS_ERR_HAL_OTHERS_RUN | 其他应用程序正在运行 HAL | ||
eSTS_ERR_HAL_I2C | HAL I2C 错误 | ||
参数 IN | etCMP cmp | OSS-ECAL components code | |
参数 OUT | uint8* rlt | Data 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 中。
返回值 | etSTS | OSS-ECAL status code | |
eSTS_FIN | 成功完成 | ||
eSTS_ERR_PARAMETER | 参数错误(内存地址) | ||
eSTS_ERR_I2C_OBJECT | I2C 对象选择错误 | ||
eSTS_ERR_OTHERS_RUN | 其他组件正在执行程序 | ||
eSTS_ERR_HAL_OTHERS_RUN | 其他应用程序正在运行 HAL | ||
eSTS_ERR_HAL_I2C | HAL I2C 错误 | ||
参数 IN | etCMP cmp | OSS-ECAL components code | |
uint16 mem_adr | Memory address | 0x0000 to 0x7fff | |
参数 OUT | uint8* rlt | Data 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。
返回值 | etSTS | OSS-ECAL status code | |
eSTS_FIN | 成功完成 | ||
eSTS_ERR_PARAMETER | 参数错误(内存地址) | ||
eSTS_ERR_I2C_OBJECT | I2C 对象选择错误 | ||
eSTS_ERR_OTHERS_RUN | 其他组件正在执行程序 | ||
eSTS_ERR_HAL_OTHERS_RUN | 其他应用程序正在运行 HAL | ||
eSTS_ERR_HAL_I2C | HAL I2C 错误 | ||
参数 IN | etCMP cmp | OSS-ECAL components code | |
uint16 mem_adr | Memory address | 0x0000 to 0x7fff | |
uint16 len | Number of bytes to read | ||
参数 OUT | uint8* buf | Data buffer to read |
etSTS oAT24C08C_WP_EN( etCMP cmp )
o24xx256_WP_EN 函数是一个 API 函数,用于输出 24xx256 系列(24AA256、24LC256、24FC256)的写保护启用(写禁用)=”Hi”。
返回值 | etSTS | OSS-ECAL status code | |
eSTS_FIN | 成功完成 | ||
eSTS_ERR_GPIO_OBJECT | GPIO 对象选择错误 | ||
参数 IN | etCMP cmp | OSS-ECAL components code |
etSTS oAT24C08C_WP_DIS( etCMP cmp )
o24xx256_WP_DIS 函数是一个 API 函数,用于输出 24xx256 系列(24AA256、24LC256、24FC256)的写保护禁用(写使能)=”Low”。
返回值 | etSTS | OSS-ECAL status code | |
eSTS_FIN | 成功完成 | ||
eSTS_ERR_GPIO_OBJECT | GPIO 对象选择错误 | ||
参数 IN | etCMP cmp | OSS-ECAL components code |
HAL 支持列表
OSS-ECAL 的 HAL 支持如下。 请注意,即使使用相同的 HAL,不同的版本、MCU 和开发环境也可能无法协同工作。 该列表正在按顺序扩展。
Manufacturer | SDK/IDE Tool | HAL Name | Ver | HALNAME | Support |
---|---|---|---|---|---|
Arduino | Arduino IDE | Arduino | 1.8.6 | ARDUINO | X |
Arm | Keil MDK v6 | Mbed OS | 6.17.0 | MBED | X |
Debian | – | GNU/Linux | 10.3 | Linux | – |
Infineon | ModusToolbox | mtb-hal-cat1 | 2.4.3 | ModusToolbox | X |
NXP | MCUXpresso SDK | SDK_2.x_EVKB-IMXRT1050 | 2.16 | iMXRT1051B1052B | X |
Renesas | Synergy Software Package | HAL | 2.6.0 | SSP | – |
STMicroelectronics | STM32Cube | STM32CubeF4 | V1.28.1 | STM32F4 | X |
开发环境
OSS-ECAL 开发过程中的 MCU 和开发环境如下。
HALNAME | Manufacturer | Board | MCU | IDE |
---|---|---|---|---|
ARDUINO | Arduino | 1.Mega 2560 Rev3 2.Arduino Pro Mini 3.3V | ATmega2560 ATmega328P | Arduino IDE 2.3.3 |
MBED | STMicroelectronics | STM32 Nucleo-64 boards | STM32F401RETx | Arm Keil Studio Cloud |
Linux | BeagleBoard | BeagleBone Black | TI AM335x | – |
ModusToolbox | Infineon | CY8CPROTO-063-BLE PSoC 6 BLE Prototyping Kit | CYBLE-416045-02 | ModusToolbox |
iMXRT1051B1052B | NXP | IMXRT1050-EVKB | i.MX RT1050 | MCUXpresso IDE |
SSP | Renesas | S7G2 SK | R7FS7G27H3A01CFC | e² studio for Renesas Synergy |
STM32F4 | STMicroelectronics | STM32 Nucleo-64 boards | STM32F401RETx | STM32CubeIDE |
文件结构
Folder* | File | Summary |
---|---|---|
24xx256_HALNAME_010000/sample | sample.c (.cpp) | Sample application program |
sample.h | Sample application header | |
24xx256_HALNAME_010000 | o24xx256.c (.cpp) | OSS-ECAL program for 24xx256 |
o24xx256.h | OSS-ECAL header for 24xx256 | |
oss_ecal.h | OSS-ECAL common header | |
24xx256_ARDUINO.ino | Sample application programs for Arduino | |
user_setting.c (.cpp) | User configured constants and tables | |
user_setting.h | User configuration Header | |
oHAL_i2c_stm32f4.c | HAL Program for STM32Cube FW_F4 | |
oHAL_i2c_stm32f4.h | HAL Header for STM32Cube FW_F4 | |
readme.md | Readme | |
OSS-ECAL Terms of Use.txt | OSS-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(相同的 MCU 功能)
如何在用户程序中整合多个 OSS-ECAL(不同 MCU 功能)
注意
OSS-ECAL 示例版本不适用于线程(任务)或不同优先级的中断。 请不要像下面的示例那样使用它。
例如 如果每个传感器被分配到相同的 ADC 组,而 OSS-ECAL API 在具有不同优先级的进程中执行,则可能无法获得正确的值。
ADC Gr0 Ch0 Temperature sensor AD22100A 每隔 100 毫秒采集一次温度(低优先级)
ADC Gr0 Ch1 Pressure sensor MPX5999D 事件中断时采集压力(高优先级)