国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

<span id="z5wki"></span>
<td id="z5wki"></td>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

CW32生態社區 ? 來源:CW32生態社區 ? 作者:CW32生態社區 ? 2025-12-31 17:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

通過網盤分享的文件:串口flash編程工具例程.zip

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

提取碼: CW32

前言

在往期的分享中,我們分享過在cw32L012上運行keil的FLM外部flash下載算法的方法?!?strong>CW32L012實現外部flash下載算法簡單回顧,在項目開發過程中,當需要掉電保存大量的數據時(幾十上百K字節數據),放到單片機內部flash是不明智的,內部flash資源寶貴,用于存代碼才是最好的,所以我們需要將數據下載到外部flash中。

keil外部flash下載算法,簡單來說它使用SWD調試接口下載,用戶根據keil提供的下載算法模板修改,對接外部flash編程的接口,編譯生成FLM文件,當需要下載時,把待下載數據定義到外部flash的地址范圍中,然后添加該下載算法即可下載,總體來說稍復雜。

經常會有客戶問我們能不能用串口下載更新flash?有沒有用串口OTA更新的方法(包含內部flash),本次分享就利用串口進行flash編程,該方式更加通用。

Keil 外部flash下載的缺陷

每種單片機都需要寫一遍外部flash下載算法,然后生成FLM文件,比較依賴keil開發環境,

下載算法是加載到RAM執行的,算法大小必須小于等于RAM的大小,對于RAM比較小的單片機,很難應用該方法

下載算法加載以后,每次點下載都會完整把外部flash的數據下載一遍,即使你只改變的是局部數據,或者內部flash的代碼,只要下載,都會重新下載一遍,除非每次屏蔽,或者專門做一個下載的工程。

因為使用的是SWD調試接口下載,如果產品不希望引出該接口給客戶使用,或者因為代碼安全原因屏蔽了該接口,下載就比較受限

串口flash編程工具簡介

該工具是基于HTML語言開發,使用串口進行通訊,支持多種波特率,可配置下載的參數,如flash id號、flash 大小、下載扇區號、扇區大小、通訊分包長度 、擦除超時時間和寫入超時時間等。參數均可修改,當修改的不合法時會自動調整到合法數值。文件的選擇不關心文件類型,可以是任意類型,但文件大小要小于flash大小。另外設計有數據校驗、差分更新、進度條和日志顯示功能。

該工具使用自定義串口協議,可能大家比較疑惑為什么不使用現成的modbus協議,或者XYZ-MODEM協議,或者是其他文件傳輸協議?因為主要考慮靈活性、后期可維護性和輕量級的特性,因此自定義協議是最佳選擇。

測試硬件平臺

依舊選擇cw32L012,該單片機有很多優點,高性價比,主頻可達96M,SPI可運行在48M,高速的SPI對于flash的操作是非常吃香的,有更高的通訊帶寬,對比103的18M SPI來說,提升太大了,我們測試讀寫w25q128速度如下:

wKgZO2lTfQaALdQ3AADSYMXsrws999.jpg

可以看到cw32l012這款芯片對于讀寫w25q128速度是相當快的,讀取2K的數據也只需要2ms,真的非???,該芯片還有4路DMA,對于需要高速傳輸的場景還可以開啟DMA,但目前測試下來也夠用了,大家有高速SPI的需求可以選擇該芯片哦。

移植教程

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

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

1.準備好串口flash編程算法庫文件

Comm_fmt不必關注,該文件用于構造解析命令體

Sfp_plugin.c為主要關注對象,用戶需要在該文件內實現相關port接口

wKgZPGlTfQeAJqj9AAATeLbdyNE860.jpg

wKgZO2lTfQeAJs5RAAAWsLpie08670.jpg

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

wKgZPGlTfQeATb7bAAAgih1s77M864.jpg

wKgZO2lTfQeAIY3eAAA3OPzvKvo970.jpg

3.編譯添加的文件

有錯誤和警告自行解決

chaijie_default.png

4.編寫sfp_pligin.c初始化代碼

初始非常簡單,只需要給定一個發送緩沖區就行。

wKgZPGlTfQiAcT_YAAAwlNbZenQ200.jpg

5.對接sfp_pligin.c中串口發送函數

對接你實際通訊用的串口發送接口,這里我們使用的是串口3。

(flash_id 在后面的移植中會一直出現,其設計目的是區分不同flash,當設備有多個flash時,通過判斷該id號去操作不同的flash,如果只操作一個flash,該參數忽略)

wKgZPGlTfQmAQYLaAAAUrC8PvHQ178.jpg

6.對接sfp_pligin.c中flash擦除函數

對接你實際的flash擦除函數接口。Addr為擦除的起始地址,len為擦除的總長度,你可以根據要擦除的大小自行決定擦除策略,如可以按最小扇區擦除,也可以判斷如果len達到了32k或64k級別,去調用更大的扇區擦除函數,此處按最小扇區大小擦除。

wKgZO2lU5iyAWoTMAACBxYajwNM980.png

7.對接sfp_pligin.c中flash寫函數接口

寫函數非常簡單,寫入起始地址,數據,數據長度。

wKgZPGlTfQqAXjHlAAAa3idyxBk979.jpg

8.對接sfp_pligin.c中flash讀函數接口

讀函數與寫函數參數差不多,不過多介紹。

wKgZO2lTfQqANcEQAAAX5LlqKIk569.jpg

9.對接sfp_pligin.c中進入編程模式接口

該函數用于提示用戶現在已經請求進入編程狀態,用戶可根據實際情況去調用sfp_plugin_set_prog_allow(SFP_PROG_ALLOW);來允許,或者調用sfp_plugin_set_prog_allow(SFP_PROG_DISALLOW);來拒絕。(此處固定允許編程)

wKgZO2lU5jyAWRi4AABsxYwxpas952.png

10.對接sfp_pligin.c中退出編程模式接口

該接口用于提示用戶已經退出編程模式了,download_status用戶反饋本次的操作狀態(操作成功、下載中斷、校驗失敗),用戶可判斷其狀態來做一些狀態的指示,例如向GUI線程發送狀態告知用戶下載的結果。

wKgZPGlTfQuAYZAZAAAwSFrkhcA127.jpg

11.對接sfp_pligin.c中檢查編程信息的接口

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

(下載的起始地址),packed_len(分包的長度),用戶需要根據自己所在平臺的實際情況判斷,有錯誤就返回錯誤碼,此處可按作者寫的不用改。

wKgZO2lTfQuAQPHrAABU1Gv-IiA435.jpg

12.對接sfp_pligin.c中讀取信息的檢查接口

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

wKgZPGlTfQuAFOoqAAA-iPaJ_rI509.jpg

13.對接完畢,編譯檢查

至此,需要對接的函數已經全部完成了,編譯成功即可下一步

14.調用初始化函數

sfp_pligin.h文件中找到該函數調用

wKgZO2lU5kyAOK7jAABiXIcuFh4970.png

wKgZO2lTfQyAPbPiAAArDozml_8820.jpg

15.調用串口接收事件函數

sfp_pligin.h文件中找到該函數調用

在你的串口收到一幀數據的函數中,調用該函數即可,形參傳入接收到的數據指針,接收到的長度。

wKgZPGlTfQyAGgpiAAAlQjSiBTQ428.jpg

wKgZO2lTfQyAZq0OAABChYFb0LE916.jpg

16.移植已全部完成,可以使用上位機進行測試

HTML上位機使用方法說明

1.使用瀏覽器打開serial_flash_download_tool.html2.選擇串口設置波特率

wKgZPGlU5liARgoRAABXqbRO0Ko328.png

3.設置下載參數

Flash id : 區分不同的flash設備,只有一個時忽略

Flash 大小:限制文件下載的大小

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

扇區號:需要從第幾個扇區開始下載

分包長度:協議分包讀寫的最大值,和串口收發有關(可默認不修改)

擦除超時時間:根據實際flash擦除耗時時間去定義(時間和擦除的大小有關)

寫入超時時間:根據實際flash寫入耗時實際去修改(寫入一般不會太久可不修改)

wKgZPGlTfQ2AWoS7AAAlpO4doAM365.jpg

4.選擇待下載的文件

文件必須小于flash的大小,否則會報錯,選擇以后會統計文件大小,占用多少扇區。

wKgZPGlU5mOAZh_XAABa5pBkocA776.png

5.點擊開始下載

可配置是否需要校驗,是否啟用差分更新,默認開啟,不需要可以取消勾選。

wKgZO2lTfQ6AJU8DAAAaxkk4k60080.jpg

6.觀察下載進度和日志

wKgZO2lU5m2AciXmAABeXhLNwig213.png

總結

本次分享的是用CW32L012的串口去下載外部flash,該方法通用性強,移植便捷,代碼風格好,易于閱讀維護,上位機界面清晰,操作簡單,易于使用,硬件上性能強,有48M SPI 和96M 主頻,喜歡做高速SPI傳輸的客戶一定不要錯過這么高性價比的芯片哦!

最后對于內部flash的操作,也是一樣的呀,只需將flash操作接口換成cw32l012內部flash操作的API,然后寫好bootload,在bootload中運行我們這個框架將數據下載到內部flash,然后校驗固件,成功以后就可以跳轉執行APP代碼了,這不就實現了串口OTA更新了嘛!

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FlaSh
    +關注

    關注

    10

    文章

    1748

    瀏覽量

    155508
  • 串口
    +關注

    關注

    15

    文章

    1618

    瀏覽量

    82806
  • CW32
    +關注

    關注

    1

    文章

    299

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    CW32移植Free-RTOS】CW32開發者扶持計劃

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

    CW32飯盒派開發板試用體驗】串口實驗

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

    CW32快速開發入門

    CW32快速開發入門
    的頭像 發表于 04-24 18:56 ?3594次閱讀
    <b class='flag-5'>CW32</b>快速開發入門

    CW32量產燒錄工具

    本節主要介紹CW32微控制器的燒錄器CW-Writer,以及與之配合的軟件CW-Programmer的使用方法。燒錄器CW-Writer通過ISP協議,可實現對
    的頭像 發表于 04-25 15:22 ?2815次閱讀
    <b class='flag-5'>CW32</b>量產燒錄<b class='flag-5'>工具</b>

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

    :AppData是隱藏目錄,需打開顯示。 3、將CW32 MCU器件支持包JlinkDevices_WHXY.rar解壓到新建的JlinkDevices子目錄即可。 4、運行JFlash.exe,通過Jlink連接CW32 MCU測試板,進行
    發表于 11-12 07:24

    使用J-Flash編程CW32 MCU

    1.安裝J-Flash: 從SEGGER官方網站下載最新版本的J-Flash工具。 按照安裝向導的指示完成安裝過程。 2.連接硬件: 將CW32 MCU通過調試器(如J-LINK)連接
    發表于 11-25 07:00

    【應用筆記】CW32 自舉程序中使用的 ISP 協議

    CW32 自舉程序中使用的 ISP 協議CW32 微控制器片上 FLASH 存儲器有一部分區域用于存儲 BootLoader 啟動程序,在芯片出廠時已編程,用戶可利用 BootLoad
    發表于 06-06 13:26

    CW32 MCU開發資料匯總(手冊、工具、固件庫)

    32L083_StdPeriph_Lib.zip4、CW32 MCU開發工具:*附件:CW-DAPLINK調試器驅動.zip*附件:CW-DAPLINK使用手冊.pdf*附件:
    發表于 07-27 14:47

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

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

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

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

    cw32和stm32的區別

    cw32和stm32的區別 CW32和STM32是兩種常見的單片機,被廣泛應用于各種電子設備中。在本文中,我們將深入探討CW32和STM32之間的區別和優劣勢。 1. 硬件性能 硬件性能是衡量單片機
    的頭像 發表于 08-16 11:15 ?6331次閱讀

    cw32和gd32的區別

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

    應用筆記-CW32 自舉程序中使用的 ISP 協議

    CW32自舉程序中使用的ISP協議CW32微控制器片上FLASH存儲器有一部分區域用于存儲BootLoader啟動程序,在芯片出廠時已編程,用戶可利用BootLoader啟動程序提供的
    發表于 06-06 13:37 ?7次下載

    基于CW32的物聯網應用

    CW32】基于CW32的物聯網應用
    的頭像 發表于 11-02 15:55 ?1965次閱讀
    基于<b class='flag-5'>CW32</b>的物聯網應用

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

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