1. 程式人生 > >玩轉X-CTR100 l STM32F4 l AT24C02 EEPROM存儲

玩轉X-CTR100 l STM32F4 l AT24C02 EEPROM存儲

bubuko com wid round 進行 width ray 主程序 博客

技術分享圖片

我造輪子,你造車,創客一起造起來!塔克創新資訊【塔克社區 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/

技術分享圖片

本文介紹X-CTR100控制器 板載EEPROM存儲芯片AT24C02的使用,EEPROM常用於參數存儲,系統掉電後也可以保存數據。

對比FLASH容量小,但是具有更高的擦寫壽命。

原理

AT24C02是一個2K位串行CMOS E2PROM, 內部含有256個8位字節,CATALYST公司的先進CMOS技術實質上減少了器件的功耗。AT24C02有一個16字節頁寫緩沖器。該器件通過IIC總線接口進行操作,有一個專門的寫保護功能。

管腳名稱

功能

A0A1A2

器件地址選擇

SDA

串行數據、地址

SCL

串行時鐘

WP

寫保護

VCC

+1.8V~6.0V工作電壓

VSS

例程

本例程實現單字節讀寫功能和連續字節讀寫功能。

硬件說明

硬件資源:

  • 串口UART1
  • 板載資源AT24C02

硬件連接:

技術分享圖片

X-CTR100設計有EEPROM芯片AT24C02,與MPU6050公用IIC2接口,地址引腳連接到GND。

軟件生態

X-SOFT軟件生態,X-API文件如下。

ax_at24c02.c——X-CTR100 板載 AT24C02 EEPROM 存儲源文件

ax_at24c02.h——X-CTR100 板載 AT24C02 EEPROM 存儲頭文件

操作函數如下:

void AX_AT24C02_Init(void); //AT24C02初始化

void AX_AT24C02_Write(uint8_t *pbuf, uint8_t addr, uint8_t num); //AT24C02指定地址寫入指定長度的數據

void AX_AT24C02_Read(uint8_t *pbuf, uint8_t addr, uint8_t num); //AT24C02指定地址讀出指定長度的數據

void AX_AT24C02_WriteOneByte(uint8_t addr, uint8_t data); //AT24C02指定地址寫入一個字節

uint8_t AX_AT24C02_ReadOneByte(uint8_t addr); //AT24C02指定地址讀取一個字節

軟件說明

本例程首先AT24C02初始化。然後進行單字節讀寫測試,分別向地址10、11、12寫入數據,並讀出數據顯示,對比寫入和讀出的數據是否相同。然後進行多字節連續讀寫測試,向地址0寫入字符串,並讀出顯示,對比寫入和讀出內容是否相同。主程序代碼如下。

int main(void)

{

uint8_t tmp[3];

uint8_t str[] = { "X-CTR100 EEPROM TEST" };

uint8_t str1[sizeof(str)];

/* X-CTR100初始化 */

AX_Init(115200);

printf("***X-CTR100 EEPROM AT24C02讀寫例程***\r\n\r\n");

//模塊初始化及配置

AX_AT24C02_Init();

//X-API測試:單字節讀寫測試

printf("*單字節讀寫測試\r\n");

AX_AT24C02_WriteOneByte(10, 10); //地址10 寫入10

AX_AT24C02_WriteOneByte(11, 20); //地址11 寫入20

AX_AT24C02_WriteOneByte(12, 30); //地址12 寫入30

tmp[0] = AX_AT24C02_ReadOneByte(10); //從地址10讀出數據

tmp[1] = AX_AT24C02_ReadOneByte(11); //從地址11讀出數據

tmp[2] = AX_AT24C02_ReadOneByte(12); //從地址12讀出數據

printf("*地址10 11 12 寫入數據:10 20 30\r\n");

printf("*地址10 11 12 讀出數據:%d %d %d\r\n\r\n", tmp[0], tmp[1], tmp[2]);

//X-API測試:連續讀寫測試

printf("*連續讀寫測試\r\n");

AX_AT24C02_Write(str, 0, sizeof(str)); //地址0 寫入 str

AX_AT24C02_Read(str1, 0, sizeof(str)); //地址0 讀出數據到 str1

printf("*地址0 寫入數據:%s\r\n", str);

printf("*地址0 讀出數據:%s\r\n", str1);

while (1)

{

AX_Delayms(1000);

AX_LEDG_Toggle();

}

}

實現效果

上電復位後,運行效果如下圖所示。

技術分享圖片

玩轉X-CTR100 l STM32F4 l AT24C02 EEPROM存儲