玩轉X-CTR100 l STM32F4 l AT24C02 EEPROM存儲
我造輪子,你造車,創客一起造起來!塔克創新資訊【塔克社區 www.xtark.cn 】【塔克博客 www.cnblogs.com/xtark/ 】
本文介紹X-CTR100控制器 板載EEPROM存儲芯片AT24C02的使用,EEPROM常用於參數存儲,系統掉電後也可以保存數據。
對比FLASH容量小,但是具有更高的擦寫壽命。
原理
AT24C02是一個2K位串行CMOS E2PROM, 內部含有256個8位字節,CATALYST公司的先進CMOS技術實質上減少了器件的功耗。AT24C02有一個16字節頁寫緩沖器。該器件通過IIC總線接口進行操作,有一個專門的寫保護功能。
管腳名稱 | 功能 |
A0、A1、A2 | 器件地址選擇 |
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存儲