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

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

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

淺談SPI詳解及SPI接口flash應(yīng)用案例

ss ? 作者:工程師譚軍 ? 2018-10-07 11:24 ? 次閱讀
SPI Flash
首先它是個(gè)Flash,F(xiàn)lash是什么東西就不多說了(非易失性存儲(chǔ)介質(zhì)),分為NOR和NAND兩種(NOR和NAND的區(qū)別本篇不做介紹)。SPI一種通信接口。那么嚴(yán)格的來說SPI Flash是一種使用SPI通信的Flash,即,可能指NOR也可能是NAND。但現(xiàn)在大部分情況默認(rèn)下人們說的SPI Flash指的是SPI NorFlash。早期Norflash的接口是parallel的形式,即把數(shù)據(jù)線和地址線并排與IC的管腳連接。但是后來發(fā)現(xiàn)不同容量的Norflash不能硬件上兼容(數(shù)據(jù)線和地址線的數(shù)量不一樣),并且封裝比較大,占用了較大的PCB板位置,所以后來逐漸被SPI(串行接口)Norflash所取代。同時(shí)不同容量的SPI Norflash管腳也兼容封裝也更小。,至于現(xiàn)在很多人說起NOR flash直接都以SPI flash來代稱。
NorFlash根據(jù)數(shù)據(jù)傳輸?shù)奈粩?shù)可以分為并行(Parallel,即地址線和數(shù)據(jù)線直接和處理器相連)NorFlash和串行(SPI,即通過SPI接口和處理器相連)NorFlash;區(qū)別主要就是:1、SPI NorFlash每次傳輸一bit位的數(shù)據(jù),parallel連接的NorFlash每次傳輸多個(gè)bit位的數(shù)據(jù)(有x8和x16bit兩種); 2、SPI NorFlash比parallel便宜,接口簡(jiǎn)單點(diǎn),但速度慢。
NandFlash是地址數(shù)據(jù)線復(fù)用的方式,接口標(biāo)準(zhǔn)統(tǒng)一(x8bit和x16bit),所以不同容量再兼容性上基本沒什么問題。但是目前對(duì)產(chǎn)品的需求越來越小型化以及成本要求也越來越高,所以SPI NandFlash漸漸成為主流,并且采用SPI NANDFlash方案,主控也可以不需要傳統(tǒng)NAND控制器,只需要有SPI接口接口操作訪問,從而降低成本。另外SPI NandFlash封裝比傳統(tǒng)的封裝也小很多,故節(jié)省了PCB板的空間。
怎么用說白了對(duì)于Flash就是讀寫擦,也就是實(shí)現(xiàn)flash的驅(qū)動(dòng)。先簡(jiǎn)單了解下spi flash的物理連接。
之前介紹SPI的時(shí)候說過,SPI接口目前的使用是多種方式(具體指的是物理連線有幾種方式),Dual SPI、Qual SPI和標(biāo)準(zhǔn)的SPI接口(這種方式肯定不會(huì)出現(xiàn)在連接外設(shè)是SPI Flash上,這玩意沒必要全雙工),對(duì)于SPI Flash來說,主要就是Dual和Qual這兩種方式。具體項(xiàng)目具體看了,理論上在CLK一定的情況下, 線數(shù)越多訪問速度也越快。我們項(xiàng)目采用的Dual SPI方式,即兩線。
淺談SPI詳解及SPI接口flash應(yīng)用案例

一、技術(shù)性能

SPI接口是Motorola 首先提出的全雙工三線同步串行外圍接口,采用主從模式(Master Slave)架構(gòu);支持多slave模式應(yīng)用,一般僅支持單Master。時(shí)鐘由Master控制,在時(shí)鐘移位脈沖下,數(shù)據(jù)按位傳輸,高位在前,低位在后(MSB first);SPI接口有2根單向數(shù)據(jù)線,為全雙工通信,目前應(yīng)用中的數(shù)據(jù)速率可達(dá)幾Mbps的水平。總線結(jié)構(gòu)如下圖所示。

二、接口定義

SPI接口共有4根信號(hào)線,分別是:設(shè)備選擇線、時(shí)鐘線、串行輸出數(shù)據(jù)線、串行輸入數(shù)據(jù)線。

(1)MOSI:主器件數(shù)據(jù)輸出,從器件數(shù)據(jù)輸入

(2)MISO:主器件數(shù)據(jù)輸入,從器件數(shù)據(jù)輸出

(3)SCLK :時(shí)鐘信號(hào),由主器件產(chǎn)生

(4)/SS:從器件使能信號(hào),由主器件控制

三、內(nèi)部結(jié)構(gòu)

四、 時(shí)鐘極性和時(shí)鐘相位

在SPI操作中,最重要的兩項(xiàng)設(shè)置就是時(shí)鐘極性(CPOL或UCCKPL)和時(shí)鐘相位(CPHA或UCCKPH)。時(shí)鐘極性設(shè)置時(shí)鐘空閑時(shí)的電平,時(shí)鐘相位設(shè)置讀取數(shù)據(jù)和發(fā)送數(shù)據(jù)的時(shí)鐘沿。

主機(jī)和從機(jī)的發(fā)送數(shù)據(jù)是同時(shí)完成的,兩者的接收數(shù)據(jù)也是同時(shí)完成的。所以為了保證主從機(jī)正確通信,應(yīng)使得它們的SPI具有相同的時(shí)鐘極性和時(shí)鐘相位。

SPI接口時(shí)鐘配置心得:在主設(shè)備這邊配置SPI接口時(shí)鐘的時(shí)候一定要弄清楚從設(shè)備的時(shí)鐘要求,因?yàn)橹髟O(shè)備這邊的時(shí)鐘極性和相位都是以從設(shè)備為基準(zhǔn)的。因此在時(shí)鐘極性的配置上一定要搞清楚從設(shè)備是在時(shí)鐘的上升沿還是下降沿接收數(shù)據(jù),是在時(shí)鐘的下降沿還是上升沿輸出數(shù)據(jù)。

五、傳輸時(shí)序

SPI接口在內(nèi)部硬件實(shí)際上是兩個(gè)簡(jiǎn)單的移位寄存器,傳輸?shù)臄?shù)據(jù)為8位,在主器件產(chǎn)生的從器件使能信號(hào)和移位脈沖下,按位傳輸,高位在前,低位在后。如下圖所示,在SCLK的下降沿上數(shù)據(jù)改變,上升沿一位數(shù)據(jù)被存入移位寄存器。

六、數(shù)據(jù)傳輸

在一個(gè)SPI時(shí)鐘周期內(nèi),會(huì)完成如下操作:

1) 主機(jī)通過MOSI線發(fā)送1位數(shù)據(jù),從機(jī)通過該線讀取這1位數(shù)據(jù);

2) 從機(jī)通過MISO線發(fā)送1位數(shù)據(jù),主機(jī)通過該線讀取這1位數(shù)據(jù)。

這是通過移位寄存器來實(shí)現(xiàn)的。如下圖所示,主機(jī)和從機(jī)各有一個(gè)移位寄存器,且二者連接成環(huán)。隨著時(shí)鐘脈沖,數(shù)據(jù)按照從高位到低位的方式依次移出主機(jī)寄存器和從機(jī)寄存器,并且依次移入從機(jī)寄存器和主機(jī)寄存器。當(dāng)寄存器中的內(nèi)容全部移出時(shí),相當(dāng)于完成了兩個(gè)寄存器內(nèi)容的交換。

七、優(yōu)缺點(diǎn)

SPI接口具有如下優(yōu)點(diǎn):

1) 支持全雙工操作;

2) 操作簡(jiǎn)單;

3) 數(shù)據(jù)傳輸速率較高。

同時(shí),它也具有如下缺點(diǎn):

1) 需要占用主機(jī)較多的口線(每個(gè)從機(jī)都需要一根片選線);

2) 只支持單個(gè)主機(jī)。

3) 沒有指定的流控制,沒有應(yīng)答機(jī)制確認(rèn)是否接收到數(shù)據(jù)。

二、典型案例:

舉的是一個(gè)已穩(wěn)定使用的spi接口flash設(shè)備的例子,spi控制器是一個(gè)CPU上的外圍SOC,下圖是該spi控制器的寄存器手冊(cè):

寄存器300-307是用于主機(jī)發(fā)送數(shù)據(jù),308-30f為主機(jī)接收數(shù)據(jù),

寄存器310用于設(shè)置spi時(shí)鐘頻率(用于設(shè)置分頻),

寄存器311用于指定發(fā)送的長度,

寄存器312為控制寄存器,包括中斷使能(實(shí)際使用中未使能)、傳輸寄存器序(MSB/LSB,一般選先傳輸高位寄存器的內(nèi)容)、上升沿還是下降沿更新數(shù)據(jù)(一般選下降沿)、是否自動(dòng)片選(一般不使用自動(dòng)片選,而是由寄存器313指定)等,

寄存器313為片選寄存器,指定片選哪一個(gè)spi從設(shè)備,

寄存器314為閑忙寄存器,用于查詢是否忙,以及控制啟動(dòng)傳輸。

如下的代碼片段,指示了怎么操作spi控制器寄存器:

SPI_ADDR為spi控制器寄存器基址,代碼中由變量p_spi對(duì)應(yīng),并設(shè)置相關(guān)寄存器的值,包括控制寄存器312、時(shí)鐘頻率寄存器310、發(fā)送長度寄存器311(值為0x10即16,意為16bit即兩字節(jié),發(fā)送內(nèi)容為0x0500確實(shí)為兩字節(jié))、發(fā)送內(nèi)容寄存器300、片選寄存器313、最后設(shè)置啟動(dòng)發(fā)送(閑忙寄存器314),全部完成后,等待閑忙寄存器314指示狀態(tài)為閑時(shí),說明已收到回復(fù),進(jìn)而讀取接收寄存器308獲取結(jié)果。

事實(shí)上可以發(fā)現(xiàn),在有spi控制器時(shí),也就是說無需用gpio模擬spi時(shí)序時(shí),僅需操作spi控制器寄存器,屏蔽了很多spi物理協(xié)議細(xì)節(jié)。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FlaSh
    +關(guān)注

    關(guān)注

    10

    文章

    1638

    瀏覽量

    148181
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1711

    瀏覽量

    91748
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    SPI接口原理詳解

    SPI:Serial Peripheral Interface,是串行外設(shè)接口。
    發(fā)表于 09-30 15:02 ?2545次閱讀

    SPI方式FPGA配置和SPI flash編程

    SPI方式FPGA配置和SPI flash編程
    發(fā)表于 05-16 18:01 ?165次下載
    <b class='flag-5'>SPI</b>方式FPGA配置和<b class='flag-5'>SPI</b> <b class='flag-5'>flash</b>編程

    基于紅牛開發(fā)板的spi flash讀寫圖片

    SPI:serial peripheral interface串行外圍設(shè)備接口是一種常見的時(shí)鐘同步串行通信接口。外置flash接口分有總線
    發(fā)表于 09-01 17:16 ?16次下載
    基于紅牛開發(fā)板的<b class='flag-5'>spi</b> <b class='flag-5'>flash</b>讀寫圖片

    SPI flash是什么,關(guān)于SPI FLASH的讀寫問題

    SPI一種通信接口。那么嚴(yán)格的來說SPI Flash是一種使用SPI通信的Flash,即,可能指
    的頭像 發(fā)表于 09-18 14:38 ?10.4w次閱讀
    <b class='flag-5'>SPI</b> <b class='flag-5'>flash</b>是什么,關(guān)于<b class='flag-5'>SPI</b> <b class='flag-5'>FLASH</b>的讀寫問題

    SPI flash如何運(yùn)行程序,SPI flash有哪些應(yīng)用

    SPI一種通信接口。那么嚴(yán)格的來說SPI Flash是一種使用SPI通信的Flash,即,可能指
    的頭像 發(fā)表于 09-19 10:54 ?1.9w次閱讀
    <b class='flag-5'>SPI</b> <b class='flag-5'>flash</b>如何運(yùn)行程序,<b class='flag-5'>SPI</b> <b class='flag-5'>flash</b>有哪些應(yīng)用

    淺談STM32之SPI_FLASH之應(yīng)用實(shí)例

    SPI Flash 首先它是個(gè)FlashFlash是什么東西就不多說了(非易失性存儲(chǔ)介質(zhì)),分為NOR和NAND兩種(NOR和NAND的區(qū)別本篇不做介紹)。
    的頭像 發(fā)表于 10-07 11:29 ?7904次閱讀

    淺析FLASH讀寫----SPI原理及應(yīng)用

    SPI一種通信接口。那么嚴(yán)格的來說SPI Flash是一種使用SPI通信的Flash,即,可能指
    的頭像 發(fā)表于 10-07 11:32 ?2.4w次閱讀
    淺析<b class='flag-5'>FLASH</b>讀寫----<b class='flag-5'>SPI</b>原理及應(yīng)用

    STM32F10x_SPI (硬件接口 + 軟件模擬)讀寫Flash(25Q16)

    STM32F10x_SPI(硬件接口 + 軟件模擬)讀寫Flash(25Q16)
    的頭像 發(fā)表于 03-25 13:59 ?1.1w次閱讀
    STM32F10x_<b class='flag-5'>SPI</b> (硬件<b class='flag-5'>接口</b> + 軟件模擬)讀寫<b class='flag-5'>Flash</b>(25Q16)

    STM32_ SPI讀寫Flash

    STM32_SPI讀寫Flash
    的頭像 發(fā)表于 04-08 10:26 ?5593次閱讀
    STM32_ <b class='flag-5'>SPI</b>讀寫<b class='flag-5'>Flash</b>

    SPI協(xié)議詳解

    處理器上定義的。SPI接口主要應(yīng)用在 EEPROM,FLASH,實(shí)時(shí)時(shí)鐘,AD轉(zhuǎn)換器,還有數(shù)字信號(hào)處理器...
    發(fā)表于 11-29 12:06 ?18次下載
    <b class='flag-5'>SPI</b>協(xié)議<b class='flag-5'>詳解</b>

    SPI Nand Flash簡(jiǎn)介

    1.SPI Nand Flash簡(jiǎn)介SPI Nand Flash顧名思義就是串行接口的Nand Flas
    發(fā)表于 12-02 10:51 ?34次下載
    <b class='flag-5'>SPI</b> Nand <b class='flag-5'>Flash</b>簡(jiǎn)介

    [SPI].SPI協(xié)議詳解

    接口。是Motorola首先在其MC68HCXX系列處理器上定義的。SPI接口主要應(yīng)用在 EEPROM,FLASH,實(shí)時(shí)時(shí)鐘,AD轉(zhuǎn)換器,還有數(shù)字信號(hào)處理器和數(shù)字信號(hào)解碼器之間。
    發(fā)表于 12-22 19:19 ?43次下載
    [<b class='flag-5'>SPI</b>].<b class='flag-5'>SPI</b>協(xié)議<b class='flag-5'>詳解</b>

    STM32學(xué)習(xí)筆記--SPI

    FLASH1.SPI.C2.SPI_Flash_Read 函數(shù)3.SPI_Flash_Write 函數(shù)4.MAIN.C參考資料:一、SPI簡(jiǎn)介 ? SPI 是 Serial Perip
    發(fā)表于 12-22 19:24 ?11次下載
    STM32學(xué)習(xí)筆記--<b class='flag-5'>SPI</b>

    一文了解SPI NAND FlashSPI NOR Flash的區(qū)別

    的并行口NOR Flash不能硬件上兼容(數(shù)據(jù)線和地址線的數(shù)量不一樣),并且封裝大,占用PCB板的位置較大,逐漸被SPI(串行接口)的 NOR Flash所取代。
    的頭像 發(fā)表于 03-06 09:49 ?6969次閱讀

    物聯(lián)網(wǎng)行業(yè)存儲(chǔ)方案詳解_SPI NOR Flash

    物聯(lián)網(wǎng)系統(tǒng)中為什么要使用SPI NOR FLASH 物聯(lián)網(wǎng)系統(tǒng)中使用SPI NOR FLASH的原因主要基于其獨(dú)特的性能特點(diǎn)和在嵌入式系統(tǒng)中的廣泛應(yīng)用。以下是詳細(xì)的分析: 1、高可靠性
    的頭像 發(fā)表于 09-24 14:39 ?331次閱讀
    物聯(lián)網(wǎng)行業(yè)存儲(chǔ)方案<b class='flag-5'>詳解</b>_<b class='flag-5'>SPI</b> NOR <b class='flag-5'>Flash</b>