女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

3天內不再提示

AT32講堂021 | 如何使用AT32 MCU的SPIM作為外部存儲器的擴展功能

雅特力 AT32 MCU ? 2022-08-16 09:28 ? 次閱讀

概述

SPIM(External SPI FLASH memory interface)最大地址段為0x08400000-0x093FFFFF(16MB),是AT32 MCU獨有的一種Flash訪問方式。用戶可以使用自己的Flash作為AT32 MCU的外掛Flash。該方式有別于片上Bank1/Bank2,用戶可根據具體需求選擇是否開啟。開啟SPIM后可以作為Flash擴展實現如下功能:

  • 在SPIM地址存放用戶執行程序,類似于Bank1/Bank2一樣執行程序。
  • 用戶程序直接訪問SPIM地址,作為存儲字體庫,圖片等存儲器使用。

SPIM配置

SPIM僅允許按字(32bit)或者半字(16bit)操作,在執行讀、編程、擦除SPIM前,必須首先執行初始化及解鎖操作。
SPIM在AT32不同系列產品及不同封裝上,可能使用的pin有所不同,具體請參考對應型號產品的RM和DS,下面以AT32F403A系列為例,描述操作步驟

初始化及解鎖操作

初始化及解鎖的步驟,在AT32的BSP中已經封裝成庫函數,用戶可以直接調用1) 使能GPIOA、GPIOB和IOMUXCRM時鐘。2) 配置對應pin PA8、PA11、PA12、PB1、PB6、PB7為推挽復用輸出模式。3) IOMUX_REMAP2寄存器中使能SPIM接口。4) 設置FLASH_SELECT寄存器選擇配置SPIM Flash的類型。5) 使用KEY解鎖SPIM:寫FLASH_UNLOCK3寄存器2次,按順序分別寫0x45670123和0xCDEF89AB。6) 檢查SPIM是否解鎖成功,讀取FLASH_CTRL3寄存器的OPLK位,如果被清除為0,則可以開始操作SPIM。

Flash型號選擇

SPIM可以配置支持不同型號的spi Flash,支持的指令集如下表,更詳細描述可以看參考手冊FlASH章節。表1. SPIM支持的指令集9220bdb8-1ad2-11ed-9ade-dac502259ad0.png

讀操作

直接按字(32bit)或者半字(16bit)訪問需要讀取數據的地址段:0x08400000–0x093FFFFF

編程操作

編程操作步驟,在AT32的BSP中已經封裝成庫函數,用戶可以直接調用1) 打開編程操作,FLASH_CTRL3寄存器FPRGM位置12) 直接按字(32bit)或者半字(16bit)在需要編程的地址寫入數據3) 檢查是否寫入完成讀取FLASH_STS3寄存器的OBF位是否清除,如果清除表示寫入完成4) 關閉編程操作,FLASH_CTRL3寄存器FPRGM位置05) 檢查是否寫入成功,讀取FLASH_STS3寄存器的PRGMERR和EPPERR位,如果都為0則表示寫入成功

擦除操作

SPIM擦除分為Mass Erase和Sector Erase,每個sector固定為4KB,在AT32的BSP中已經封裝成庫函數,用戶可以直接調用Mass Erase1) 使能擦除,FLASH_CTRL3寄存器CHPERS位置12) 開始擦除,FLASH_CTRL3寄存器ERSTR位置13) 關閉擦除,FLASH_CTRL3寄存器CHPERS位置0Sector Erase1) 使能擦除,FLASH_CTRL3寄存器SECERS位置12) 選擇擦除扇區地址,FLASH_ADDR3寄存器寫入需要擦除扇區的地址3) 開始擦除,FLASH_CTRL3寄存器ERSTR位置14) 關閉擦除,FLASH_CTRL3寄存器SECERS位置0

加密操作

因為SPIM電路裸露在MCU芯片外部,為防止存儲在SPIM Flash里邊的數據被外界直接讀取,SPIM提供了加密功能,將原始數據通過特有算法進行加密操作后再寫入Flash,AT32 MCU讀取SPIM數據時會先進行解密得到原始數據,然后才使用,保證數據安全。加密算法所用的SPIM scrambled KEY為用戶系統數據區的地址0x1FFFF820-0x1FFFF82F范圍內數據。

  • 當SPIM scrambled KEY值全為0xFFFFFFFF時,加密功能關閉。
  • 當SPIM scrambled KEY值不全為0xFFFFFFFF時,加密功能開啟。AT32 MCU根據FLASH_DA寄存器值作為加密范圍分界,小于0x08400000+FLASH_DA地址段的數據為密文,其余范圍數據仍然采用明文存儲。

注意:數據寫入時的加密狀態必須和讀取時的加密狀態保持一致,否則可能導致讀取的數據是亂碼而無法正確使用或者運行。即寫入時如果配置了SPIM scrambled KEY及FLASH_DA,那么在讀取時也必須配置相同的SPIM scrambled KEY及FLASH_DA。

圖1. SPIM scrambled KEY存放地址923c107c-1ad2-11ed-9ade-dac502259ad0.png圖2. SPIM地址范圍924c8ec0-1ad2-11ed-9ade-dac502259ad0.png

硬件電路

因為SPIM連接在外部電路,受環境影響較大,為保證電路穩定,需盡量減少PCB布線長度。

注意:SPIM運行頻率為MCU的AHB時鐘頻率的1/2,所以當開啟SPIM時,MCU對應的運行AHB頻率有最大限制值,不同型號MCU在SPIM開啟時運行的最大頻率值請用戶參考DS的通用工作條件章節描述。

圖3. 參考電路

92644f56-1ad2-11ed-9ade-dac502259ad0.png

I/O復用

要使用SPIM,需要注意跟其他外設IP的IO復用問題。

當SPIM使用的IO還有對應的其他外設使能的話,有些IO即使其他外設應用中沒有用到,但也可能會占用。

例如:XMC和SPIM同時使用時,在F403A上PB7用作SPIM的IO2,但是如果配置使能了XMC,即使XMC_NADV功能沒有使用,則PB7也會被XMC_NADV默認開啟占用,導致SPIM工作異常。此時需手動配置IOMUX_REMAP2寄存器關閉XMC_NADV功能,調用庫函數即可,如下gpio_pin_remap_config (XMC_NADV_MUX, TRUE)

圖4. XMC和SPIM共用引腳9284f724-1ad2-11ed-9ade-dac502259ad0.png

圖5. 單獨關閉XMC_NADV功能

92a039bc-1ad2-11ed-9ade-dac502259ad0.png

demo示例

AT32的BSP中,有兩個例程operate_spim和run_in_spim演示了如何使用SPIM。

用戶程序訪問SPIM存儲區

如果通過用戶程序去執行讀、編程及擦除操作,只需要按照正常配置初始化及解鎖后就可以實現。BSP中examples\flash\operate_spim執行了SPIM的初始化、擦除、編程和讀取流程,并通過LED顯示執行結果。

下載用戶程序到SPIM或者用戶程序在SPIM執行

如果用戶程序通過keil下載到SPIM中,或者想程序直接在SPIM執行,需要執行一些額外的操作。附件工程run_in_spim通過LED的閃爍,簡單的演示了代碼如何在SPIM上運行。1) Options-Debug-Settings-Flash Download中選擇添加外掛flash類型。圖6. 配置SPIM Flash類型92b2d86a-1ad2-11ed-9ade-dac502259ad0.png2) Options-Target中添加SPIM起始地址和容量大小,但不勾選。Demo中將SPIM定義在IROM2位置,用于存儲C文件注意:如果勾選則KEIL在編譯時可能會將其余不需要運行在SPIM的函數編譯到SPIM地址段。圖7. 配置SPIM起始地址和容量92ca062a-1ad2-11ed-9ade-dac502259ad0.png3) Project中選擇需要運行在SPIM對應位置的C文件,鼠標右鍵選Options進入將Memory?Assignment的code地址改為對應地址段。注意:如果工程中函數還有更多指定地址分段編譯的需求,可以繼續添加到對應 ROM1/2/3 等,也可以手動修改sct文件圖8. 配置需運行在SPIM第一部分代碼92f9b992-1ad2-11ed-9ade-dac502259ad0.png4)?編譯時勾選自動生成sct文件的選項,編譯完成后瀏覽sct文件可以發現需要運行在SPIM區域的函數已被正確編譯到該區域。圖9 勾選自動生成sct文件931aece8-1ad2-11ed-9ade-dac502259ad0.png

圖10 自動生成的sct文件

9330739c-1ad2-11ed-9ade-dac502259ad0.png

注意:整個代碼的啟動必須從bank1開始,須保證SPIM flash的初始化代碼在程序執行到SPIM前運行。

關于雅特力雅特力科技于2016年成立,是一家致力于推動全球市場32位微控制器(MCU)創新趨勢的芯片設計公司,專注于ARM Cortex-M4/M0+的32位微控制器研發與創新,全系列采用55nm先進工藝及ARM Cortex-M4高效能或M0+低功耗內核,締造M4業界最高主頻288MHz運算效能,并支持工業級別芯片工作溫度范圍(-40°~105°)。雅特力目前已累積相當多元的終端產品成功案例:如微型打印機、掃地機、光流無人機、熱成像儀、激光雷達、工業縫紉機、伺服驅控、電競周邊市場、斷路器、ADAS、T-BOX、數字電源、電動工具等終端設備應用,廣泛地覆蓋5G物聯網、消費、商務及工控等領域。

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

    關注

    146

    文章

    17869

    瀏覽量

    361042
  • 存儲器
    +關注

    關注

    38

    文章

    7637

    瀏覽量

    166511
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    MCU存儲器層次結構解析

    ? ? ? ?MCU存儲器層次結構通過整合不同性能與功能存儲單元,優化系統效率并滿足多樣化場景需求。其核心架構可分為以下層次: 一、寄存
    的頭像 發表于 05-09 10:21 ?151次閱讀

    STM32N6使用SDMMC1-eMMC作為外部存儲器,地址如何配置?

    STM32N6 使用SDMMC1-eMMC作為外部存儲器(保存FSBL和app),因為eMMC不支持內存映射,那么使用STM32CubeProgrammer下載bin文件時地址選擇哪里?還有
    發表于 04-28 08:02

    STM32N6使用SDMMC1-eMMC作為外部存儲器,地址如何配置?

    STM32N6 使用SDMMC1-eMMC作為外部存儲器(保存FSBL和app),因為eMMC不支持內存映射,那么使用STM32CubeProgrammer下載bin文件時地址選擇哪里?還有
    發表于 04-22 11:31

    TMS320C6000 DSP外部存儲器接口(EMIF)參考指南

    電子發燒友網站提供《TMS320C6000 DSP外部存儲器接口(EMIF)參考指南.pdf》資料免費下載
    發表于 12-24 16:17 ?1次下載
    TMS320C6000 DSP<b class='flag-5'>外部</b><b class='flag-5'>存儲器</b>接口(EMIF)參考指南

    TMS320VC5503/5507/5509 DSP外部存儲器接口(EMIF)參考指南

    電子發燒友網站提供《TMS320VC5503/5507/5509 DSP外部存儲器接口(EMIF)參考指南.pdf》資料免費下載
    發表于 12-21 09:42 ?0次下載
    TMS320VC5503/5507/5509 DSP<b class='flag-5'>外部</b><b class='flag-5'>存儲器</b>接口(EMIF)參考指南

    使用SD Flash為TMS320C28x器件編程外部非易失性存儲器

    電子發燒友網站提供《使用SD Flash為TMS320C28x器件編程外部非易失性存儲器.pdf》資料免費下載
    發表于 10-15 11:48 ?0次下載
    使用SD Flash為TMS320C28x器件編程<b class='flag-5'>外部</b>非易失性<b class='flag-5'>存儲器</b>

    使用低內存MSP430? MCU的帶備份存儲器外部RTC

    電子發燒友網站提供《使用低內存MSP430? MCU的帶備份存儲器外部RTC.pdf》資料免費下載
    發表于 10-09 11:43 ?0次下載
    使用低內存MSP430? <b class='flag-5'>MCU</b>的帶備份<b class='flag-5'>存儲器</b>的<b class='flag-5'>外部</b>RTC

    STM32轉AT32代碼轉換

    GD32等等。本文主要介紹一款ST32轉AT32的工具AT32SmartCodeTransfer.exe,可以快速實現芯片的更換,提高開發效率。1.1.軟件功能本軟
    的頭像 發表于 09-28 08:09 ?681次閱讀
    STM32轉<b class='flag-5'>AT32</b>代碼轉換

    AT32講堂088 | 雅特力AT32F402/F405時鐘配置

    簡介時鐘是芯片正確高效運行的基礎,正確的時鐘配置是芯片能正確運行的必要條件,其重要性不言而喻。AT32各系列產品的時鐘配置部分可能存在細微的差異和需要注意的事項,本文檔就著重針對各系列的情況來詳細
    的頭像 發表于 09-15 08:08 ?928次閱讀
    <b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>088 | 雅特力AT32F402/F405時鐘配置

    簡述非易失性存儲器的類型

    非易失性存儲器(Non-Volatile Memory, NVM)是指即使在電源關閉或失去外部電源的情況下,仍能保持存儲數據的計算機存儲器。這類存儲
    的頭像 發表于 09-10 14:44 ?2087次閱讀

    外部存儲器有哪些

    外部存儲器是指用于存儲數據的獨立設備,它們通常與計算機或其他電子設備連接,并提供額外的存儲空間,允許用戶在不改變主設備內部存儲的情況下保存和
    的頭像 發表于 09-05 10:42 ?4836次閱讀

    雅特力AT32 MCU的隨機數生成

    應用的需求。底下提供兩種方法:提高亂度的方法之一,使用ADC的誤差。AT32的微控制內置最多三個高級12位片上SAR模擬數字轉換(ADC)并提供自校準功能,保證1
    的頭像 發表于 08-30 12:26 ?1108次閱讀
    雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的隨機數生成

    AT32講堂085 | 雅特力AT32 MCU HICK時鐘校準

    簡介AT32系列MCU內部都有提供適合運行的內部高速時鐘(HICK),其本質就是內置于芯片的RC振蕩。在25℃下,其典型值頻率8MHz的精度由工廠校準到±1%,在-40到105℃,該內部高速時鐘
    的頭像 發表于 08-30 12:26 ?1169次閱讀
    <b class='flag-5'>AT32</b><b class='flag-5'>講堂</b>085 | 雅特力<b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> HICK時鐘校準

    ram存儲器和rom存儲器的區別是什么

    定義: RAM(Random Access Memory):隨機存取存儲器,是一種易失性存儲器,主要用于計算機和其他設備的臨時存儲。 ROM(Read-Only Memory):只讀存儲器
    的頭像 發表于 08-06 09:17 ?1273次閱讀

    外部存儲器是ROM還是RAM

    外部存儲器通常指的是計算機系統中除了主存(RAM)以外的存儲設備,如硬盤、固態硬盤(SSD)、USB閃存驅動、光盤等。它們主要用于長期存儲
    的頭像 發表于 08-06 09:13 ?2905次閱讀