0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32基礎(chǔ)知識(shí):IIC總線操作EEPROM存儲(chǔ)模塊AT24C02

CHANBAEK ? 來(lái)源:上下求索電子er ? 作者:上下求索電子er ? 2023-10-26 14:25 ? 次閱讀

STM32基礎(chǔ):IIC總線操作EEPROM存儲(chǔ)模塊AT24C02

參考文檔:AT24C02數(shù)據(jù)手冊(cè)

STM32基礎(chǔ):IIC概述與軟件模擬IIC一文中,詳細(xì)介紹了使用STM32的GPIO口模擬IIC總線的方法,如果讀者對(duì)IIC總線還不了解,請(qǐng)先閱讀此文。

本文是IIC總線的實(shí)際應(yīng)用,將帶領(lǐng)讀者一步一步閱讀AT24C02數(shù)據(jù)手冊(cè),看時(shí)序圖了解如何使用IIC接口EEPROM存儲(chǔ)模塊AT24C02,并編寫(xiě)代碼使用STM32驅(qū)動(dòng)這個(gè)模塊。

1 AT24C02概述

1.1 基本描述

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P1

從上文可以知道,AT24C02提供2048位串行電可擦除和可編程只讀存儲(chǔ)器(EEPROM),組織256字節(jié)。該器件針對(duì)許多汽車應(yīng)用進(jìn)行了優(yōu)化,在這些應(yīng)用中,低功耗和低電壓操作是必不可少的。

AT24C02具有節(jié)省空間的8引腳JEDEC SOIC和8引腳TSSOP封裝,可通過(guò) 雙線串行接口(即IIC) 訪問(wèn)。此外,整個(gè)系列還提供2.7V (2.7V至5.5V)版本。

1.2 重要特點(diǎn)

AT24C02有如下特點(diǎn),重點(diǎn)用紅色標(biāo)出:

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P1

  • 存儲(chǔ)器內(nèi)部按組織256字節(jié) × 8位 (2K)組織
  • 雙線串行接口(IIC)
  • 兼容400kHz通信速率
  • 具有硬件數(shù)據(jù)保護(hù)的寫(xiě)保護(hù)引腳
  • 8字節(jié)/頁(yè)寫(xiě)模式
  • 允許部分頁(yè)寫(xiě)入
  • 高可靠性:100萬(wàn)次寫(xiě)周期,數(shù)據(jù)保留:100年

1.3 引腳定義

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P1

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P2

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P3

DA、SCL為IIC總線使用引腳不再贅述。從上文可以知道,A2,A1和A0引腳用于AT24C02的設(shè)備地址輸入。WP為寫(xiě)保護(hù)引腳,提供硬件數(shù)據(jù)保護(hù)。寫(xiě)保護(hù)引腳在連接到地(GND)時(shí)允許正常的讀寫(xiě)操作。當(dāng)寫(xiě)保護(hù)引腳接在VCC上時(shí),寫(xiě)保護(hù)功能開(kāi)啟,操作如下表所示。

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P3

在開(kāi)發(fā)板的原理圖上可以看到,設(shè)備地址輸入A2、A1、A0都為0,WP已近接在GND上關(guān)閉了寫(xiě)保護(hù),我們可以正常讀寫(xiě)。

圖片

1.4 存儲(chǔ)空間

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P4

AT24C02,2K,串行EEPROM內(nèi)部組織為32頁(yè),每頁(yè)8字節(jié),2K需要一個(gè)8位的字地址進(jìn)行隨機(jī)字尋址。

1.5 設(shè)備地址

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P8

2K EEPROM設(shè)備都需要一個(gè) 8位設(shè)備地址字 , 包含一個(gè)啟動(dòng)條件 ,以使芯片能夠進(jìn)行讀或?qū)懖僮鳌?/p>

設(shè)備地址字前4位最高有效位為1010。這對(duì)所有串行EEPROM設(shè)備都是通用的。接下來(lái)的3位是1K/2K EEPROM的A2、A1和A0設(shè)備地址位。設(shè)備地址的第8位是讀寫(xiě)操作選擇位。如果該位高,則進(jìn)行讀操作;如果該位低,則進(jìn)行寫(xiě)操作。

綜上,如果對(duì)AT24C02進(jìn)行讀操作,則設(shè)備地址為10100001B=A1H;如果對(duì)AT24C02進(jìn)行寫(xiě)操作,則設(shè)備地址為10100000B=A0H.

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P9

2 AT24C01編程

2.1 寫(xiě)操作:字編程和頁(yè)編程

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P8

寫(xiě)數(shù)據(jù)有字編程和頁(yè)編程兩種方式:

  • 字編程:一次寫(xiě)入一個(gè)字節(jié)。
  • 頁(yè)編程:1K/2K EEPROM能夠一次寫(xiě)入一個(gè)8字節(jié)的頁(yè)。

如果打算寫(xiě)入數(shù)據(jù),則需要知道數(shù)據(jù)的存儲(chǔ)地址。因?yàn)锳T24C02的存儲(chǔ)空間為2K(2^11),故尋址空間為02^11-1,即000H7FFH。每頁(yè)8字節(jié),故第1頁(yè)地址000H,第2頁(yè)地址008H,第3頁(yè)地址010H,……,第256頁(yè)地址7F8H。

下圖描述了字編程寫(xiě)數(shù)據(jù)的過(guò)程,根據(jù)圖中的分析和前文的講述,可以寫(xiě)出字編程函數(shù):

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P10

/**
 * @brief AT24C02初始化
 * 
 */
void AT24C02_Init(void)
{
  IIC_Init();  // 初始化IIC總線
}

/**
 * @brief AT24C02字節(jié)寫(xiě)入
 * 
 * @param Address: 字節(jié)地址
 * @param Data: 待寫(xiě)入的數(shù)據(jù)
 */
void AT24C02_ByteWrite(uint8_t Address, uint8_t Data)
{
  IIC_StartSignal();        // 發(fā)送開(kāi)始信號(hào)

  // 發(fā)送設(shè)備地址,寫(xiě)操作
  IIC_SendBytes(0xA0);     
  if (IIC_WaitACK() == 1)   // AT24C02沒(méi)應(yīng)答
  {
    printf("[AT24C02] Answered the device address: Errorn");
    IIC_StopSignal();       // 發(fā)送停止信號(hào)
  }
  else
  {
    printf("[AT24C02] Answered the device address: OKn");
  }

  // 發(fā)送字地址
  IIC_SendBytes(Address);   
  if (IIC_WaitACK() == 1)   // AT24C02沒(méi)應(yīng)答
  {
    printf("[AT24C02] Answered the word address: Errorn");
    IIC_StopSignal();       // 發(fā)送停止信號(hào)
  }
  else
  {
    printf("[AT24C02] Answered the word address: OKn");
  }

  // 發(fā)送待寫(xiě)入的數(shù)據(jù)
  IIC_SendBytes(Data);     
  if (IIC_WaitACK() == 1)   // AT24C02沒(méi)應(yīng)答
  {
    printf("[AT24C02] Answered the data: Errorn");
    IIC_StopSignal();       // 發(fā)送停止信號(hào)
  }
  else
  {
    printf("[AT24C02] Answered the data: OKn");
  }

  IIC_StopSignal();         // 發(fā)送停止信號(hào)
}

下圖描述了頁(yè)編程寫(xiě)數(shù)據(jù)的過(guò)程,根據(jù)圖中的分析和前文的講述,可以寫(xiě)出頁(yè)編程函數(shù):

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P10

/**
 * @brief AT24C02頁(yè)編程(8字節(jié)/頁(yè))
 * 
 * @param Address: 頁(yè)地址
 * @param buf: 待寫(xiě)入的數(shù)據(jù)
 * @param DataLen: 待寫(xiě)入的數(shù)據(jù)長(zhǎng)度 
 */
void AT24C02_PageWrite(uint32_t Address, uint8_t *buf, uint8_t DataLen)
{
  IIC_StartSignal();        // 發(fā)送開(kāi)始信號(hào)

  // 發(fā)送設(shè)備地址,寫(xiě)操作
  IIC_SendBytes(0xA0);
  if (IIC_WaitACK() == 1)   // AT24C02沒(méi)應(yīng)答
  {
    printf("[AT24C02] Answered the device address: Errorn");
    IIC_StopSignal();       // 發(fā)送停止信號(hào)
  }
  else
  {
    printf("[AT24C02] Answered the device address: OKn");
  }

  // 發(fā)送頁(yè)地址
  IIC_SendBytes(Address);
  if (IIC_WaitACK() == 1)   // AT24C02沒(méi)應(yīng)答
  {
    printf("[AT24C02] Answered the page address: Errorn");
    IIC_StopSignal();       // 發(fā)送停止信號(hào)
  }
  else
  {
    printf("[AT24C02] Answered the page address: OKn");
  }

  // 循環(huán)發(fā)送數(shù)據(jù)
  while (DataLen--)
  {
    IIC_SendBytes(*buf++);  // 發(fā)送數(shù)據(jù)
    if (IIC_WaitACK() == 1) // AT24C02沒(méi)應(yīng)答
    {
      printf("[AT24C02] Answered the data: Errorn");
      IIC_StopSignal();     // 發(fā)送停止信號(hào)
    }
    else
    {
      printf("[AT24C02] Answered the data: OKn");
    }
  }

  IIC_StopSignal();         // 發(fā)送停止信號(hào)
}

2.2 讀操作:當(dāng)前地址讀

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P19

  1. 當(dāng)前地址讀:內(nèi)部地址計(jì)數(shù)器保存著上次訪問(wèn)時(shí)最后一個(gè)地址加1的值 。(使用”當(dāng)前地址讀“讀出的數(shù)據(jù),其地址為上次訪問(wèn)的最后一個(gè)地址加1。)
  2. 只要芯片有電,該地址就一直保存,當(dāng)讀到最后頁(yè)的最后字節(jié),地址會(huì)回轉(zhuǎn)到0:
  3. 當(dāng)寫(xiě)到某頁(yè)尾的最后一個(gè)字節(jié),地址會(huì)回轉(zhuǎn)到該頁(yè)的首字節(jié)。
  4. 接收器件地址(讀/寫(xiě)選擇位為"1")、EEPROM應(yīng)答ACK后,當(dāng)前地址的數(shù)據(jù)就隨時(shí)鐘送出。主器件無(wú)需應(yīng)答"0",但需發(fā)送停止條件。

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P10

根據(jù)此圖和前文的講述,編寫(xiě)當(dāng)前地址讀函數(shù):

/**
 * @brief AT24C02當(dāng)前地址讀
 * 
 * @return uint8_t 當(dāng)前地址的數(shù)據(jù)
 */
uint8_t AT24C02_CurrentAddressRead(void)
{
  uint8_t Data;

  IIC_StartSignal(); // 發(fā)送開(kāi)始信號(hào)

  // 發(fā)送設(shè)備地址,讀操作
  IIC_SendBytes(0xA1);     
  if (IIC_WaitACK() == 1)   // AT24C02沒(méi)應(yīng)答
  {
    printf("[AT24C02] Answered the device address: Errorn");
    IIC_StopSignal();       // 發(fā)送停止信號(hào)
  }
  else
  {
    printf("[AT24C02] Answered the device address: OKn");
  }
  
  // 讀取1字節(jié)數(shù)據(jù)
  Data = IIC_ReadBytes();

  // 發(fā)送應(yīng)答信號(hào)
  IIC_MasterACK(1); // 不應(yīng)答

  IIC_StopSignal(); // 發(fā)送停止信號(hào)
  return Data;      // 返回接收到的數(shù)據(jù)
}

下面我們測(cè)試前面寫(xiě)的四個(gè)函數(shù)(AT24C02_InitAT24C02_ByteWrite,AT24C02_PageWrite,AT24C02_CurrentAddressRead),測(cè)試過(guò)程為:

  • 使用AT24C02_Init初始化AT24C02
  • 使用AT24C02_PageWrite向0x00寫(xiě)入“0123456”
  • 使用AT24C02_ByteWrite向0x07寫(xiě)入“7”
  • 使用AT24C02_CurrentAddressRead進(jìn)行“當(dāng)前地址讀”
    (0x00-0x07已經(jīng)被寫(xiě)入“01234567”,即第一頁(yè)寫(xiě)滿了,此時(shí)地址會(huì)回到該頁(yè)首字節(jié),使用“當(dāng)前地址讀”讀出的應(yīng)該是該頁(yè)第一個(gè)字節(jié)“0”)

如果輸出的提示信息全部正常且返回值為“0”則說(shuō)明這四個(gè)函數(shù)編寫(xiě)正確。測(cè)試效果如下圖,測(cè)試成功。

uint8_t data;

AT24C02_Init()

AT24C02_PageWrite(0x00, "0123456", 6);
HAL_Delay(100);

AT24C02_ByteWrite(0x07, '7');  
HAL_Delay(100);

data = AT24C02_CurrentAddressRead();
printf("AT24C02_CurrentAddressRead: %c", data);

圖片

2.3 讀操作:隨機(jī)讀

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P9

隨機(jī)讀需先寫(xiě)一個(gè)目標(biāo)字地址 ,一旦EEPROM接收器設(shè)備地址(讀/寫(xiě)選擇位為"0")和字地址并應(yīng)答了ACK,主機(jī)就產(chǎn)生一個(gè)重復(fù)的起始條件。然后,主器件發(fā)送設(shè)備地址(讀/寫(xiě)選擇位為"1"),EEPROM應(yīng)答ACK,并隨時(shí)鐘送出數(shù)據(jù)。主器件無(wú)需應(yīng)答"0",但需發(fā)送停止條件。

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P11

根據(jù)此圖和前文的講述,編寫(xiě)隨機(jī)讀函數(shù):

/**
 * @brief AT24C02隨機(jī)讀1字節(jié)數(shù)據(jù)
 * 
 * @param Address: 字地址 
 * @return uint8_t 讀取到的數(shù)據(jù)
 */
uint8_t AT24C02_RandomRead(uint8_t Address)
{
  uint8_t Data;

  IIC_StartSignal(); // 發(fā)送開(kāi)始信號(hào)

  // 發(fā)送設(shè)備地址,寫(xiě)操作
  IIC_SendBytes(0xA0);     
  if (IIC_WaitACK() == 1)   // AT24C02沒(méi)應(yīng)答
  {
    printf("[AT24C02] Answered the device address: Errorn");
    IIC_StopSignal();       // 發(fā)送停止信號(hào)
  }
  else
  {
    printf("[AT24C02] Answered the device address: OKn");
  }

  // 發(fā)送字?jǐn)?shù)據(jù)的地址
  IIC_SendBytes(Address);   
  if (IIC_WaitACK() == 1)   // AT24C02沒(méi)應(yīng)答
  {
    printf("[AT24C02] Answered the word address: Errorn");
    IIC_StopSignal();       // 發(fā)送停止信號(hào)
  }
  else
  {
    printf("[AT24C02] Answered the word address: OKn");
  }

  IIC_StartSignal();        // 發(fā)送開(kāi)始信號(hào)

  // 發(fā)送設(shè)備地址,讀操作
  IIC_SendBytes(0xA1);     
  if (IIC_WaitACK() == 1)   // AT24C02沒(méi)應(yīng)答
  {
    printf("[AT24C02] Answered the device address: Errorn");
    IIC_StopSignal();       // 發(fā)送停止信號(hào)
  }
  else
  {
    printf("[AT24C02] Answered the device address: OKn");
  }
  
  // 讀取1字節(jié)數(shù)據(jù)
  Data = IIC_ReadBytes();

  // 發(fā)送應(yīng)答信號(hào)
  IIC_MasterACK(1); // 不應(yīng)答

  IIC_StopSignal(); // 發(fā)送停止信號(hào)

  return Data;      // 返回接收到的數(shù)據(jù)
}

下面我們測(cè)試AT24C02_RandomRead函數(shù),測(cè)試過(guò)程為:

  • 使用AT24C02_Init初始化AT24C02
  • 使用AT24C02_PageWrite向0x00寫(xiě)入“01234567”
  • 使用AT24C02_RandomRead讀出0x07處的數(shù)據(jù)
uint8_t data;

AT24C02_Init();
AT24C02_PageWrite(0x00, "01234567", 7);
HAL_Delay(100);

data = AT24C02_RandomRead(0x07);
printf("AT24C02_RandomRead: %c", data);

如果輸出的提示信息全部正常且返回值為“7”則說(shuō)明函數(shù)編寫(xiě)正確。測(cè)試效果如下圖,測(cè)試成功。

圖片

如果想要“隨機(jī)讀”函數(shù)可以一次讀取多個(gè)字節(jié),可以修改函數(shù)為如下形式:

/**
 * @brief AT24C02隨機(jī)讀n個(gè)字節(jié)
 * 
 * @param Address: 字地址 
 * @param RecvBuf: 接收緩沖區(qū) 
 * @param DataLen: 接收數(shù)據(jù)長(zhǎng)度 
 */
void AT24C02_RandomRead(uint8_t Address, uint8_t *RecvBuf, uint8_t DataLen)
{
  uint8_t Data;

  IIC_StartSignal(); // 發(fā)送開(kāi)始信號(hào)

  // 發(fā)送設(shè)備地址,寫(xiě)操作
  IIC_SendBytes(0xA0);     
  if (IIC_WaitACK() == 1)   // AT24C02沒(méi)應(yīng)答
  {
    printf("[AT24C02] Answered the device address: Errorn");
    IIC_StopSignal();       // 發(fā)送停止信號(hào)
  }
  else
  {
    printf("[AT24C02] Answered the device address: OKn");
  }

  // 發(fā)送字?jǐn)?shù)據(jù)的地址
  IIC_SendBytes(Address);   
  if (IIC_WaitACK() == 1)   // AT24C02沒(méi)應(yīng)答
  {
    printf("[AT24C02] Answered the word address: Errorn");
    IIC_StopSignal();       // 發(fā)送停止信號(hào)
  }
  else
  {
    printf("[AT24C02] Answered the word address: OKn");
  }

  IIC_StartSignal();        // 發(fā)送開(kāi)始信號(hào)

  // 發(fā)送設(shè)備地址,讀操作
  IIC_SendBytes(0xA1);     
  if (IIC_WaitACK() == 1)   // AT24C02沒(méi)應(yīng)答
  {
    printf("[AT24C02] Answered the device address: Errorn");
    IIC_StopSignal();       // 發(fā)送停止信號(hào)
  }
  else
  {
    printf("[AT24C02] Answered the device address: OKn");
  }
  
  // 讀取n字節(jié)數(shù)據(jù)
  DataLen -= 1;
  while (DataLen--) // 讀取n-1字節(jié)數(shù)據(jù),最后1字節(jié)數(shù)據(jù)單獨(dú)讀取
  {
    *RecvBuf++ = IIC_ReadBytes();

    // 發(fā)送應(yīng)答信號(hào)
    IIC_MasterACK(0); // 應(yīng)答
  }
  *RecvBuf++ = IIC_ReadBytes(); // 讀取最后1字節(jié)數(shù)據(jù)
  
  // 發(fā)送應(yīng)答信號(hào)
  IIC_MasterACK(1); // 不應(yīng)答

  IIC_StopSignal(); // 發(fā)送停止信號(hào)

  return Data;      // 返回接收到的數(shù)據(jù)
}

下面我們測(cè)試AT24C02_RandomRead函數(shù),測(cè)試過(guò)程為:

  • 使用AT24C02_Init初始化AT24C02
  • 使用AT24C02_PageWrite向0x00寫(xiě)入“01234567”
  • 使用AT24C02_RandomRead讀出0x00-0x07處的數(shù)據(jù)
uint8_t RecvBuf[10] = {0};

AT24C02_Init();
AT24C02_PageWrite(0x00, "01234567", 8);
HAL_Delay(100);

AT24C02_RandomRead(0x00, RecvBuf, 8);
printf("AT24C02_RandomRead: %s", RecvBuf);

如果輸出的提示信息全部正常且返回值為“01234567”則說(shuō)明函數(shù)編寫(xiě)正確。測(cè)試效果如下圖,測(cè)試成功。

圖片

2.4 讀操作:順序讀

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P9

AT24C02還有一種讀操作,就是順序讀取。順序讀取由當(dāng)前地址讀取或隨機(jī)地址讀取啟動(dòng)。主機(jī)接收到一個(gè)數(shù)據(jù)字后,它以確認(rèn)響應(yīng)。只要 EEPROM 接收到應(yīng)答,將自動(dòng)增加字地址并繼續(xù)隨時(shí)鐘發(fā)送后面的數(shù)據(jù)。當(dāng)達(dá)到內(nèi)存地址限制時(shí),地址自動(dòng)回轉(zhuǎn)到0,認(rèn)可繼續(xù)順序讀取數(shù)據(jù)。主機(jī)不應(yīng)答“0”,而發(fā)送停止條件,即可結(jié)束順序讀操作。

圖片
《AT24C02數(shù)據(jù)手冊(cè)》P11

正所謂“紙上得來(lái)終覺(jué)淺,絕知此事要躬行”。在對(duì)順序讀寫(xiě)略加分析后,順序讀取的代碼這里不再給出,讀者可以結(jié)合本文對(duì)前面幾種讀寫(xiě)操作的講解和順序讀操作的流程自行完成。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2270

    文章

    10900

    瀏覽量

    355924
  • EEPROM
    +關(guān)注

    關(guān)注

    9

    文章

    1020

    瀏覽量

    81587
  • IIC總線
    +關(guān)注

    關(guān)注

    1

    文章

    66

    瀏覽量

    20301
  • 存儲(chǔ)模塊
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    8891
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    AUTOSAR存儲(chǔ)模塊基礎(chǔ)知識(shí)

    AUTOSAR存儲(chǔ)模塊的解釋文章很多,本文整理存儲(chǔ)模塊基礎(chǔ)知識(shí)。
    發(fā)表于 10-08 09:30 ?6799次閱讀

    STM32 IIC讀寫(xiě)AT24C02(二)

    上次已經(jīng)完成了IIC讀寫(xiě)AT24C02的協(xié)議層,現(xiàn)在開(kāi)始編寫(xiě)讀寫(xiě)AT24C02的驅(qū)動(dòng)函數(shù)。先從單字節(jié)的讀寫(xiě)開(kāi)始。
    發(fā)表于 07-22 10:31 ?1541次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>IIC</b>讀寫(xiě)<b class='flag-5'>AT24C02</b>(二)

    IICAT24C02的讀寫(xiě)

    IICAT24C02的讀寫(xiě)(單片機(jī)實(shí)驗(yàn))有問(wèn)題歡迎私信哦課程設(shè)計(jì)(綜合實(shí)驗(yàn))內(nèi)容及要求通過(guò)IIC總線擴(kuò)展1片AT24C02芯片 ,實(shí)現(xiàn)單片
    發(fā)表于 07-16 06:27

    AT24C02芯片工作原理是什么

    AT24C02芯片工作原理在IIC通信時(shí),一般有寫(xiě)和讀兩種操作,我們用AT24C02來(lái)具體講解。AT24C02芯片工作原理
    發(fā)表于 07-29 09:04

    如何使用IIC總線AT24C02存儲(chǔ)芯片去讀寫(xiě)代碼呢

    AT24C02存儲(chǔ)芯片有哪些功能特性?IIC總線有哪些特征呢?如何使用IIC總線
    發(fā)表于 11-25 06:45

    配置STM32IIC硬件時(shí)序讀寫(xiě)AT24C02和AT24C08

    時(shí)序的,本文采用的是模擬時(shí)序,下篇文章就介紹配置STM32IIC硬件時(shí)序讀寫(xiě)AT24C02和AT24C08。模擬時(shí)序更加方便移植到其他單片機(jī),通用性更高,不分MCU;硬件時(shí)序效率更高
    發(fā)表于 12-08 06:27

    AT24C02 IIC總線串行EEPROM的資料介紹和應(yīng)用資料說(shuō)明

    AT24C02是由ATMEL公司提供的,IIC總線串行EEPROM(electronic eraser programmer read only memory),其容量為2kbit(2
    發(fā)表于 07-17 17:39 ?12次下載
    <b class='flag-5'>AT24C02</b> <b class='flag-5'>IIC</b><b class='flag-5'>總線</b>串行<b class='flag-5'>EEPROM</b>的資料介紹和應(yīng)用資料說(shuō)明

    微雪電子EEPROM存儲(chǔ)模塊AT24C簡(jiǎn)介

    AT24C EEPROM存儲(chǔ)模塊 I2C接口 提供測(cè)試程序(AVR、STM32、STM8、C
    的頭像 發(fā)表于 12-30 09:49 ?2370次閱讀
    微雪電子<b class='flag-5'>EEPROM</b><b class='flag-5'>存儲(chǔ)模塊</b>AT<b class='flag-5'>24C</b>簡(jiǎn)介

    EEPROM存儲(chǔ)芯片AT24C02芯片手冊(cè)

    EEPROM存儲(chǔ)芯片AT24C02芯片手冊(cè)(嵌入式開(kāi)發(fā)培訓(xùn)需要學(xué)多久)-EEPROM存儲(chǔ)芯片AT24C0
    發(fā)表于 07-30 13:20 ?183次下載
    <b class='flag-5'>EEPROM</b><b class='flag-5'>存儲(chǔ)</b>芯片<b class='flag-5'>AT24C02</b>芯片手冊(cè)

    IICAT24C02的讀寫(xiě)(單片機(jī)實(shí)驗(yàn))

    IICAT24C02的讀寫(xiě)(單片機(jī)實(shí)驗(yàn))有問(wèn)題歡迎私信哦課程設(shè)計(jì)(綜合實(shí)驗(yàn))內(nèi)容及要求通過(guò)IIC總線擴(kuò)展1片AT24C02芯片 ,實(shí)現(xiàn)單片
    發(fā)表于 11-22 09:21 ?73次下載
    <b class='flag-5'>IIC</b>及<b class='flag-5'>AT24C02</b>的讀寫(xiě)(單片機(jī)實(shí)驗(yàn))

    STM32入門(mén)開(kāi)發(fā): 介紹IIC總線、讀寫(xiě)AT24C02(EEPROM)(采用模擬時(shí)序)

    時(shí)序的,本文采用的是模擬時(shí)序,下篇文章就介紹配置STM32IIC硬件時(shí)序讀寫(xiě)AT24C02和AT24C08。模擬時(shí)序更加方便移植到其他單片機(jī),通用性更高,不分MCU;硬件時(shí)序效率更高
    發(fā)表于 11-25 20:06 ?39次下載
    <b class='flag-5'>STM32</b>入門(mén)開(kāi)發(fā): 介紹<b class='flag-5'>IIC</b><b class='flag-5'>總線</b>、讀寫(xiě)<b class='flag-5'>AT24C02</b>(<b class='flag-5'>EEPROM</b>)(采用模擬時(shí)序)

    IIC通信以及AT24C02使用

    文章目錄1.什么是通信協(xié)議①什么是IIC協(xié)議②IIC協(xié)議原理講解③IIC協(xié)議代碼講解2.AT24C02模塊
    發(fā)表于 11-30 20:51 ?15次下載
    <b class='flag-5'>IIC</b>通信以及<b class='flag-5'>AT24C02</b>使用

    Linux驅(qū)動(dòng)開(kāi)發(fā)-編寫(xiě)(EEPROM)AT24C02驅(qū)動(dòng)

    AT24C02IIC接口的EEPROM存儲(chǔ)芯片,這顆芯片非常經(jīng)典,百度搜索可以找到非常多的資料,大多都是51、STM32單片機(jī)的示例代碼,
    的頭像 發(fā)表于 09-17 15:29 ?3746次閱讀
    Linux驅(qū)動(dòng)開(kāi)發(fā)-編寫(xiě)(<b class='flag-5'>EEPROM</b>)<b class='flag-5'>AT24C02</b>驅(qū)動(dòng)

    STM32 IIC讀寫(xiě)AT24C02(一)

    要用IIC讀寫(xiě)AT24C02,首先要了解IIC是什么。
    發(fā)表于 07-22 10:28 ?1203次閱讀
    <b class='flag-5'>STM32</b> <b class='flag-5'>IIC</b>讀寫(xiě)<b class='flag-5'>AT24C02</b>(一)

    單片機(jī)IIC總線AT24C02的應(yīng)用

    電子發(fā)燒友網(wǎng)站提供《單片機(jī)IIC總線AT24C02的應(yīng)用.doc》資料免費(fèi)下載
    發(fā)表于 11-16 09:24 ?2次下載
    單片機(jī)<b class='flag-5'>IIC</b><b class='flag-5'>總線</b>及<b class='flag-5'>AT24C02</b>的應(yīng)用