CAT24C512

CAT24C512的概述以及CAT24C512用OSS-ECAL的提供情况。CAT24C512是onsemi公司生产的 65,536words × 8bits EEPROM(Electrically Erasable and Programmable Read-Only Memory)。
MCU interface : I2C

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

CAT24C512

概述

CAT24C512 是一款 EERPOM 串行 512 千字节 I2C 设备,内部组织为 65,536 个 8 位字。它具有 128 字节的页面写入缓冲区,并支持标准(100 kHz)、快速(400 kHz)和快速增强(1 MHz)I2C 协议。通过将 WP 引脚置高可禁止写操作(这可保护整个内存)。外部地址引脚使同一总线上最多可地址八个 CAT24C512 设备。片上 ECC(错误校正码)使该设备适用于高可靠性应用。

特点

  • 支持标准(100kHz)、快速(400kHz)和快速增强(1MHz)的I2C协议。
  • 电源电压范围 1.8 V~5.5 V
  • 128字节页面写入缓冲区
  • 整个内存的硬件写保护
  • I2C总线输入(SCL和SDA)的施密特触发器和噪声抑制滤波器
  • 低功耗CMOS技术
  • 1,000,000 次编程/擦除循环
  • 100年数据保留
  • 工业用及扩展温度范围
  • 8引脚、SOIC、TSSOP、8焊盘UDFN及8球WLCSP封装
  • 这些设备不含铅、不含卤素/不含溴化阻燃剂,符合RoHS标准。

OSS-ECAL规格

API 函数

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

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

oCAT24C512_BYTE_WRITE 函数是用于向 CAT24C512 指定地址 mem_adr 写入值 val 的 API 函数。该函数在写入完成所需的时间(iCAT24C512_WRITE_TIME [ms])经过后,返回值 eSTS_EXE。

注意:
iCAT24C512_WRITE_TIME [ms] 的经过时间测量是根据调用此函数的线程周期计算的,因此请将线程周期设置为 THREAD_OSS_ECAL_PERIOD [ms]。
在使用此函数之前,请使用 oCAT24C512_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 0xffff
uint8 valData to write
etSTS oCAT24C512_PAGE_WRITE( etCMP cmp, uint16 mem_adr, uint16 len, uint8* buf )

oCAT24C512_PAGE_WRITE 函数是用于向 CAT24C512 设备写入指定地址 mem_adr 起始的 buf[0] 至 buf[len-1] 值的 API 函数。该函数在写入操作完成所需的时间(iCAT24C512_WRITE_TIME [ms])内,返回状态码 eSTS_EXE。

注意:
当mem_adr + len的值大于0bXXXXXXXXX1111111时,地址将固定为A7至A15,而A0至A6将滚动到0bXXXXXXXXX0000000。
CAT24C512_WRITE_TIME [ms] 的经过时间测量是根据调用此函数的线程周期计算的,因此请将线程周期设置为 THREAD_OSS_ECAL_PERIOD [ms]。
在使用此函数之前,请使用 oCAT24C512_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 0xffff
uint16 lenNumber of bytes to write (Max 128)
uint8* bufData buffer to write
etSTS oCAT24C512_IMM_ADR_READ( etCMP cmp, uint8* rlt )

oCAT24C512_IMM_ADR_READ 函数是一个 API 函数,用于从 CAT24C512 中读取上次读取或写入地址加 1 后的 1 字节值,并将其保存到 rlt 中。

注意:
上次读取或写入的地址 + 1 > 0b1111111111111111 时,地址将滚动到 0b0000000000000000。

返回值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 oCAT24C512_SELECT_READ( etCMP cmp, uint16 mem_adr, uint8* rlt )

oCAT24C512_SELECT_READ函数是一个API函数,用于从CAT24C512中读取指定地址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 0xffff
参数 OUTuint8* rltData to read
etSTS oCAT24C512_SEQ_READ( etCMP cmp, uint16 mem_adr, uint16 len, uint8* buf )

oCAT24C512_SEQ_READ函数是一个API函数,用于从CAT24C512设备指定的地址mem_adr开始,依次读取len个数据,并将这些数据保存到buf[0]到buf[len-1]的缓冲区中。

注意:
当mem_adr + len的值大于0bXXXXXXXXX1111111时,地址将固定为A7至A15,而A0至A6将滚动到0bXXXXXXXXX0000000。

返回值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 0xffff
uint16 lenNumber of bytes to read
参数 OUTuint8* bufData to read
etSTS oCAT24C512_WP_EN( etCMP cmp )

oCAT24C512_WP_EN 函数是用于向 CAT24C512 输出“写保护启用(写禁用)= ‘Hi’”的 API 函数。

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

oCAT24C512_WP_DIS函数是用于对CAT24C512执行写保护禁用(写使能)= “低”输出的API函数。

返回值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.3LinuxX
InfineonModusToolboxmtb-hal-cat12.4.3ModusToolboxX
NXPMCUXpresso SDKSDK_2.x_EVKB-IMXRT10502.16iMXRT1051B1052BX
RenesasSynergy Software PackageHAL2.6.0SSPX
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
CAT24C512_HALNAME_010000/samplesample.c (.cpp)Sample application program
sample.hSample application header
CAT24C512_HALNAME_010000oCAT24C512.c (.cpp)OSS-ECAL program for CAT24C512
oCAT24C512.hOSS-ECAL header for CAT24C512
oss_ecal.hOSS-ECAL common header
CAT24C512_ARDUINO.inoSample application programs for Arduino
user_setting.c (.cpp)User configured constants and tables
user_setting.hUser configuration Header
readme.mdReadme
OSS-ECAL Terms of Use.txtOSS-ECAL Terms of Use

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

OSS-ECAL 下载

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

内置方法

请参考以下内容,将API功能集成到您的用户程序中。

Pin A0、A1、A2的设置请按照user_setting.h文件中的以下代码进行设置。
Renesas SSP 中的 I2C 设备地址设置方法

// Device address Code bit2:A2, bit1:A1, bit0:A0
#define CAT24C512_1             0b00000111

对于 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 oCAT24C512_PAGE_WRITE( etCMP cmp, uint16 mem_adr, uint16 len, uint8* buf )
etSTS oCAT24C512_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: 内容受保护 !