Go List

[Infineon] 英飛凌淺談 PSoC™ 6 SMIF 的使用(一)
2024-11-04

來源: 英飛凌官方微信

本文作者:梁家威

英飛凌消費、計算與通訊業務大中華區 首席工程師

PSoC™ 6SMIFSerial Memory Interface)外設介面是 PSoC 系列單片機中專門用於外部串列存放裝置的功能單元。常見的應用是訪問支援 SPI/DSPI/QSPI/OSPI 介面的 Flash, FRAM, PSRAM 等序列介面的存儲晶片。

PSoC 6 的 SMIF 最大支援 8-bit 的資料頻寬(OSPI)和 4 個 ChipSelect 片選信號,CLK 最高支援 80MHz 頻率 SDR,理論最大頻寬 80MB/s,其功能框圖如下:

由於 SMIF 是針對外部存放裝置的專用外設,介面功能上 SMIF 與 PSoC 另一個傳統的串列通信模組 SCBSerial Communications Block)中的 SPI 功能對比,有著以下幾個主要差異:

  1. SMIF 僅支持 SPI Mode 0: clock polarity(CPOL)和 clock phase(CPHA)皆為‘0’。
  2. SMIF 支援 Single/Dual/Quad/Octal SPI 協定,SCB-SPI 僅支援 Single SPI。
  3. SMIF 最大時鐘 80MHz,SCB-SPI 最大時鐘 25MHz。
  4. SMIF 支援 XIP 模式,內置 4KB Cache。
  5. SMIF 支援 on-the-fly 128bits AES 自動加解密。
  6. SMIF 獨立的時鐘源配置,普通的外設使用統一的 HF[0] 時鐘源,再用外設分頻器分頻到各個外設時鐘。SMIF 使用獨立的 HF[2] 時鐘源,允許使用獨立的時鐘源配置。

SMIF 的 MMIO 模式和 XIP 模式

MMIO 模式

MMIO 模式又稱命令模式(Command Mode)是 CPU 通過訪問 SMIF Block 的寄存器控制 SMIF 工作的方式。這種模式下 SMIF 就是個外設控制來訪問外部的存儲硬體,存儲的內容是以資料的方式來被 CPU 讀寫。這種模式下 SMIF 內部的 Cache 不會被使用,只有 TX/TX_CMD/RX FIFO 會被應用到 SMIF 通信過程當中。

這種模式下讀寫操作都是按用戶應用需求來主動執行,或者發送相關驅動 API 來執行,比較適用於需要訪問的資料都是使用者資料的場景。

應用實例可以參考:

XIP 模式(eXecute In Place)

XIP 模式也被稱為位址映射模式,外部的存儲晶片的內容可以按位址映射到匯流排可訪問的位址區域當中,映射的配置使能之後,CPU 可以通過匯流排的方式直接訪問對應位址的內容。這種方式下,XIP 映射到的位址段可以配置為 Code 區域和 Data 區域,所以 CPU 可以執行外部的存儲空間中的代碼。

目前 XIP 模式下,PSoC 6 提供給外部存儲空間的定址區域是 0x1800 0000 – 0x 1FFF FFFF 的定址範圍,共 128MB 的定址空間。同時由於支援了匯流排操作,SMIF 內的 4KB Cache 可以被使用到這個模式當中,提高 CPU 運行片外指令的效率。

值得注意的是,雖然 XIP 模式可以讓 CPU 非常容易的訪問到外部的 Memory,不需要像 MMIO 模式一樣一步步地設命令字,設位址,設讀寫長度。減少用戶側的應用代碼的一些工作,但同時也會引入需要注意的一些操作:

  1. 由於參與了匯流排的訪問,對於 Flash 的寫操作,由於一般會有 ms 級別的延時時間,匯流排無法等待這麼長的時間,所以對於 XIP 模式,無法實現 Flash 的寫操作。但對於 RAM 特質的存儲介質,如 FRAM,RRAM,PSRAM 等,寫操作也可以用於 XIP 模式當中。
  2. 如果需要實現 Flash 的寫操作,必須切換回 MMIO 模式,發送寫 Flash 的命令,再切換回 XIP 模式。這裡需要考慮:
    • SMIF 切換回 MMIO 模式期間,對於匯流排來說這個片區的代碼和資料都是不可訪問的,需要從應用上考慮禁止在這個期間訪問片外的位址段,比如通過一些 RTOS 的機制來管理函數的調用許可。
    • 切換到 MMIO 前後,需要考慮當前 SMIF Cache 中代碼的有效性,需要使用以下函數來釋放掉當前 Cache 的內容。

應用實例可以參考:

SMIF 的使用與配置

SMIF 作為一個專用於片外存放裝置的介面外設,PSoC 的開發環境 ModusToolBox 集成了友好易用的配置工具 QSPI Configurator(目前更新到 4.30 版本),加快使用者去創建需要訪問外部 SPI 存放裝置的實現。通過配置工具選擇需要使用的 Memory 的 Part Number,然後會生成對應的命令字的清單配置,配合 PDL 和 Middleware 的驅動代碼,可以快速的實現。

下圖是 QSPI Configurator 的介面,可以通過選擇 Memory Part Number 的下拉清單,快速獲取預配置好的一些範本。然後選擇是否支持 XIP(Memory-Mapped),Data bit(1/2/4/8bit), Data Select 對應第幾個 Slave Slot,映射位址等等資訊,保存後就可以生成對應的代碼結構體。

如果 Memory Part Numbers 清單當中沒有當前需要使用的新料號,QSPI Configurator 工具支援自己新建範本,然後使用者可以自行導入和管理自己的 Memory 的配置。

總結

本篇主要簡述了 PSoC 6 SMIF 介面的基本功能、基礎的參數特性,幫助用戶瞭解 PSoC 6 SMIF 的性能和功能特點。後續還會有文章介紹下一步更深入的一些話題。

掃描二維碼, 關注英飛凌官方微信尋找更多應用或產品資訊

更多資訊請參考:www.infineon.com

追蹤英飛凌動態:Twitter - Facebook - LinkedIn

更多威健資訊請參考:www.weikeng.com.tw

追蹤威健動態: Facebook - LinkedIn