AT24C08C的概述以及AT24C08C用OSS-ECAL的提供情况。AT24C08C是Microchip Technology公司生产的 1,024word×8bits EEPROM(Electrically Erasable and Programmable Read-Only Memory)。
MCU interface : I2C
注意: 本资源的原始语言为英语。 翻译仅为方便起见提供概要,可能使用了机器翻译,我们对翻译的准确性和合理性不作任何保证。 此外,在进行实际设计等操作前,请务必参考最新版本的Datasheet。
AT24C08C
概述
AT24C08C 提供 8,192 位串行电可擦除可编程只读存储器(EEPROM),组织为 1,024 个 8 位单词。该设备的级联功能允许最多两个设备(AT24C08C)共享一个共同的两线总线。这些器件专为工业和商业应用中的低功耗、低电压操作场景优化设计。器件提供多种封装形式,包括节省空间的 8 引脚 SOIC、8 引脚 TSSOP、8 焊盘 UDFN、8 引脚 PDIP、5 引脚 SOT23 以及 8 球 VFBGA 封装。所有封装均支持 1.7V 至 5.5V 工作电压范围。
特点
- 低电压工作:VCC = 1.7V 至 5.5V
- 内部组织为1,024 x 8(8K)
- 工业温度范围:-40°C 至 +85°C
- I²C兼容(两线制)串行接口:标准模式 100 kHz,1.7 V 至 5.5 V;快速模式 400 kHz,1.7 V 至 5.5 V;快速模式增强版(FM+)1 MHz,2.5 V 至 5.5 V。
- 施密特触发器,带滤波输入的噪声抑制功能
- 双向数据传输协议
- 写保护引脚,用于全数组硬件数据保护
- 超低工作电流(最大3毫安)和待机电流(最大6微安)
- 16字节页面写入模式:允许部分页面写入
- 随机读取模式与顺序读取模式
- 自定时写入周期,最大5毫秒
- ESD Protection > 4,000V
- 高可靠性:1,000,000次写入循环,数据保留时间100年
- 绿色包装选项(无铅/无卤素/符合RoHS标准)
- 晶圆形式和卷带包装可供选择
OSS-ECAL规格
API 函数
OSS-ECAL API 函数基本上被假定为周期性Thread (TASK) 的函数调用。
etSTS oAT24C08C_BYTE_WRITE( etCMP cmp, uint16 mem_adr, uint8 val )
oAT24C08C_BYTE_WRITE 函数是一个 API 函数,用于将值 val 写入 AT24C08C 指定的地址 mem_adr。该函数返回返回值 eSTS_EXE,直到完成写入操作所需的时间(iAT24C08C_WRITE_TIME [ms])耗尽。
注意:
iAT24C08C_WRITE_TIME [ms] 的经过时间测量是根据调用此函数的线程周期计算的,因此请将线程周期设置为 THREAD_OSS_ECAL_PERIOD [ms]。
在使用此函数之前,请使用 oAT24C08C_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 0x03FF | |
uint8 val | Data to write |
etSTS oAT24C08C_PAGE_WRITE( etCMP cmp, uint16 mem_adr, uint16 len, uint8* buf )
oAT24C08C_PAGE_WRITE 函数是一个 API 函数,用于将 buf[0] 至 buf[len-1] 的值按顺序写入指定地址 mem_adr 处的 AT24C08C 芯片。该函数在写入操作完成(即 iAT24C08C_WRITE_TIME [ms] 时间间隔)前,返回 eSTS_EXE 返回值。
注意:
如果 mem_adr + len > 0bXXXXXX1111,则地址 A4 至 A8 固定,而 A0 至 A3 将滚动到 0bXXXXXX0000。
iAT24C08C_WRITE_TIME [ms] 的经过时间测量是根据调用此函数的线程周期计算的,因此请将线程周期设置为 THREAD_OSS_ECAL_PERIOD [ms]。
在使用此函数之前,请使用 oAT24C08C_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 0x03FF | |
uint16 len | Number of bytes to write (Max 16) | ||
uint8* buf | Data buffer to write |
etSTS oAT24C08C_CURRENT_READ( etCMP cmp, uint8* rlt )
oAT24C08C_CURRENT_READ 函数是一个 API 函数,用于从 AT24C08C 的最后一次读取或写入地址加 1 的位置读取 1 个字节的值,并将其存储在 rlt 中。
注意:
如果 mem_adr + len > 0b1111111111,地址将滚动到 0b0000000000。
返回值 | 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 oAT24C08C_RANDOM_READ( etCMP cmp, uint16 mem_adr, uint8* rlt )
oAT24C08C_RANDOM_READ 函数是一个 API 函数,用于从 AT24C08C 芯片的指定地址 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 0x03FF | |
参数 OUT | uint8* rlt | Data to read |
etSTS oAT24C08C_SEQ_READ( etCMP cmp, uint16 mem_adr, uint16 len, uint8* buf )
oAT24C08C_SEQ_READ 函数是一个 API 函数,用于从指定地址 mem_adr 读取 AT24C08C 中的数据,读取长度为 len,并将数据从 buf[0] 存储到 buf[len-1]。
注意:
如果 mem_adr + len > 0b1111111111,地址将滚动到 0b0000000000。
返回值 | 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 0x03FF | |
uint16 len | Number of bytes to read | ||
参数 OUT | uint8* buf | Data to read |
etSTS oAT24C08C_WP_EN( etCMP cmp )
oAT24C08C_WP_EN 函数是一个 API 函数,用于输出 AT24C08C 的写保护使能(写禁用)= “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 )
oAT24C08C_WP_DIS 函数是一个 API 函数,用于将 AT24C08C 的写保护禁用(写使能)设置为“低”电平。
返回值 | 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 | X |
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 |
---|---|---|
AT24C08C_HALNAME_010000/sample | sample.c (.cpp) | Sample application program |
sample.h | Sample application header | |
AT24C08C_HALNAME_010000 | oAT24C08C.c (.cpp) | OSS-ECAL program for AT24C08C |
oAT24C08C.h | OSS-ECAL header for AT24C08C | |
oss_ecal.h | OSS-ECAL common header | |
AT24C08C_ARDUINO.ino | Sample application programs for Arduino | |
user_setting.c (.cpp) | User configured constants and tables | |
user_setting.h | User configuration Header | |
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功能集成到您的用户程序中。
引脚A2应在user_setting.h文件中设置为以下代码。
// Device address Code bit2:A2
#define AT24C08C_1 0b00000000
对于 Infineon 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 超时时间为 25 毫秒。
注意:
对于以下命令 API 函数,超时时间会根据读写数据长度 len 而有所不同。
etSTS oAT24C08C_PAGE_WRITE( etCMP cmp, uint16 mem_adr, uint16 len, uint8* buf )
etSTS oAT24C08C_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 事件中断时采集压力(高优先级)