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

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

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

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

【教程】CW32串口flash編程工具分享

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

掃碼添加小助手

加入工程師交流群

通過(guò)網(wǎng)盤(pán)分享的文件:串口flash編程工具例程.zip

https://pan.baidu.com/s/1oc4oJFO8HVznDo2h3eBvfQ?pwd=CW32

提取碼: CW32

前言

在往期的分享中,我們分享過(guò)在cw32L012上運(yùn)行keil的FLM外部flash下載算法的方法。【CW32L012實(shí)現(xiàn)外部flash下載算法簡(jiǎn)單回顧,在項(xiàng)目開(kāi)發(fā)過(guò)程中,當(dāng)需要掉電保存大量的數(shù)據(jù)時(shí)(幾十上百K字節(jié)數(shù)據(jù)),放到單片機(jī)內(nèi)部flash是不明智的,內(nèi)部flash資源寶貴,用于存代碼才是最好的,所以我們需要將數(shù)據(jù)下載到外部flash中。

keil外部flash下載算法,簡(jiǎn)單來(lái)說(shuō)它使用SWD調(diào)試接口下載,用戶(hù)根據(jù)keil提供的下載算法模板修改,對(duì)接外部flash編程的接口,編譯生成FLM文件,當(dāng)需要下載時(shí),把待下載數(shù)據(jù)定義到外部flash的地址范圍中,然后添加該下載算法即可下載,總體來(lái)說(shuō)稍復(fù)雜。

經(jīng)常會(huì)有客戶(hù)問(wèn)我們能不能用串口下載更新flash?有沒(méi)有用串口OTA更新的方法(包含內(nèi)部flash),本次分享就利用串口進(jìn)行flash編程,該方式更加通用。

Keil 外部flash下載的缺陷

每種單片機(jī)都需要寫(xiě)一遍外部flash下載算法,然后生成FLM文件,比較依賴(lài)keil開(kāi)發(fā)環(huán)境,

下載算法是加載到RAM執(zhí)行的,算法大小必須小于等于RAM的大小,對(duì)于RAM比較小的單片機(jī),很難應(yīng)用該方法

下載算法加載以后,每次點(diǎn)下載都會(huì)完整把外部flash的數(shù)據(jù)下載一遍,即使你只改變的是局部數(shù)據(jù),或者內(nèi)部flash的代碼,只要下載,都會(huì)重新下載一遍,除非每次屏蔽,或者專(zhuān)門(mén)做一個(gè)下載的工程。

因?yàn)槭褂玫氖荢WD調(diào)試接口下載,如果產(chǎn)品不希望引出該接口給客戶(hù)使用,或者因?yàn)榇a安全原因屏蔽了該接口,下載就比較受限

串口flash編程工具簡(jiǎn)介

該工具是基于HTML語(yǔ)言開(kāi)發(fā),使用串口進(jìn)行通訊,支持多種波特率,可配置下載的參數(shù),如flash id號(hào)、flash 大小、下載扇區(qū)號(hào)、扇區(qū)大小、通訊分包長(zhǎng)度 、擦除超時(shí)時(shí)間和寫(xiě)入超時(shí)時(shí)間等。參數(shù)均可修改,當(dāng)修改的不合法時(shí)會(huì)自動(dòng)調(diào)整到合法數(shù)值。文件的選擇不關(guān)心文件類(lèi)型,可以是任意類(lèi)型,但文件大小要小于flash大小。另外設(shè)計(jì)有數(shù)據(jù)校驗(yàn)、差分更新、進(jìn)度條和日志顯示功能。

該工具使用自定義串口協(xié)議,可能大家比較疑惑為什么不使用現(xiàn)成的modbus協(xié)議,或者XYZ-MODEM協(xié)議,或者是其他文件傳輸協(xié)議?因?yàn)橹饕紤]靈活性、后期可維護(hù)性和輕量級(jí)的特性,因此自定義協(xié)議是最佳選擇。

測(cè)試硬件平臺(tái)

依舊選擇cw32L012,該單片機(jī)有很多優(yōu)點(diǎn),高性?xún)r(jià)比,主頻可達(dá)96M,SPI可運(yùn)行在48M,高速的SPI對(duì)于flash的操作是非常吃香的,有更高的通訊帶寬,對(duì)比103的18M SPI來(lái)說(shuō),提升太大了,我們測(cè)試讀寫(xiě)w25q128速度如下:

wKgZO2lTfQaALdQ3AADSYMXsrws999.jpg

可以看到cw32l012這款芯片對(duì)于讀寫(xiě)w25q128速度是相當(dāng)快的,讀取2K的數(shù)據(jù)也只需要2ms,真的非???,該芯片還有4路DMA,對(duì)于需要高速傳輸?shù)膱?chǎng)景還可以開(kāi)啟DMA,但目前測(cè)試下來(lái)也夠用了,大家有高速SPI的需求可以選擇該芯片哦。

移植教程

有了html上位機(jī)還缺嵌入式的通訊代碼,通訊協(xié)議細(xì)節(jié)大家不必關(guān)注,已經(jīng)完成協(xié)議的對(duì)接,只需要用戶(hù)完成所在平臺(tái)的以下接口:串口收發(fā)接口、待操作flash的讀寫(xiě)擦除接口,以及一些參數(shù)檢查和初始化。Cw32寫(xiě)的代碼高內(nèi)聚低耦合,代碼框架良好,函數(shù)命名合理,充分考慮了代碼的封裝性和可移植性。

注意:在移植該框架之前必須打通串口收發(fā)功能,flash擦除寫(xiě)入讀取功能,串口接收一幀數(shù)據(jù)按超時(shí)斷幀方法,短幀時(shí)間需要在5-20ms之間。我們提供了基于cw32L012的完整的工程,用戶(hù)可以參考。

1.準(zhǔn)備好串口flash編程算法庫(kù)文件

Comm_fmt不必關(guān)注,該文件用于構(gòu)造解析命令體

Sfp_plugin.c為主要關(guān)注對(duì)象,用戶(hù)需要在該文件內(nèi)實(shí)現(xiàn)相關(guān)port接口

wKgZPGlTfQeAJqj9AAATeLbdyNE860.jpg

wKgZO2lTfQeAJs5RAAAWsLpie08670.jpg

2.添加.c文件與.h文件的路徑

wKgZPGlTfQeATb7bAAAgih1s77M864.jpg

wKgZO2lTfQeAIY3eAAA3OPzvKvo970.jpg

3.編譯添加的文件

有錯(cuò)誤和警告自行解決

chaijie_default.png

4.編寫(xiě)sfp_pligin.c初始化代碼

初始非常簡(jiǎn)單,只需要給定一個(gè)發(fā)送緩沖區(qū)就行。

wKgZPGlTfQiAcT_YAAAwlNbZenQ200.jpg

5.對(duì)接sfp_pligin.c中串口發(fā)送函數(shù)

對(duì)接你實(shí)際通訊用的串口發(fā)送接口,這里我們使用的是串口3。

(flash_id 在后面的移植中會(huì)一直出現(xiàn),其設(shè)計(jì)目的是區(qū)分不同flash,當(dāng)設(shè)備有多個(gè)flash時(shí),通過(guò)判斷該id號(hào)去操作不同的flash,如果只操作一個(gè)flash,該參數(shù)忽略)

wKgZPGlTfQmAQYLaAAAUrC8PvHQ178.jpg

6.對(duì)接sfp_pligin.c中flash擦除函數(shù)

對(duì)接你實(shí)際的flash擦除函數(shù)接口。Addr為擦除的起始地址,len為擦除的總長(zhǎng)度,你可以根據(jù)要擦除的大小自行決定擦除策略,如可以按最小扇區(qū)擦除,也可以判斷如果len達(dá)到了32k或64k級(jí)別,去調(diào)用更大的扇區(qū)擦除函數(shù),此處按最小扇區(qū)大小擦除。

wKgZO2lU5iyAWoTMAACBxYajwNM980.png

7.對(duì)接sfp_pligin.c中flash寫(xiě)函數(shù)接口

寫(xiě)函數(shù)非常簡(jiǎn)單,寫(xiě)入起始地址,數(shù)據(jù),數(shù)據(jù)長(zhǎng)度。

wKgZPGlTfQqAXjHlAAAa3idyxBk979.jpg

8.對(duì)接sfp_pligin.c中flash讀函數(shù)接口

讀函數(shù)與寫(xiě)函數(shù)參數(shù)差不多,不過(guò)多介紹。

wKgZO2lTfQqANcEQAAAX5LlqKIk569.jpg

9.對(duì)接sfp_pligin.c中進(jìn)入編程模式接口

該函數(shù)用于提示用戶(hù)現(xiàn)在已經(jīng)請(qǐng)求進(jìn)入編程狀態(tài),用戶(hù)可根據(jù)實(shí)際情況去調(diào)用sfp_plugin_set_prog_allow(SFP_PROG_ALLOW);來(lái)允許,或者調(diào)用sfp_plugin_set_prog_allow(SFP_PROG_DISALLOW);來(lái)拒絕。(此處固定允許編程)

wKgZO2lU5jyAWRi4AABsxYwxpas952.png

10.對(duì)接sfp_pligin.c中退出編程模式接口

該接口用于提示用戶(hù)已經(jīng)退出編程模式了,download_status用戶(hù)反饋本次的操作狀態(tài)(操作成功、下載中斷、校驗(yàn)失敗),用戶(hù)可判斷其狀態(tài)來(lái)做一些狀態(tài)的指示,例如向GUI線程發(fā)送狀態(tài)告知用戶(hù)下載的結(jié)果。

wKgZPGlTfQuAYZAZAAAwSFrkhcA127.jpg

11.對(duì)接sfp_pligin.c中檢查編程信息的接口

該接口用于檢查上位機(jī)待下載的數(shù)據(jù)信息,如file_size(下載的大?。瑂tart_addr

(下載的起始地址),packed_len(分包的長(zhǎng)度),用戶(hù)需要根據(jù)自己所在平臺(tái)的實(shí)際情況判斷,有錯(cuò)誤就返回錯(cuò)誤碼,此處可按作者寫(xiě)的不用改。

wKgZO2lTfQuAQPHrAABU1Gv-IiA435.jpg

12.對(duì)接sfp_pligin.c中讀取信息的檢查接口

該接口用于檢查上位機(jī)讀取的信息是否合法,如讀取地址,讀取的長(zhǎng)度是否超過(guò)范圍,同樣可不修改,按作者的方式。

wKgZPGlTfQuAFOoqAAA-iPaJ_rI509.jpg

13.對(duì)接完畢,編譯檢查

至此,需要對(duì)接的函數(shù)已經(jīng)全部完成了,編譯成功即可下一步

14.調(diào)用初始化函數(shù)

sfp_pligin.h文件中找到該函數(shù)調(diào)用

wKgZO2lU5kyAOK7jAABiXIcuFh4970.png

wKgZO2lTfQyAPbPiAAArDozml_8820.jpg

15.調(diào)用串口接收事件函數(shù)

sfp_pligin.h文件中找到該函數(shù)調(diào)用

在你的串口收到一幀數(shù)據(jù)的函數(shù)中,調(diào)用該函數(shù)即可,形參傳入接收到的數(shù)據(jù)指針,接收到的長(zhǎng)度。

wKgZPGlTfQyAGgpiAAAlQjSiBTQ428.jpg

wKgZO2lTfQyAZq0OAABChYFb0LE916.jpg

16.移植已全部完成,可以使用上位機(jī)進(jìn)行測(cè)試

HTML上位機(jī)使用方法說(shuō)明

1.使用瀏覽器打開(kāi)serial_flash_download_tool.html2.選擇串口設(shè)置波特率

wKgZPGlU5liARgoRAABXqbRO0Ko328.png

3.設(shè)置下載參數(shù)

Flash id : 區(qū)分不同的flash設(shè)備,只有一個(gè)時(shí)忽略

Flash 大?。合拗莆募螺d的大小

扇區(qū)大?。捍僮鱢lash的最小擦除大?。╪or flash一般都是4096)

扇區(qū)號(hào):需要從第幾個(gè)扇區(qū)開(kāi)始下載

分包長(zhǎng)度:協(xié)議分包讀寫(xiě)的最大值,和串口收發(fā)有關(guān)(可默認(rèn)不修改)

擦除超時(shí)時(shí)間:根據(jù)實(shí)際flash擦除耗時(shí)時(shí)間去定義(時(shí)間和擦除的大小有關(guān))

寫(xiě)入超時(shí)時(shí)間:根據(jù)實(shí)際flash寫(xiě)入耗時(shí)實(shí)際去修改(寫(xiě)入一般不會(huì)太久可不修改)

wKgZPGlTfQ2AWoS7AAAlpO4doAM365.jpg

4.選擇待下載的文件

文件必須小于flash的大小,否則會(huì)報(bào)錯(cuò),選擇以后會(huì)統(tǒng)計(jì)文件大小,占用多少扇區(qū)。

wKgZPGlU5mOAZh_XAABa5pBkocA776.png

5.點(diǎn)擊開(kāi)始下載

可配置是否需要校驗(yàn),是否啟用差分更新,默認(rèn)開(kāi)啟,不需要可以取消勾選。

wKgZO2lTfQ6AJU8DAAAaxkk4k60080.jpg

6.觀察下載進(jìn)度和日志

wKgZO2lU5m2AciXmAABeXhLNwig213.png

總結(jié)

本次分享的是用CW32L012的串口去下載外部flash,該方法通用性強(qiáng),移植便捷,代碼風(fēng)格好,易于閱讀維護(hù),上位機(jī)界面清晰,操作簡(jiǎn)單,易于使用,硬件上性能強(qiáng),有48M SPI 和96M 主頻,喜歡做高速SPI傳輸?shù)目蛻?hù)一定不要錯(cuò)過(guò)這么高性?xún)r(jià)比的芯片哦!

最后對(duì)于內(nèi)部flash的操作,也是一樣的呀,只需將flash操作接口換成cw32l012內(nèi)部flash操作的API,然后寫(xiě)好bootload,在bootload中運(yùn)行我們這個(gè)框架將數(shù)據(jù)下載到內(nèi)部flash,然后校驗(yàn)固件,成功以后就可以跳轉(zhuǎn)執(zhí)行APP代碼了,這不就實(shí)現(xiàn)了串口OTA更新了嘛!

聲明:本文內(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)投訴
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1747

    瀏覽量

    155489
  • 串口
    +關(guān)注

    關(guān)注

    15

    文章

    1618

    瀏覽量

    82792
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    299

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    CW32移植Free-RTOS】CW32開(kāi)發(fā)者扶持計(jì)劃

    CW32配置Free-RTOS全過(guò)程,CW32開(kāi)發(fā)者扶持計(jì)劃
    的頭像 發(fā)表于 04-18 09:38 ?7334次閱讀
    【<b class='flag-5'>CW32</b>移植Free-RTOS】<b class='flag-5'>CW32</b>開(kāi)發(fā)者扶持計(jì)劃

    CW32飯盒派開(kāi)發(fā)板試用體驗(yàn)】串口實(shí)驗(yàn)

    CW32飯盒派開(kāi)發(fā)板實(shí)現(xiàn)串口接收并控制LED
    的頭像 發(fā)表于 05-29 09:13 ?42w次閱讀
    【<b class='flag-5'>CW32</b>飯盒派開(kāi)發(fā)板試用體驗(yàn)】<b class='flag-5'>串口</b>實(shí)驗(yàn)

    CW32快速開(kāi)發(fā)入門(mén)

    CW32快速開(kāi)發(fā)入門(mén)
    的頭像 發(fā)表于 04-24 18:56 ?3589次閱讀
    <b class='flag-5'>CW32</b>快速開(kāi)發(fā)入門(mén)

    CW32量產(chǎn)燒錄工具

    本節(jié)主要介紹CW32微控制器的燒錄器CW-Writer,以及與之配合的軟件CW-Programmer的使用方法。燒錄器CW-Writer通過(guò)ISP協(xié)議,可實(shí)現(xiàn)對(duì)
    的頭像 發(fā)表于 04-25 15:22 ?2808次閱讀
    <b class='flag-5'>CW32</b>量產(chǎn)燒錄<b class='flag-5'>工具</b>

    如何使用新版本J-Flash編程CW32 MCU

    :AppData是隱藏目錄,需打開(kāi)顯示。 3、將CW32 MCU器件支持包JlinkDevices_WHXY.rar解壓到新建的JlinkDevices子目錄即可。 4、運(yùn)行JFlash.exe,通過(guò)Jlink連接CW32 MCU測(cè)試板,進(jìn)行
    發(fā)表于 11-12 07:24

    使用J-Flash來(lái)編程CW32 MCU

    1.安裝J-Flash: 從SEGGER官方網(wǎng)站下載最新版本的J-Flash工具。 按照安裝向?qū)У闹甘就瓿砂惭b過(guò)程。 2.連接硬件: 將CW32 MCU通過(guò)調(diào)試器(如J-LINK)連接
    發(fā)表于 11-25 07:00

    【應(yīng)用筆記】CW32 自舉程序中使用的 ISP 協(xié)議

    CW32 自舉程序中使用的 ISP 協(xié)議CW32 微控制器片上 FLASH 存儲(chǔ)器有一部分區(qū)域用于存儲(chǔ) BootLoader 啟動(dòng)程序,在芯片出廠時(shí)已編程,用戶(hù)可利用 BootLoad
    發(fā)表于 06-06 13:26

    CW32 MCU開(kāi)發(fā)資料匯總(手冊(cè)、工具、固件庫(kù))

    32L083_StdPeriph_Lib.zip4、CW32 MCU開(kāi)發(fā)工具:*附件:CW-DAPLINK調(diào)試器驅(qū)動(dòng).zip*附件:CW-DAPLINK使用手冊(cè).pdf*附件:
    發(fā)表于 07-27 14:47

    CW Programmer CW32系列芯片燒錄工具配套軟件

    CW Programmer CW32系列芯片的燒錄工具配套軟件
    發(fā)表于 09-15 07:44

    應(yīng)用筆記(二)| 武漢芯源CW32自舉程序中使用的ISP協(xié)議

    前言CW32微控制器片上FLASH存儲(chǔ)器有一部分區(qū)域用于存儲(chǔ)BootLoader啟動(dòng)程序,在芯片出廠時(shí)已編程,用戶(hù)可利用BootLoader啟動(dòng)程序提供的ISP模式,通過(guò)UART串口
    的頭像 發(fā)表于 07-11 16:08 ?2457次閱讀
    應(yīng)用筆記(二)| 武漢芯源<b class='flag-5'>CW32</b>自舉程序中使用的ISP協(xié)議

    cw32和stm32的區(qū)別

    cw32和stm32的區(qū)別 CW32和STM32是兩種常見(jiàn)的單片機(jī),被廣泛應(yīng)用于各種電子設(shè)備中。在本文中,我們將深入探討CW32和STM32之間的區(qū)別和優(yōu)劣勢(shì)。 1. 硬件性能 硬件性能是衡量單片機(jī)
    的頭像 發(fā)表于 08-16 11:15 ?6330次閱讀

    cw32和gd32的區(qū)別

    cw32和gd32的區(qū)別 CW32和GD32是兩種不同的芯片系列,分別由WCH和GigaDevice公司推出,兩者有很多不同之處,下面我們來(lái)詳細(xì)介紹。 首先從CW32系列開(kāi)始,CW32
    的頭像 發(fā)表于 08-16 11:15 ?3234次閱讀

    應(yīng)用筆記-CW32 自舉程序中使用的 ISP 協(xié)議

    CW32自舉程序中使用的ISP協(xié)議CW32微控制器片上FLASH存儲(chǔ)器有一部分區(qū)域用于存儲(chǔ)BootLoader啟動(dòng)程序,在芯片出廠時(shí)已編程,用戶(hù)可利用BootLoader啟動(dòng)程序提供的
    發(fā)表于 06-06 13:37 ?7次下載

    基于CW32的物聯(lián)網(wǎng)應(yīng)用

    CW32】基于CW32的物聯(lián)網(wǎng)應(yīng)用
    的頭像 發(fā)表于 11-02 15:55 ?1964次閱讀
    基于<b class='flag-5'>CW32</b>的物聯(lián)網(wǎng)應(yīng)用

    如何使用新版本J-Flash編程CW32 MCU?

    CW32 MCU器件支持包JlinkDevices_WHXY.rar解壓到新建的JlinkDevices子目錄即可。 4、運(yùn)行JFlash.exe,通過(guò)Jlink連接CW32 MCU測(cè)試板,進(jìn)行編程測(cè)試
    的頭像 發(fā)表于 07-01 15:05 ?800次閱讀
    如何使用新版本J-<b class='flag-5'>Flash</b><b class='flag-5'>編程</b><b class='flag-5'>CW32</b> MCU?