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

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

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

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

AT32講堂021 | 如何使用AT32 MCU的SPIM作為外部存儲(chǔ)器的擴(kuò)展功能

雅特力 AT32 MCU ? 2022-08-16 09:28 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

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

  • 在SPIM地址存放用戶執(zhí)行程序,類似于Bank1/Bank2一樣執(zhí)行程序。
  • 用戶程序直接訪問(wèn)SPIM地址,作為存儲(chǔ)字體庫(kù),圖片等存儲(chǔ)器使用。

SPIM配置

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

初始化及解鎖操作

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

Flash型號(hào)選擇

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

讀操作

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

編程操作

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

擦除操作

SPIM擦除分為Mass Erase和Sector Erase,每個(gè)sector固定為4KB,在AT32的BSP中已經(jīng)封裝成庫(kù)函數(shù),用戶可以直接調(diào)用Mass Erase1) 使能擦除,F(xiàn)LASH_CTRL3寄存器CHPERS位置12) 開(kāi)始擦除,F(xiàn)LASH_CTRL3寄存器ERSTR位置13) 關(guān)閉擦除,F(xiàn)LASH_CTRL3寄存器CHPERS位置0Sector Erase1) 使能擦除,F(xiàn)LASH_CTRL3寄存器SECERS位置12) 選擇擦除扇區(qū)地址,F(xiàn)LASH_ADDR3寄存器寫入需要擦除扇區(qū)的地址3) 開(kāi)始擦除,F(xiàn)LASH_CTRL3寄存器ERSTR位置14) 關(guān)閉擦除,F(xiàn)LASH_CTRL3寄存器SECERS位置0

加密操作

因?yàn)镾PIM電路裸露在MCU芯片外部,為防止存儲(chǔ)在SPIM Flash里邊的數(shù)據(jù)被外界直接讀取,SPIM提供了加密功能,將原始數(shù)據(jù)通過(guò)特有算法進(jìn)行加密操作后再寫入Flash,AT32 MCU讀取SPIM數(shù)據(jù)時(shí)會(huì)先進(jìn)行解密得到原始數(shù)據(jù),然后才使用,保證數(shù)據(jù)安全。加密算法所用的SPIM scrambled KEY為用戶系統(tǒng)數(shù)據(jù)區(qū)的地址0x1FFFF820-0x1FFFF82F范圍內(nèi)數(shù)據(jù)。

  • 當(dāng)SPIM scrambled KEY值全為0xFFFFFFFF時(shí),加密功能關(guān)閉。
  • 當(dāng)SPIM scrambled KEY值不全為0xFFFFFFFF時(shí),加密功能開(kāi)啟。AT32 MCU根據(jù)FLASH_DA寄存器值作為加密范圍分界,小于0x08400000+FLASH_DA地址段的數(shù)據(jù)為密文,其余范圍數(shù)據(jù)仍然采用明文存儲(chǔ)。

注意:數(shù)據(jù)寫入時(shí)的加密狀態(tài)必須和讀取時(shí)的加密狀態(tài)保持一致,否則可能導(dǎo)致讀取的數(shù)據(jù)是亂碼而無(wú)法正確使用或者運(yùn)行。即寫入時(shí)如果配置了SPIM scrambled KEY及FLASH_DA,那么在讀取時(shí)也必須配置相同的SPIM scrambled KEY及FLASH_DA。

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

硬件電路

因?yàn)镾PIM連接在外部電路,受環(huán)境影響較大,為保證電路穩(wěn)定,需盡量減少PCB布線長(zhǎng)度。

注意:SPIM運(yùn)行頻率為MCU的AHB時(shí)鐘頻率的1/2,所以當(dāng)開(kāi)啟SPIM時(shí),MCU對(duì)應(yīng)的運(yùn)行AHB頻率有最大限制值,不同型號(hào)MCU在SPIM開(kāi)啟時(shí)運(yùn)行的最大頻率值請(qǐng)用戶參考DS的通用工作條件章節(jié)描述。

圖3. 參考電路

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

I/O復(fù)用

要使用SPIM,需要注意跟其他外設(shè)IP的IO復(fù)用問(wèn)題。

當(dāng)SPIM使用的IO還有對(duì)應(yīng)的其他外設(shè)使能的話,有些IO即使其他外設(shè)應(yīng)用中沒(méi)有用到,但也可能會(huì)占用。

例如:XMC和SPIM同時(shí)使用時(shí),在F403A上PB7用作SPIM的IO2,但是如果配置使能了XMC,即使XMC_NADV功能沒(méi)有使用,則PB7也會(huì)被XMC_NADV默認(rèn)開(kāi)啟占用,導(dǎo)致SPIM工作異常。此時(shí)需手動(dòng)配置IOMUX_REMAP2寄存器關(guān)閉XMC_NADV功能,調(diào)用庫(kù)函數(shù)即可,如下gpio_pin_remap_config (XMC_NADV_MUX, TRUE)

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

圖5. 單獨(dú)關(guān)閉XMC_NADV功能

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

demo示例

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

用戶程序訪問(wèn)SPIM存儲(chǔ)區(qū)

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

下載用戶程序到SPIM或者用戶程序在SPIM執(zhí)行

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

圖10 自動(dòng)生成的sct文件

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

注意:整個(gè)代碼的啟動(dòng)必須從bank1開(kāi)始,須保證SPIM flash的初始化代碼在程序執(zhí)行到SPIM前運(yùn)行。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • mcu
    mcu
    +關(guān)注

    關(guān)注

    146

    文章

    17970

    瀏覽量

    366542
  • 存儲(chǔ)器
    +關(guān)注

    關(guān)注

    38

    文章

    7649

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    AT32 IAP using the USART

    對(duì)于AT32 MCU,除了出廠固化的bootloader,用戶也可以在應(yīng)用程序中編寫自己的bootloader程序,用于最終產(chǎn)品的固件更新。此功能稱為應(yīng)用程序內(nèi)編程(IAP)。 本應(yīng)用筆記的目的
    發(fā)表于 07-11 10:51

    AT32的ERTC與RTC的區(qū)別

    低速外部晶振(LSE)、低速內(nèi)部振蕩(LSI)或高速外部晶振(HSE)作為時(shí)鐘源,使得ERTC能夠適應(yīng)更多應(yīng)用場(chǎng)景 。 功耗模式支持 RTC :在低功耗模式下,仍能保持基本計(jì)時(shí)
    發(fā)表于 07-11 10:48

    MCU存儲(chǔ)器層次結(jié)構(gòu)解析

    ? ? ? ?MCU存儲(chǔ)器層次結(jié)構(gòu)通過(guò)整合不同性能與功能存儲(chǔ)單元,優(yōu)化系統(tǒng)效率并滿足多樣化場(chǎng)景需求。其核心架構(gòu)可分為以下層次: 一、寄存
    的頭像 發(fā)表于 05-09 10:21 ?218次閱讀

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

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

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

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

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

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

    使用低內(nèi)存MSP430? MCU的帶備份存儲(chǔ)器外部RTC

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

    STM32轉(zhuǎn)AT32代碼轉(zhuǎn)換

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

    AT32講堂088 | 雅特力AT32F402/F405時(shí)鐘配置

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

    簡(jiǎn)述非易失性存儲(chǔ)器的類型

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

    外部存儲(chǔ)器有哪些

    外部存儲(chǔ)器是指用于存儲(chǔ)數(shù)據(jù)的獨(dú)立設(shè)備,它們通常與計(jì)算機(jī)或其他電子設(shè)備連接,并提供額外的存儲(chǔ)空間,允許用戶在不改變主設(shè)備內(nèi)部存儲(chǔ)的情況下保存和
    的頭像 發(fā)表于 09-05 10:42 ?5172次閱讀

    雅特力AT32 MCU的隨機(jī)數(shù)生成

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

    AT32講堂085 | 雅特力AT32 MCU HICK時(shí)鐘校準(zhǔn)

    簡(jiǎn)介AT32系列MCU內(nèi)部都有提供適合運(yùn)行的內(nèi)部高速時(shí)鐘(HICK),其本質(zhì)就是內(nèi)置于芯片的RC振蕩。在25℃下,其典型值頻率8MHz的精度由工廠校準(zhǔn)到±1%,在-40到105℃,該內(nèi)部高速時(shí)鐘
    的頭像 發(fā)表于 08-30 12:26 ?1250次閱讀
    <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時(shí)鐘校準(zhǔn)

    ram存儲(chǔ)器和rom存儲(chǔ)器的區(qū)別是什么

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

    外部存儲(chǔ)器是ROM還是RAM

    外部存儲(chǔ)器通常指的是計(jì)算機(jī)系統(tǒng)中除了主存(RAM)以外的存儲(chǔ)設(shè)備,如硬盤、固態(tài)硬盤(SSD)、USB閃存驅(qū)動(dòng)、光盤等。它們主要用于長(zhǎng)期存儲(chǔ)
    的頭像 發(fā)表于 08-06 09:13 ?3120次閱讀