一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

基于APM32F407如何制作I2C EEPROM(AT24C02型號)的MDK-Keil下載算法

Geehy極海半導(dǎo)體 ? 來源:Geehy極海半導(dǎo)體 ? 2025-04-11 11:06 ? 次閱讀

前言

最近在做的一個項目中,需要經(jīng)常把一些參數(shù)下載到I2C EEPROM中,然后MCU上電去讀取。如果在產(chǎn)品量產(chǎn)過程中,可以使用燒錄治具往EEPROM寫入一次即可。但是在調(diào)試開發(fā)階段,需要經(jīng)常修改這些數(shù)據(jù),調(diào)試起來非常不方便。

我調(diào)試的環(huán)境是MDK-Keil,于是網(wǎng)上了解了下如何制作Keil的下載算法,下面介紹下基于APM32F407如何制作I2C EEPROM(AT24C02型號)的Keil下載算法,這樣在我們下載代碼時可以一鍵把數(shù)據(jù)燒錄到EEPROM中。

對于 Keil 的下載算法文件相關(guān)的詳細(xì)介紹可以到官方在線文檔進(jìn)行了解,這些文檔詳細(xì)介紹了下載算法的實現(xiàn)細(xì)節(jié)。文檔鏈接如下:

https://open-cmsis-pack.github.io/Open-CMSIS-Pack-Spec/main/html/flashAlgorithm.html

1. Keil如何調(diào)用下載算法

Keil的下載算法,我的理解就是可以通過Keil去調(diào)用該下載算法,然后可以去編程各種存儲設(shè)備,比如MCU內(nèi)部的Flash,通過MCU外設(shè)連接外擴的SPI Flash或者I2C EEPROM等器件。

要想通過Keil IDE的下載按鈕一鍵編程這些存儲設(shè)備,那么需要有對應(yīng)器件的下載算法才能去編程。對于Keil來說通過調(diào)試界面指定相應(yīng)的下載算法 xxx.FLM 文件,然后就可以被調(diào)用了,如下圖:

64372730-15f6-11f0-9310-92fbcf53809c.jpg

??Keil 在調(diào)試下載階段,會把算法文件加載到芯片的內(nèi)部 RAM 里面,加載的芯片內(nèi)部的RAM地址和大小可以在上面的配置截圖進(jìn)行設(shè)置。然后就可以在 RAM 中執(zhí)行這個下載算法文件的擦除、編程等函數(shù),從而實現(xiàn)對存儲設(shè)備下載程序或者在調(diào)試階段讀取數(shù)據(jù)等操作。

大致流程如下圖:??

6445ed88-15f6-11f0-9310-92fbcf53809c.jpg

主要是分為兩步:

通過SWD/JTAG調(diào)試接口,把下載算法加載到RAM。

執(zhí)行下載算法的擦除、編程等函數(shù),從而對內(nèi)部Flash進(jìn)行編程或者通過MCU的片上外設(shè)對外擴的SPI FLASH/I2C EEPROM執(zhí)行編程操作。

另外,前面說到會把下載算法文件加載到 RAM 運行,而且我們可以設(shè)置加載到任何的 RAM 地址運行,那么對下載算法生成的代碼必須是與位置無關(guān)的代碼,這樣才能加載到任意 RAM 地址運行。

2.Keil下載算法函數(shù)和執(zhí)行流程

2.1 下載算法需要實現(xiàn)哪些函數(shù)

根據(jù)官方文檔介紹,要制作一個新的下載算法需要實現(xiàn)函數(shù)有:

6453f75c-15f6-11f0-9310-92fbcf53809c.jpg

一共有7個函數(shù),而且這些函數(shù)的原型已經(jīng)規(guī)定好了的,只需要我們根據(jù)不同的存儲設(shè)備實現(xiàn)具體的功能即可。

其中有 mandatory 修飾的函數(shù),是制作一個新的下載算法必須要實現(xiàn)的函數(shù)是,而 optional 修飾的函數(shù)則可根據(jù)需要實現(xiàn)還是不實現(xiàn)。

2.2 擦除流程

6461627a-15f6-11f0-9310-92fbcf53809c.jpg

加載算法到芯片 RAM。

執(zhí)行初始化函數(shù) Init。

執(zhí)行擦除操作。其中擦除操作會根據(jù)Keil的配置選項,選擇是擦除整個芯片還是扇區(qū)擦除。

執(zhí)行 Uinit 函數(shù)。

擦除完成。

2.3 編程流程

編程流程,就是把編譯出來的可執(zhí)行程序下載到Flash或者其他存儲器。

646f7f86-15f6-11f0-9310-92fbcf53809c.png

對于所有 AXF 文件內(nèi)容,執(zhí)行 Init 初始化函數(shù)

判斷 Flash 算法是否在FLM文件中。不在則編程結(jié)束,返回失敗。如果編程算法存在,則執(zhí)行下面操作:

(1)加載算法到RAM

(2)執(zhí)行Init函數(shù)

(3)加載應(yīng)用程序(待編程的數(shù)據(jù))到RAM Buffer中

(4)執(zhí)行Program Page編程函數(shù)

(5)執(zhí)行Uninit函數(shù)

編程完成。

2.4 校驗流程

校驗就是把 AXF 文件中需要下載到Flash的數(shù)據(jù),與實際下載到Flash的數(shù)據(jù)讀出來進(jìn)行比較。

648059aa-15f6-11f0-9310-92fbcf53809c.jpg

判斷 Flash 算法是否在FLM文件中,不在則操作失敗。如果編程算法存在,則執(zhí)行下面操作:

(1)加載算法到RAM

(2)執(zhí)行Init函數(shù)

(3)判斷FLM文件是否存在校驗算法。

存在則加載應(yīng)用程序到RAM,然后執(zhí)行FLM文件中的校驗算法

不存在則計算和比較CRC值。把下載到Flash的數(shù)據(jù)讀出來計算的CRC值,與 加載 axf 文件的數(shù)據(jù)到RAM中計算的CRC值進(jìn)行比較。

執(zhí)行Uninit函數(shù)

執(zhí)行完 Uninit 函數(shù)后面的步驟,不是很理解,這后面的步驟是不是和調(diào)試有關(guān)的,在下載代碼時并沒有關(guān)系?

3. 制作Keil環(huán)境的I2C EEPROM下載算法

下面我基于APM32F407,制作AT24C02 EEPROM存儲芯片的下載算法。

對于下載算法的制作流程,官網(wǎng)已經(jīng)給出了詳細(xì)的步驟,下面的步驟是從官網(wǎng)翻譯過來的。一個新的下載算法制作步驟:

ARM:CMSIS Pack文件夾(通常為 C:KeilARMPackARMCMSIS version Device_Template_Flash)中的內(nèi)容復(fù)制到新文件夾。

重命名項目文件NewDevice.uvprojx以表示新的閃存 ROM 設(shè)備名稱,例如MyDevice.uvprojx

使用 uVision 打開項目。從工具欄中,使用下拉菜單選擇目標(biāo)”來定義處理器架構(gòu)。Cortex-M適用于所有 Cortex-M0/M0+、M3 和 M4 設(shè)備。該配置假定采用小端微控制器。如果是大端微控制器,請使用Project - Options for Target - Device選擇正確的處理器內(nèi)核。

打開對話框“項目-目標(biāo)選項-輸出” ,然后更改“可執(zhí)行文件名稱”字段的內(nèi)容以表示設(shè)備,例如MyDevice。

調(diào)整文件FlashPrg中的編程算法。

調(diào)整文件FlashDev中的設(shè)備參數(shù)。

使用Project - Build Target生成新的Flash 編程算法。輸出文件(例如MyDevice.FLM)必須添加到DFP中。

上面的步驟就是官網(wǎng)給出的,下面我們就根據(jù)官網(wǎng)給出的步驟制作一個新的下載算法。

3.1 準(zhǔn)備下載算法模板

下載算法的模板,我們在安裝Keil的時候就有了的。官網(wǎng)說在 keil 的安裝目錄下能找到,但是我安裝的是 5.36 版本,Keil安裝目錄沒有找到,而是在C:Users你的用戶名目錄AppDataLocalArmPacksARMCMSIS5.8.0Device_Template_Flash 這個目錄找的的下載算法模板。

648e4b82-15f6-11f0-9310-92fbcf53809c.jpg

我們把該目錄復(fù)制一份備用,然后記得把該文件夾的只讀屬性去掉。

3.2 Keil環(huán)境設(shè)置

1、把復(fù)制的模板工程的工程名,可以根據(jù)我們基于什么芯片制作下載算法修改一下工程名稱,這樣更具有辨識度。

2、修改選擇的目標(biāo)芯片。

649e982a-15f6-11f0-9310-92fbcf53809c.jpg

我是基于APM32F407制作下載算法文件,所以選擇M4內(nèi)核就行。

3、修改編譯生成的下載算法文件的名稱。

64b07d60-15f6-11f0-9310-92fbcf53809c.jpg

4、添加APM32F407的外設(shè)驅(qū)動庫以及I2C EEPROM的讀寫驅(qū)動文件

由于我們是要實現(xiàn) I2C EEPROM 的下載算法,在編寫這些下載算法函數(shù)之前,我們必須要先確保I2C EEPROM 的驅(qū)動可以正常讀寫。I2C EEPROM 的驅(qū)動可以從我們實現(xiàn)的例程驗證可行之后,然后挪過來使用即可。

64bf0c9a-15f6-11f0-9310-92fbcf53809c.jpg

3.3 修改FlashPrg.c文件中的編程算法函數(shù)

這一步是最重要的,我們實現(xiàn)Keil編程算法主要就是要實現(xiàn) FlashPrg.c 文件中的各個下載算法函數(shù)。根據(jù)前面的介紹,一個新的下載算法必須要實現(xiàn)的函數(shù)有:Init/EraseSector/ProgramPage/Uninit這4個函數(shù),其他函數(shù)可以根據(jù)需要是否實現(xiàn)。下面我們來一一實現(xiàn)這些函數(shù)。

1、Init函數(shù)的實現(xiàn)

/*

* Initialize Flash Programming Functions

* Parameter: adr: Device Base Address

* clk: Clock Frequency (Hz)

* fnc: Function Code (1 - Erase, 2 - Program, 3 - Verify)

* Return Value: 0 - OK, 1 - Failed

*/

int Init (unsigned long adr, unsigned long clk, unsigned long fnc)

{

/* 系統(tǒng)初始化 */

//SystemInit(); // 如果使用了庫文件的該函數(shù)會導(dǎo)致下載是0x08000000地址校驗失敗,但是實際測試又是下載進(jìn)去了。不知道什么原因

I2C_Init();

return 0;

}

在該函數(shù)中,我們可以初始化編程存儲器的一些操作,比如配置時鐘,GPIO的初始化等等。

2、扇區(qū)擦除和整片芯片擦除函數(shù)

/*

* Erase complete Flash Memory

* Return Value: 0 - OK, 1 - Failed

*/

int EraseChip (void)

{

volatile int i = 0;

unsigned char tmepbuf[EE_PAGE_SIZE];

unsigned char adr = 0;

for(i = 0; i < EE_PAGE_SIZE; i++)

{

tmepbuf[i] = 0xFF;

}

for (i = 0; i < EE_SIZE / EE_PAGE_SIZE; i++)

{

ee_WriteBytes(tmepbuf, adr, EE_PAGE_SIZE);

adr += EE_PAGE_SIZE;

}

return 0;

}

/*

* Erase Sector in Flash Memory

* Parameter: adr: Sector Address

* Return Value: 0 - OK, 1 - Failed

*/

int EraseSector (unsigned long adr)

{

volatile int i = 0;

unsigned char tmepbuf[EE_PAGE_SIZE];

adr -= I2C_EEPROM_ADDR;

for(i = 0; i < EE_PAGE_SIZE; i++)

{

tmepbuf[i] = 0xFF;

}

ee_WriteBytes(tmepbuf, adr, EE_PAGE_SIZE);

return 0;

}

實際上對于EEPROM芯片,不需要擦除就能寫入數(shù)據(jù)的。不過為了示例,我們也實現(xiàn)這兩個擦除函數(shù)好了。對于EERPOM來說,擦除就是往它寫入0xFF數(shù)據(jù)即可。

3、ProgramPage 頁編程函數(shù)實現(xiàn)

#define I2C_EEPROM_ADDR 0x01000000

/*

* Program Page in Flash Memory

* Parameter: adr: Page Start Address

* sz: Page Size

* buf: Page Data

* Return Value: 0 - OK, 1 - Failed

*/

int ProgramPage (unsigned long adr, unsigned long sz, unsigned char *buf)

{

volatile int i = 0;

adr -= I2C_EEPROM_ADDR;

for(i = 0; i < sz/EE_PAGE_SIZE; i++)

{

ee_WriteBytes(buf+EE_PAGE_SIZE*i, adr+EE_PAGE_SIZE*i, EE_PAGE_SIZE);

}

if(sz%EE_PAGE_SIZE)

{

ee_WriteBytes(buf+EE_PAGE_SIZE*i, adr+EE_PAGE_SIZE*i, sz%EE_PAGE_SIZE);

}

return (0);

}

直接調(diào)用EEPROM的驅(qū)動寫函數(shù)即可。另外 I2C_EEPROM_ADDR 這個宏定義,是為了在我們的應(yīng)用代碼中,定義數(shù)據(jù)時選擇哪一塊區(qū)域存儲EEPROM的數(shù)據(jù),地址是我們可以隨意定義的。但是不能與MCU的外設(shè)地址,以及Flash、RAM等地址重合就行。

4、Uninit函數(shù)實現(xiàn)

該函數(shù)根據(jù)前面的Keil執(zhí)行各編程流程,一般是退出編程時會被調(diào)用的,我們可以在該函數(shù)進(jìn)行恢復(fù)的操作。該函數(shù)是必須實現(xiàn)的,如果不需要做任何動作,那么我們保持該函數(shù)為空函數(shù)就行。

/*

* De-Initialize Flash Programming Functions

* Parameter: fnc: Function Code (1 - Erase, 2 - Program, 3 - Verify)

* Return Value: 0 - OK, 1 - Failed

*/

int UnInit (unsigned long fnc) {

/* Add your Code */

return (0); // Finished without Errors

}

3.4 修改FlashDev.c文件的設(shè)備參數(shù)

在FlashDev.c文件中有一個名為FlashDevice的結(jié)構(gòu)體常量,這個結(jié)構(gòu)體的信息是給 Keil 提供編程設(shè)備的信息的,比如編程的起始地址,總大小,一個扇區(qū)的大小,設(shè)備類型等等信息。我們根據(jù)自己的需要編程的設(shè)備類型修改即可。

struct FlashDevice const FlashDevice = {

FLASH_DRV_VERS, // Driver Version, do not modify!

"APM32F407_I2C_EEPROM_AT24C02", // Device Name

EXTSPI, // Device Type

0x01000000, // Device Start Address. EEPROM的編程地址。

0x00000100, // Device Size in Bytes

8, // Programming Page Size

0, // Reserved, must be 0

0xFF, // Initial Content of Erased Memory

6000, // Program Page Timeout 6000 mSec

6000, // Erase Sector Timeout 6000 mSec

// Specify Size and Address of Sectors

0x000008, 0x000000, // Sector Size 8B (32 Sectors)

// 0x010000, 0x010000, // Sector Size 64kB (2 Sectors)

// 0x002000, 0x030000, // Sector Size 8kB (8 Sectors)

SECTOR_END

};

3.5 生成算法文件

我們實現(xiàn)了 FlashPrg.c 文件的編程算法函數(shù)之后,直接編譯就可以生成 xxx.FLM 算法文件了。

在編譯之前,我們需要檢查生成的代碼是位置無關(guān)碼。在Keil設(shè)置如下:

64cd7776-15f6-11f0-9310-92fbcf53809c.jpg

C/C++和Asm選項卡都要檢查是否已經(jīng)勾選了上面的配置。

點擊編譯即可生成Keil下載算法文件。

64dd1d84-15f6-11f0-9310-92fbcf53809c.jpg

4. 新制作的下載算法文件使用和測試

1、把生成的下載算法文件放置到Keil安裝的目錄 C:Keil_v5ARMFlash 下待使用

64ea2506-15f6-11f0-9310-92fbcf53809c.jpg

2、Keil環(huán)境配置下載算法

64fd0a54-15f6-11f0-9310-92fbcf53809c.jpg

3、APM32F407_I2C_EEPROM算法測試驗證。

我們使用下載算法下載數(shù)據(jù)到EERPOM,然后再通過應(yīng)用程序讀出來進(jìn)行對比寫進(jìn)去的數(shù)據(jù)是否一致,就可以知道EEPROM下載算法是否起作用。

我們找一個 APM32F407 EEPROM 的例程進(jìn)行測試。

(1)首先在例程里面定義下面待燒錄到EEPROM的數(shù)據(jù):

const uint8_t EEPROM_FLM_Test1[16] __attribute__((at(0x01000000))) = {

0xCB,0xFF,0x01,0x02,0x03,0xAA,0x06,0x07,

0x08,0x09,0x10,0xA1,0xA2,0xA3,0xA4,0xBB

};

const uint8_t EEPROM_FLM_Test2[16] __attribute__((at(0x010000A0))) = {

0x12,0x34,0x01,0x02,0x03,0xAA,0x06,0x07,

0x08,0x09,0x10,0xA1,0xA2,0xA3,0xA4,0xBB

};

其中我們規(guī)定這些數(shù)組必須鏈接到 0x01000000 起始的地址,這是因為我們制作的 EEPROM 的下載算法編程地址就是在該范圍,這個地址會在下載算法內(nèi)部轉(zhuǎn)換為EEPROM 編程的 0 地址,比如說 0x01000000 起始地址,對應(yīng)的就算EEPROM的0地址。

(2)然后編譯下載代碼到Flash和EEPROM即可。

下載代碼時,檢測的0x01000000地址需要下載數(shù)據(jù),Keil就會自動調(diào)用EEPROM的下載算法把數(shù)據(jù)編程到EEPROM了。

如下在下載程序沒有報錯,下載完成。

650e3e32-15f6-11f0-9310-92fbcf53809c.jpg

然后運行代碼,把EEPROM的數(shù)據(jù)讀出來,對比是否一致。

65214cc0-15f6-11f0-9310-92fbcf53809c.jpg

《APM32芯得》系列內(nèi)容為用戶使用APM32系列產(chǎn)品的經(jīng)驗總結(jié),來自21ic論壇極海半導(dǎo)體專區(qū)。在此特別鳴謝!

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

    關(guān)注

    23

    文章

    4682

    瀏覽量

    94341
  • EEPROM
    +關(guān)注

    關(guān)注

    9

    文章

    1061

    瀏覽量

    83007
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1514

    瀏覽量

    126516
  • keil
    +關(guān)注

    關(guān)注

    69

    文章

    1217

    瀏覽量

    168571
  • 極海半導(dǎo)體
    +關(guān)注

    關(guān)注

    0

    文章

    145

    瀏覽量

    4825

原文標(biāo)題:APM32芯得 EP.51 | 基于APM32F407制作I2C EEPROM的MDK-Keil下載算法

文章出處:【微信號:geehysemi,微信公眾號:Geehy極海半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    國產(chǎn)優(yōu)秀替代_APM32F407替代STM32F407記錄

    的事情。 本文記錄一下我使用APM32F407替代STM32F407制作的一個小demo(使用SPI外設(shè)讀取W25Q128)。該demo使用原開發(fā)板電路
    的頭像 發(fā)表于 05-10 11:22 ?2.1w次閱讀
    國產(chǎn)優(yōu)秀替代_<b class='flag-5'>APM32F407</b>替代STM32<b class='flag-5'>F407</b>記錄

    APM32F407工具鏈?zhǔn)褂媒坛?/a>

    APM32F407工具鏈?zhǔn)褂媒坛?/div>
    的頭像 發(fā)表于 10-31 17:14 ?1440次閱讀
    <b class='flag-5'>APM32F407</b>工具鏈?zhǔn)褂媒坛? />    </a>
</div>                            <div   id=

    《電子發(fā)燒友電子設(shè)計周報》聚焦硬科技領(lǐng)域核心價值 第7期:2025.04.7--2025.04.11

    I2C EEPROMAT24C02型號)的MDK-Keil下載算法 https://www.e
    發(fā)表于 04-11 19:51

    AT24C02

    AT24C02
    發(fā)表于 01-24 16:00 ?13次下載

    I2C—讀寫EEPROM

    開發(fā)板,即可接收STM32串口發(fā)送給電腦的調(diào)試信息。 【*】 引腳分配 EEPROMAT24C02): EEPROM芯片的I2C接口與STM32的
    發(fā)表于 12-13 15:12 ?23次下載

    AT24C02與單片機連接的電路圖免費下載

    這次利用單片機通過軟件模擬I2C總線協(xié)議, 并對基于I2C協(xié)議的AT24C02 EEPROM進(jìn)行讀寫操作, 具體說明與功能見代碼注釋。
    發(fā)表于 09-19 17:20 ?12次下載
    <b class='flag-5'>AT24C02</b>與單片機連接的電路圖免費<b class='flag-5'>下載</b>

    EEPROM存儲芯片AT24C02芯片手冊

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

    【STM32Cube_13】使用硬件I2C讀寫EEPROMAT24C02

    本篇詳細(xì)的記錄了如何使用STM32CubeMX配置STM32L431RCT6的硬件I2C外設(shè)讀取EEPROM數(shù)據(jù)(以AT24C02為例)。
    發(fā)表于 12-08 10:36 ?19次下載
    【STM32Cube_13】使用硬件<b class='flag-5'>I2C</b>讀寫<b class='flag-5'>EEPROM</b>(<b class='flag-5'>AT24C02</b>)

    STM32單片機基礎(chǔ)13——使用硬件I2C讀寫EEPROMAT24C02

    本篇詳細(xì)的記錄了如何使用STM32CubeMX配置STM32L431RCT6的硬件I2C外設(shè)讀取EEPROM數(shù)據(jù)(以AT24C02為例)。1. 準(zhǔn)備工作硬件準(zhǔn)備開發(fā)板首先需要準(zhǔn)備一個開發(fā)板,這里我
    發(fā)表于 12-23 19:05 ?16次下載
    STM32單片機基礎(chǔ)13——使用硬件<b class='flag-5'>I2C</b>讀寫<b class='flag-5'>EEPROM</b>(<b class='flag-5'>AT24C02</b>)

    STM32f103系列i2c讀寫文件at24c02

    STM32f103系列i2c讀寫文件at24c02免費下載。
    發(fā)表于 03-04 09:43 ?26次下載

    使用APM32F407替代STM32F407制作的demo

    b.在原工程下添加APM32F407的中斷控制函數(shù)文件。將“APM32F
    的頭像 發(fā)表于 05-10 14:37 ?4798次閱讀

    使用I2C讀取24cxx串行EEPROM

    Read 24cxx serial EEPROM with I2C
    發(fā)表于 06-30 15:10 ?1次下載
    使用<b class='flag-5'>I2C</b>讀取<b class='flag-5'>24</b>cxx串行<b class='flag-5'>EEPROM</b>

    Linux驅(qū)動開發(fā)-編寫(EEPROM)AT24C02驅(qū)動

    AT24C02是IIC接口的EEPROM存儲芯片,這顆芯片非常經(jīng)典,百度搜索可以找到非常多的資料,大多都是51、STM32單片機的示例代碼,大多采用模擬時序、裸機系統(tǒng)運行。當(dāng)前文章介紹在Linux
    的頭像 發(fā)表于 09-17 15:29 ?4091次閱讀
    Linux驅(qū)動開發(fā)-編寫(<b class='flag-5'>EEPROM</b>)<b class='flag-5'>AT24C02</b>驅(qū)動

    APM32F103XE_I2C_加入六軸傳感器后,I2C通訊EEPROM會掛

    APM32F103XE_I2C_加入六軸傳感器后,I2C通訊EEPROM會掛
    發(fā)表于 11-09 21:03 ?0次下載
    <b class='flag-5'>APM32F103XE_I2C</b>_加入六軸傳感器后,<b class='flag-5'>I2C</b>通訊<b class='flag-5'>EEPROM</b>會掛

    APM32F407 EVAL 原理圖

    APM32F407 EVAL 原理圖
    發(fā)表于 11-09 21:04 ?13次下載
    <b class='flag-5'>APM32F407</b> EVAL 原理圖