EEPROM(帶電可擦可編程只讀存儲器)是用戶可更改的只讀存儲器,可通過高于普通電壓的作用來擦除和重編程(重寫)。不像EPROM芯片,EEPROM不需從計算機中取出即可修改。在一個EEPROM中,當計算機在使用的時候可頻繁地反復編程,因此EEPROM的壽命是一個很重要的設計考慮參數(shù)。EEPROM是一種特殊形式的閃存,其應用通常是個人電腦中的電壓來擦寫和重編程 。-(來自百度)
該芯片特性(AT93C46):
1、高速操作,最大速度3MHZ的讀寫操作。
2、1KB的存儲空間。
3、寬電壓輸入(1.8V-6V)。
4、可通過ORG(6腳)來選擇8位-16位數(shù)據(jù)流
5、上電寫保護功能
6、1百萬個編程周期
7、100年的數(shù)據(jù)保存壽命
01引腳連接及時序
管腳名稱 | 功能 |
---|---|
CS(1) | 芯片片選信號(高電平有效) |
SK(2) | 數(shù)據(jù)傳輸?shù)?a href="http://m.hljzzgx.com/tags/時鐘/" target="_blank">時鐘信號 |
DI(3) | 串行數(shù)據(jù)輸入 |
DO(4) | 串行數(shù)據(jù)輸入 |
GND(5) | 電源地 |
ORG(6) | 數(shù)據(jù)位選擇(GND:8Bit數(shù)據(jù)流 VCC:16位數(shù)據(jù)流) |
NC(7) | 空腳 |
VCC(8) | +1.8V-6V電壓 |
內(nèi)部結構:
連接方式如圖:
C93_CS->CS
C93_SCK->SCK
C93-DI->DI
C93_DO->DO(引腳配置為輸入模式)
除DO引腳配置為輸入模式外,其余引腳均配置為輸出模式。
時序圖:
寫時序:
讀時序:
寫保護使能(Disable):
去寫保護:(Enable)
另外還有幾條指令我們需要知道的
寫入的數(shù)據(jù)包含1位開始位兩位操作位及地址位。
02編程方法操作
因為擦除等指令需要4.5V上的電壓這里提供不了,所以并沒有使用,但是寫入數(shù)據(jù)的時候會自動覆蓋原先數(shù)據(jù),所以不用擔心
其代碼如下:
/****************************************/
/*****AT93C46 EEPROM 驅(qū)動 8Bit數(shù)據(jù)流 ****/
/****************************************/
//2021.09.03 羊羊課代表By DDY
//讀取及寫入需要存在一定時間間隔,請注意。
void Start_Bit()//寫入開始位
{
AT93C_CS_L;
AT93C_CLK_L;
AT93C_DI_H; //待寫入1
AT93C_CS_H;//選中芯片
AT93C_CLK_H;
AT93C_CLK_L;//給時鐘信號
AT93C_DI_L;//置位引腳
}
void AT93_Clock()//時鐘信號
{
AT93C_CLK_H;
HAL_Delay(1);
AT93C_CLK_L;
}
void AT93_Send_9_Dat(uint16_t Data)
{
for(uint8_t i=0;i< 9;i++)//加上面的開始位
{ //送進的格式為1 01XXXXXXX 指令加地址
if(Data&(0x100 >>i))
AT93C_DI_H;
else AT93C_DI_L;
AT93_Clock();
}
}
void AT93C_Enable(uint8_t Bit)
{
uint8_t Temp=0;
if(Bit) Temp=0x98;//Enable寫使能
else Temp=0x80; //Disable寫禁使能
AT93C_CS_L;//引腳電平重置
AT93C_CLK_L;//引腳電平重置
AT93C_CS_H;//選中芯片
for(uint8_t i=0;i< 10;i++)//發(fā)送10位指令
{
if(Temp&0x80 >>i)
AT93C_DI_H ;
else AT93C_DI_L;
AT93_Clock();
}
AT93C_CS_L;//置低降低功耗
AT93C_DI_L;
}
void AT93C_Write(uint8_t Addr,uint8_t Data)
{
AT93C_Enable(1);//寫使能
Addr|=0x80;//數(shù)據(jù)變?yōu)?XXXXXXX
Start_Bit(); //寫一個開始位
AT93_Send_9_Dat(Addr);
AT93C_DI_L;
for(uint8_t i=0;i< 8;i++) //送進8Bit數(shù)據(jù)
{
if(Data&(0x80 >>i))
AT93C_DI_H;
else AT93C_DI_L;
AT93_Clock();
}
AT93C_CS_L;//置低降低功耗
AT93C_Enable(0); //禁寫使能
}
uint8_t AT93C_Read(uint8_t Addr)//讀該地址的8Bit數(shù)據(jù)
{
uint8_t Data=0;
AT93C_Enable(1);
Start_Bit();
AT93_Send_9_Dat((0x7f&Addr)|0x100);//數(shù)據(jù)變成10XXXXXXX;
AT93_Clock();
for(uint8_t i=0;i< 8;i++)//接收8位數(shù)據(jù)
{
if(AT93C_ReadDO)
{
Data|=0x80 >>i;
}
AT93_Clock();
}
AT93C_CS_L;//置低降低功耗
AT93C_Enable(0);
return Data;
}
//extern char str[20];
//void Test()
//{
// temp=AT93_Read(0x01);
// sprintf(str,"%03d",temp);
// OLED_Show_Str(96,0,str,Font8x16,0);
// Updata_OLED();
// HAL_Delay(100);
// temp+=1;
// AT93C_Write(0x01,temp);
//}
-
芯片
+關注
關注
455文章
50714瀏覽量
423131 -
閃存
+關注
關注
16文章
1782瀏覽量
114892 -
存儲器
+關注
關注
38文章
7484瀏覽量
163761 -
計算機
+關注
關注
19文章
7488瀏覽量
87848 -
EEPROM
+關注
關注
9文章
1019瀏覽量
81559
發(fā)布評論請先 登錄
相關推薦
評論