91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

CW32L012實(shí)現(xiàn)外部flash下載算法

CW32生態(tài)社區(qū) ? 來源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2025-10-09 17:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

通過網(wǎng)盤分享的文件:cw32外部flash下載算法源碼.zip

鏈接: https://pan.baidu.com/s/1-svjiviNAkuxRShuk0rNEg?pwd=CW32 提取碼: CW32

文件說明

1._Template 為keil 的下載算法模板

2.cw32l012_exflash_down 為cw32平臺(tái)下的實(shí)際測(cè)試工程源代碼

3.cw32l012_w25qxx.FLM 為生成的FLM下載文件

Q:什么是外部flash 下載算法?

外部flash或者內(nèi)置的片上flash,都是編譯器通過調(diào)用寫好的FLM文件來實(shí)現(xiàn)下載,單片機(jī)內(nèi)部的安裝pack包就會(huì)有(官方實(shí)現(xiàn)),外部flash的情況比較復(fù)雜,例如用的哪種flash,用的什么接口,都是不定的,沒有辦法寫好一個(gè)通用的下載算法,這里也只是介紹一個(gè)通用的方法,實(shí)際需要按情況修改。

注意本例程的FLM文件信息如下

1.基于CW32L012

2.使用W25Q128作為外置flash

3.使用SPI3 資源,IO 分配為

SPI3_CS PA8

SPI3_SCK PA9

SPI3_MISO PA10

SPI3_MOSI PA11

4.額外使用了一個(gè)開關(guān)IO ,PA6 為打開外設(shè)的電源控制IO

5.本案例用的外部16mz晶振

Q:外部flash對(duì)單片機(jī)的性能有要求嗎?

沒有太大要求。下載算法是加載到RAM中的,對(duì)flash 沒有要求,RAM通常4K或者以上就可以運(yùn)行下載算法(當(dāng)然你的代碼要簡(jiǎn)潔)。例如你的RAM是4K 你的下載算法生成的代碼空間就要小于4K,8K就小于8K。

Q:為什么需要外部flash算法?

外部flash算法是用來節(jié)省內(nèi)部flash空間的,在一些應(yīng)用中,圖片數(shù)據(jù),字模數(shù)據(jù)比較占用單片機(jī)內(nèi)存空間,在內(nèi)存小的單片機(jī)中,是存不下這些數(shù)據(jù)的,通過在一些設(shè)置和下載算法,可以將工程中的常量保存到外部flash。

Q:為什么不用其他方式對(duì)外部flash下載數(shù)據(jù)?

1.用文件系統(tǒng)方式。會(huì)增加復(fù)雜度,增加性能占用。對(duì)于性能低的單片機(jī),需要快速傳輸?shù)臄?shù)據(jù)不適合再走文件系統(tǒng)的接口。

2.用其他方法直接下載數(shù)據(jù),比如專門下載數(shù)據(jù)的工程,或者專門的編程器,這些方案是可以,但是一方面是下載就非常麻煩,另一方面是對(duì)于數(shù)據(jù)的絕對(duì)地址管理起來費(fèi)勁。

下載算法實(shí)現(xiàn)需要準(zhǔn)備:

1.官方單片機(jī)的庫(kù)文件(或者準(zhǔn)備一個(gè)工程模板)

2.對(duì)應(yīng)的flash驅(qū)動(dòng)文件

3.Keil對(duì)于下載算法編寫的工程模板

具體步驟大致分為以下幾步

1.復(fù)制keil官方下載算法工程,同時(shí)復(fù)制FlashOS.H文件到工程根目錄,然后還需要去配置對(duì)應(yīng)的單片機(jī)型號(hào),添加CMSIS的核心文件,最后修改一下文件包含路徑使其能編譯。編譯器最好用AC6,選擇代碼空間優(yōu)化。

wKgZPGjaXuGAA7rKAAAqgkrJeWg969.jpg

wKgZO2jaXuGAHnhDAAA5xJnqa4o985.jpg

wKgZO2jngg6ADWvVAASQStAuFS8262.png

wKgZO2jaXuKAREayAADG1nJ_G-M005.jpg

wKgZO2jngieAdGkkAAbkRpa2kUQ280.png

2.修改flashDev.C中的文件,使其符合實(shí)際應(yīng)用需求

wKgZPGjaXuOAH3jDAAB9OCw5b58315.jpg

3.添加對(duì)應(yīng)單片機(jī)的庫(kù)文件并編譯,注意:

a.因?yàn)橄螺d算法生成的是與位置無關(guān)的代碼,添加進(jìn)去的所有文件,所有函數(shù)都會(huì)參與編譯,因此只可以添加需要的文件,文件中有用不到的函數(shù)還需要屏蔽?。?!

b.注意不需要啟動(dòng)文件!??!

wKgZO2jaXuSAPXSYAABo9rAH0hA563.jpg

▲這里只添加用的到的文件

wKgZO2jnglaAYRXXAAh0qs4h2uw876.png

▲這里大部分用不到的代碼都屏蔽

4.添加對(duì)應(yīng)型號(hào)的flash驅(qū)動(dòng),并能正常編譯

wKgZPGjaXuWAQILzAAAN-qJRhAY103.jpg

▲Spi 底層外設(shè)初始化Nor flash 驅(qū)動(dòng)函數(shù)

5.編寫初始化my_main函數(shù),初始化外設(shè),并能正常編譯

wKgZO2jaXuaADN9-AABEPJ5o7o0572.jpg

wKgZPGjaXueAcD3tAADQiq5ec6Q219.jpg

6.編寫flashPrg.c文件,需要實(shí)現(xiàn)以下函數(shù),有缺失的自行補(bǔ)齊。這一步是最關(guān)鍵的,最核心的。

http://a.int Init (unsigned long adr, unsigned long clk, unsigned long fnc)

wKgZPGjngmuAEihJAAKX8XTmu24706.png

http://b.int UnInit (unsigned long fnc)

wKgZO2jaXumAWIT8AAAYEEI4YLQ805.jpg

http://c.int EraseChip (void)

wKgZO2jngoSAIwcFAAFav9vzVrw011.png

http://d.int EraseSector (unsigned long adr)

wKgZO2jngoyAYfaLAAIv3zQPILU962.png

http://e.int ProgramPage (unsigned long adr, unsigned long sz, unsigned char *buf)

wKgZPGjaXuuAHcoaAAAtGPLy7SA498.jpg

http://f.int BlankCheck (unsigned long adr,unsigned long sz,unsigned char pat)

wKgZO2jaXuyATIr3AAAg4lFUDHw588.jpg

g.unsigned long Verify(unsigned long adr,unsigned long sz,unsigned char *buf)

wKgZPGjaXuyAeBCZAAAfIly3c-Y786.jpg

對(duì)應(yīng)為初始化、去初始化、全片擦除、扇區(qū)擦除、扇區(qū)寫入、擦除檢測(cè)、校驗(yàn)。

以上這些函數(shù)都要有,但函數(shù)內(nèi)部有些可以不去實(shí)現(xiàn)。

正常編譯到這一步就完成了。

7.配置編譯文件輸出路徑

cmd.exe /C copy "Objects%L" ".@L.FLM"

cmd.exe /C copy ".@L.FLM" "C:user_appkeil5ARMFlash@L.FLM"

注意:第二條的路徑和keil安裝路徑有關(guān),需要根據(jù)實(shí)際情況修改。

wKgZPGjaXu2AYnFBAACM0H8-KUE681.jpg

8.正常編譯結(jié)果如下

wKgZO2jaXu6ANrrbAABODPJ2TEI702.jpg

下載算法使用

1.添加下載算法

wKgZPGjaXu6AVPFPAACyHoiGeqY046.jpg

2.配置下載算法所使用的RAM空間大小為實(shí)際RAM的大小

wKgZO2jaXu-AZGxyAACHuHV99aw269.jpg

3.將需要放到外部flash的資源獨(dú)立一個(gè)c文件保存,并配置存儲(chǔ)地址

例如下圖測(cè)試文件,定義兩個(gè)const類型的字符串,指定存儲(chǔ)地址為0x9000000開始。

wKgZO2jaXu-ADeyXAACrKpS_lGg232.jpg

4.編譯查看是否分配到外置flash上

如下圖,識(shí)別到一個(gè)16M的外置flash,已經(jīng)使用了3.66%,實(shí)際數(shù)據(jù)是一些圖片數(shù)據(jù),一共有600K字節(jié)。

wKgZPGjaXu-AI6mFAACN4sPj0Fk293.jpg

5.如何讀取這個(gè)數(shù)據(jù)呢

和普通spi flash 一樣,仍然要發(fā)送命令的方式來讀取,只不過地址為顯性的一個(gè)地址,也不需要人為去記。

例如下面這個(gè)測(cè)試程序

定義了兩個(gè)const類型的數(shù)據(jù),數(shù)據(jù)讀取時(shí),直接取地址符取出編譯器分配的地址,然后減去一個(gè)基地址偏移0x90000000,然后得到的地址就是實(shí)際nor flash 需要發(fā)送訪問的地址

wKgZO2jaXvCAR8U4AABKfI5rFJc516.jpgwKgZPGjaXvGAVTNIAAENAHmmrKw349.jpg

6.實(shí)際測(cè)試串口打印驗(yàn)證

如下圖的測(cè)試結(jié)果,地址就是我們要求的0x9000000開始的,數(shù)據(jù)讀出來的也是實(shí)際存儲(chǔ)的數(shù)據(jù)

wKgZO2jaXvKAYvLIAACkCNb_3aw535.jpg

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

    關(guān)注

    6076

    文章

    45492

    瀏覽量

    670138
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1747

    瀏覽量

    155492
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4784

    瀏覽量

    98027
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1672

    瀏覽量

    51579
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    CW32L012的PID溫度控制——算法基礎(chǔ)

    PID 控制算法是比例(Proportional)- 積分(Integral)- 微分(Derivative) 控制的簡(jiǎn)稱,是工業(yè)控制、嵌入式系統(tǒng)中最經(jīng)典、應(yīng)用最廣泛的閉環(huán)控制算法。它的核心
    的頭像 發(fā)表于 01-05 16:27 ?1923次閱讀
    <b class='flag-5'>CW32L012</b>的PID溫度控制——<b class='flag-5'>算法</b>基礎(chǔ)

    FOC控制中如何利用芯片內(nèi)部的運(yùn)放設(shè)計(jì)電流采樣電路?

    最近開發(fā)電機(jī)控制的項(xiàng)目,我開始使用最新的CW32L012做主控,CW32L012作為混合信號(hào)MCU,相比于傳統(tǒng)MCU控制,集成度較高,性能當(dāng)然也更好,加之又是48Pin的芯片,因此我開始做的關(guān)于CW32L012主控的電機(jī)驅(qū)動(dòng)項(xiàng)目
    的頭像 發(fā)表于 01-05 16:50 ?2638次閱讀
    FOC控制中如何利用芯片內(nèi)部的運(yùn)放設(shè)計(jì)電流采樣電路?

    堅(jiān)持繼續(xù)布局32位MCU,進(jìn)一步完善產(chǎn)品陣容,96Mhz主頻CW32L012新品發(fā)布!

    DAC,并配備有可靈活連接的雙路軌到軌運(yùn)算放大器,可以在單顆芯片上實(shí)現(xiàn)完整的混合信號(hào)數(shù)字處理。 CW32L012可以在 -40℃至+85℃ 的溫度范圍內(nèi)工作,供電電壓寬達(dá)1.7V~5.5V。支持
    發(fā)表于 07-16 16:32

    studio有沒有通過更改下載算法,同時(shí)下載到內(nèi)部flash外部flash?

    我現(xiàn)在使用的stm32h750,內(nèi)部flash很小,需要使用外部qspiflash來儲(chǔ)存程序。 studio可以像mdk一樣設(shè)置兩個(gè)下載算法嗎? 這樣才能一個(gè)程序使用兩個(gè)
    發(fā)表于 09-26 07:04

    **CW32L012****開發(fā)評(píng)估板的第一個(gè)程序**

    DAP Debugger,大家自己手里是什么下載器,就選擇對(duì)應(yīng)的下載flash這里一定要有cw32l012,沒有就點(diǎn)add添加。 然后是編譯下載
    發(fā)表于 11-22 00:09

    CW32L012小型機(jī)器人控制評(píng)估板活動(dòng) 四足機(jī)器人+智能小車 開箱評(píng)測(cè)

    :套件主控板在出廠時(shí)應(yīng)該是已經(jīng)下載過程序了的,也可以不用下載直接開玩體驗(yàn)。 1) 如果你之前沒有安裝CW32L012的DFP器件包,則要先官網(wǎng)下載C
    發(fā)表于 11-24 23:44

    ubuntu下面用vscdoe實(shí)現(xiàn)CW32L031的工程創(chuàng)建、編譯、下載與調(diào)試

    /template.elf 2、下載: lugl@lugl-virtual-machine:~/CW32L/cw32l083_gcc$ make flash -e Start pyO
    發(fā)表于 06-25 21:13

    STM32H750外部Flash下載算法的資料和工程文件免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是STM32H750外部Flash下載算法的資料和工程文件免費(fèi)下載
    發(fā)表于 08-29 08:00 ?173次下載
    STM32H750<b class='flag-5'>外部</b><b class='flag-5'>Flash</b><b class='flag-5'>下載</b><b class='flag-5'>算法</b>的資料和工程文件免費(fèi)<b class='flag-5'>下載</b>

    通過KEIL制作QSPI接口的外部Flash下載算法

    電子發(fā)燒友網(wǎng)站提供《通過KEIL制作QSPI接口的外部Flash下載算法.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 16:26 ?7次下載
    通過KEIL制作QSPI接口的<b class='flag-5'>外部</b><b class='flag-5'>Flash</b><b class='flag-5'>下載</b><b class='flag-5'>算法</b>

    CW32L052 FLASH存儲(chǔ)器

    CW32L052內(nèi)部集成了64KB嵌入式FLASH供用戶使用,可用來存儲(chǔ)應(yīng)用程序和用戶數(shù)據(jù)。芯片支持對(duì) FLASH 存儲(chǔ)器的讀、擦除和寫操作,支持擦寫保護(hù)和讀保護(hù)。芯片內(nèi)置 FLASH
    的頭像 發(fā)表于 02-28 17:43 ?1521次閱讀
    <b class='flag-5'>CW32L</b>052 <b class='flag-5'>FLASH</b>存儲(chǔ)器

    堅(jiān)持繼續(xù)布局32位MCU,進(jìn)一步完善產(chǎn)品陣容,96Mhz主頻CW32L012新品發(fā)布!

    CW32L012基于ARM? Cortex-M0+內(nèi)核,主頻高達(dá)96MHz,同時(shí)集成了CORDIC硬件單元、擴(kuò)展算術(shù)運(yùn)算單元(EAU),可以提供部分?jǐn)?shù)學(xué)函數(shù)、算術(shù)運(yùn)算的硬件加速,特別適用于電機(jī)控制、電源、計(jì)量、信號(hào)處理等應(yīng)用。
    的頭像 發(fā)表于 07-16 16:34 ?1338次閱讀
    堅(jiān)持繼續(xù)布局32位MCU,進(jìn)一步完善產(chǎn)品陣容,96Mhz主頻<b class='flag-5'>CW32L012</b>新品發(fā)布!

    使用芯源CW32的CW32L012開發(fā)評(píng)估板做了spi屏幕驅(qū)動(dòng)

    CW32生態(tài)社區(qū)以極高的性價(jià)比入手了這塊CW32L012開發(fā)評(píng)估板,開發(fā)板以底板、核心板、1.77寸TFT顯示屏構(gòu)成,所有的IO口都引出了排針,這點(diǎn)好評(píng),使用杜邦線可以非常方便的連接其他模塊。引腳
    的頭像 發(fā)表于 11-21 11:34 ?607次閱讀
    使用芯源<b class='flag-5'>CW</b>32的<b class='flag-5'>CW32L012</b>開發(fā)評(píng)估板做了spi屏幕驅(qū)動(dòng)

    CW32L012小機(jī)器人的電機(jī)控制

    線的大功率調(diào)速,電機(jī)的控制性能直接決定了系統(tǒng)的響應(yīng)速度、運(yùn)行精度、能耗效率與穩(wěn)定性。這里分享CW32L012小機(jī)器人的正反轉(zhuǎn)、調(diào)速的電機(jī)控制 電機(jī)的正反轉(zhuǎn) 從配套的開發(fā)板資料介紹中可以知道,這是電機(jī)的驅(qū)動(dòng)芯片RZ7899 從立創(chuàng)商城下載該芯片的數(shù)據(jù)
    的頭像 發(fā)表于 11-21 13:18 ?2382次閱讀
    <b class='flag-5'>CW32L012</b>小機(jī)器人的電機(jī)控制

    CW32L012與STM32F103的三角運(yùn)算性能對(duì)比

    沒有硬件浮點(diǎn)運(yùn)算單元。 但在運(yùn)算三角函數(shù)時(shí),CW32L012支持CORDIC算法。 二、 三角運(yùn)算性能具體分析 1:標(biāo)準(zhǔn)庫(kù)浮點(diǎn)運(yùn)算(如 math.h 的 sinf, cosf) 這是最常用但也是最慢的方式。 STM32F103C8 :
    的頭像 發(fā)表于 12-29 15:32 ?2303次閱讀
    <b class='flag-5'>CW32L012</b>與STM32F103的三角運(yùn)算性能對(duì)比

    CW32L012與STM32G431的CORDIC三角函數(shù)運(yùn)算性能對(duì)比

    CORDIC協(xié)處理器的三角運(yùn)算性能對(duì)比。對(duì)比結(jié)果出乎意料。 一、硬件架構(gòu) 二、運(yùn)算100W次SIN30度與COS30度的代碼實(shí)現(xiàn) 1.CW32L012 CW32L012的CORDIC提供某些數(shù)學(xué)函數(shù)
    的頭像 發(fā)表于 12-29 15:55 ?2472次閱讀
    <b class='flag-5'>CW32L012</b>與STM32G431的CORDIC三角函數(shù)運(yùn)算性能對(duì)比