![NIOSIISPI詳解如何使用SPI方式傳輸_第1頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-12/2/740530f0-c46e-48db-b1c8-5e6ea3c831fe/740530f0-c46e-48db-b1c8-5e6ea3c831fe1.gif)
![NIOSIISPI詳解如何使用SPI方式傳輸_第2頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-12/2/740530f0-c46e-48db-b1c8-5e6ea3c831fe/740530f0-c46e-48db-b1c8-5e6ea3c831fe2.gif)
![NIOSIISPI詳解如何使用SPI方式傳輸_第3頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-12/2/740530f0-c46e-48db-b1c8-5e6ea3c831fe/740530f0-c46e-48db-b1c8-5e6ea3c831fe3.gif)
![NIOSIISPI詳解如何使用SPI方式傳輸_第4頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-12/2/740530f0-c46e-48db-b1c8-5e6ea3c831fe/740530f0-c46e-48db-b1c8-5e6ea3c831fe4.gif)
![NIOSIISPI詳解如何使用SPI方式傳輸_第5頁(yè)](http://file2.renrendoc.com/fileroot_temp3/2021-12/2/740530f0-c46e-48db-b1c8-5e6ea3c831fe/740530f0-c46e-48db-b1c8-5e6ea3c831fe5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、NIOS II SPI 詳解 如何使用 SPI 方式傳輸1、說明本文是依據(jù)筆者閱讀 Embedded Peripherals (ver 9.0, Mar 2009, 4MB).pdf參考文檔所作的個(gè)人理解,可以看做是筆記吧。本文只講NIOS II嵌入式外設(shè)SPI的原理與使用,關(guān)于IP-CORE的 使用,請(qǐng)讀者參考 SPI Slave JTAG to Avalon Master.pdf 。在下一篇文章中將用實(shí)例說明如何用 SPI驅(qū)動(dòng)ADS125&2、功能描述Spi 通訊包括兩條數(shù)據(jù)線(進(jìn)、出)、一條同步時(shí)鐘線和一條控制線。( 1) Master Out Slave In (mosi) 主
2、設(shè)備輸入數(shù)據(jù)到從設(shè)備的數(shù)據(jù)線。( 2) Master In Slave Out (miso) 從設(shè)備輸出數(shù)據(jù)到主設(shè)備的數(shù)據(jù)線。( 3) Serial Clock (sclk) 主設(shè)備驅(qū)動(dòng)從設(shè)備的同步時(shí)鐘。(4)Slave Select (ss_主設(shè)備驅(qū)動(dòng),用于選擇從設(shè)備。臵低時(shí)有效。 最多可以設(shè)臵 32個(gè)從設(shè)備。Selk與AvalonMM是同步的。當(dāng)配臵為主設(shè)備,spi-core將Aval on MM的時(shí)鐘分頻得到scik。若配臵為從設(shè)備,接收邏輯是與 selk的輸入同步的。3、發(fā)送邏輯發(fā)送邏輯包含發(fā)送保持寄存器(txdatsj)和發(fā)送移位寄存器,各有n位寬度,可配臵132位。當(dāng)某主外設(shè)寫tx
3、data值會(huì)自動(dòng)被復(fù)制到 移位寄存器,并在下個(gè)操作開始時(shí)傳輸。Txdata和移位寄存器提供兩個(gè)存儲(chǔ)空間。當(dāng)有數(shù)據(jù)在移位寄存器傳輸 時(shí),可以往txdata中寫入數(shù)據(jù),并且在移位寄存器處理完當(dāng)前數(shù)據(jù)時(shí) 會(huì)自動(dòng)加載txdata中數(shù)據(jù),并發(fā)送。在主設(shè)備模式傳輸移位寄存器直接驅(qū)動(dòng) mosi,在從設(shè)備模式,傳輸移 位寄存器直接驅(qū)動(dòng) miso。數(shù)據(jù)傳輸時(shí),LSB或者M(jìn)SB在前,由配臵時(shí)用戶指定。指定之后, 不可軟件更改。4、接收邏輯接收邏輯包含接收保持寄存器(rxdat a和接收移位寄存器,各有n 位寬度,可配臵116位。在接收移位寄存器捕獲滿n位數(shù)據(jù)后,主 外設(shè)可以從rxdata中讀取接收到的數(shù)據(jù)。同發(fā)送
4、邏輯類似,接收邏輯同樣具有提供兩個(gè)存儲(chǔ)空間的功能。Rxdata可以保持前一個(gè)接收到的數(shù)據(jù),同時(shí)接收移位寄存器亦在接收 數(shù)據(jù)。當(dāng)一個(gè)傳輸完畢時(shí), 接收邏輯自動(dòng)將接收移位寄存器的數(shù)據(jù)更 新至 rxdata。在主設(shè)備模數(shù)時(shí), 接收移位寄存器直接受 miso 驅(qū)動(dòng)。在從設(shè)備模式 , 受mosi驅(qū)動(dòng)。同樣,數(shù)據(jù)傳輸時(shí),LSB或者M(jìn)SB在前,由配臵時(shí)用 戶指定。指定之后,不可軟件更改。5、在 SOPC 中安裝 SPI-CORE5.1主從設(shè)臵用戶可以選擇主設(shè)備模式或者從設(shè)備模式。 當(dāng)選擇主設(shè)備模式時(shí), 下 面的選擇是有效的: Number of select (SS_n) signa、lsSPI clock
5、 rate、 和 Specify delay.(1) Number of Select (SS_n) Signals設(shè)臵從設(shè)備的個(gè)數(shù)。取值范圍是 132。該選擇會(huì)在生成 NIOS II 時(shí) 產(chǎn)生n個(gè)SS_n引腳,用于片選。(2) SPI Clock (sclk) Rate該時(shí)鐘是有 Avalon-MM 分頻產(chǎn)生,其數(shù)學(xué)關(guān)系是:<Avalon-MM system clock frequency> / 2, 4, 6, 8, .在SOPC設(shè)臵時(shí),可以輸入所需要的時(shí)鐘,軟件會(huì)自動(dòng)選擇一個(gè)低于 或者等于所輸入時(shí)鐘的最近符合值。時(shí)鐘的設(shè)臵注意結(jié)合從設(shè)備的要求。3) Specify Delay
6、該延時(shí)是指片選信號(hào)有效(臵低)之后,需要多長(zhǎng)的時(shí)間才能對(duì)從設(shè) 備發(fā)起操作。5.2數(shù)據(jù)寄存器設(shè)臵該設(shè)臵影響數(shù)據(jù)寄存器的大小和行為特性。(1)Width 設(shè)臵txdata rxdata發(fā)送移位寄存器、接收移位寄存器 的大小,可設(shè)臵為 132 位。(2)Shift direction指定數(shù)據(jù)傳輸時(shí)LSB或者M(jìn)SB在前。用戶需了 解從設(shè)備所需的模式。5.3時(shí)序設(shè)定該設(shè)定涉及ss_n, scik, mos和miso信號(hào)的設(shè)臵。共有兩處設(shè)定,可設(shè) 定 4 種模式。(1)Clock polarity設(shè)臵為0時(shí),sclk空閑時(shí)為低;設(shè)臵為1時(shí),sclk 空閑時(shí)為高。(2)Clock phas設(shè)臵為0時(shí),數(shù)據(jù)在
7、sclk的上升沿鎖存;設(shè)臵為1 時(shí),數(shù)據(jù)在sclk的下降沿鎖存。具體見如下時(shí)序圖:1. Clock Polarity = 0, Clock Phase = 02. Clock Polarity = 0, Clock Phase = 13. Clock Polarity = 1, Clock Phase = 04. Clock Polarity = 1, Clock Phase = 16、NIOS II 軟件驅(qū)動(dòng)模塊 有兩種方式:1.使用有Altera提供的alt_avalon_spi_command函數(shù),使用非常簡(jiǎn)單。具體可見筆者下一篇驅(qū)動(dòng)實(shí)例。2.讀者自己編寫。這里先將讀者自己 DIY 的驅(qū)
8、動(dòng)編寫方法。6.1驅(qū)動(dòng)方式一必須包含:#include "altera_avalon_spi.h"#include "altera_avalon_pio_regs.h"這兩個(gè)頭文件。文件中包含有寄存器地址與 API 函數(shù)。IOWR_ALTERA_AVALON_SPI_SLAVE_SEL(); / 從設(shè)備選擇IOWR_ALTERA_AVALON_SPI_CONTROL(base, data); / 控制寄存器IORD_ALTERA_AVALON_SPI_RXDATA(base); / 讀接收 寄存器IOWR_ALTERA_AVALON_SPI_TXDATA
9、(base, data);/ 寫發(fā)送寄存器IORD_ALTERA_AVALON_SPI_STATUS(base); / 讀狀態(tài)寄存 器 為了準(zhǔn)確實(shí)現(xiàn)方式,首先列出 SPI 寄存器映射圖(1)若rxdata和txdata少于16位,則31:16位無效;(2) 寫status會(huì)清除ROE、TOE和E位;例如:(3) ssO只在作為主設(shè)備時(shí)有效;用來啟動(dòng)發(fā)送或者接受數(shù)據(jù)。4) rxdata:/ Force SS_n active:na_spi_0-> np_spicontrol |= np_spicontrol_sso_mask;for (i = 0; i < 3; +i)/ Trans
10、mit a byte:while (!(na_spi_0->np_spistatus & np_spistatus_trdy_mask); na_spi_0->np_spitxdata = datai;/ Read and throw away the received data:while (!(na_spi_0->np_spistatus & np_spistatus_rrdy_mask); na_spi_0->np_spirxdata;/ Wait until the last byte is transmitted:while (!(na_spi
11、_0->np_spistatus & np_spistatus_tmt_mask);/ Release SS_n:na_spi_0-> np_spicontrol &=np_spicontrol_sso_mask;(a)當(dāng)接收寄存器接收到所設(shè)臵的n位且將數(shù)據(jù)移入rxdata后, status中的RRDY設(shè)為1;軟件可設(shè)查詢此位來判斷是否有新數(shù)據(jù)接 收。如:while(IORD_ALTERA_AVALON_SPI_STATUS(base) & ALTERA_AVALON_SPI_STATUS_RRDY_MSK = 1);(b) 讀rxdata會(huì)自動(dòng)清除RRDY
12、位;(c) 新數(shù)據(jù)總是不斷讀入rxdata,若RRDY=1; rxdata的數(shù) 據(jù)未讀出時(shí),有新的數(shù)據(jù)傳入rxdata,則ROE=1;此時(shí),rxdata存儲(chǔ)的 數(shù)據(jù)未定義。( 5) txdata:(a) 當(dāng)TRD丫=1時(shí),表示發(fā)送寄存器準(zhǔn)備好接受下一個(gè) 發(fā)送數(shù)據(jù)。如:while(IORD_ALTERA_AVALON_SPI_STATUS(base) & ALTERA_AVALON_SPI_STATUS_TRDY_MSK = 1);(b) 寫入 rxdata使 TRDY=0;(c)當(dāng)txdata中的數(shù)據(jù)傳入發(fā)送寄存器時(shí),TRDY=1;(d)若TRDY=0時(shí)寫入數(shù)據(jù)至txdata會(huì)導(dǎo)致T0
13、E=1;此時(shí)新數(shù)據(jù)被忽略。6.2驅(qū)動(dòng)方式二該方式使用官方的函數(shù):(下篇文章使用的是該方式。)int alt_avalon_spi_command(alt_u32 base, alt_u32 slave, alt_u32 write_length,const alt_u8* wdata, alt_u32 read_length,alt_u8* read_data,alt_u32 flags)該函數(shù)不支持 8 位或者 8 位以上的傳輸。 但是,可以調(diào)用多次實(shí)現(xiàn)高 于 8 位的傳輸。該函數(shù)源碼位于“<安裝路徑 >/altera/81/ip/altera/sopc_builder_ip/altera_avalon_spi/HAL/srcalt_u32 base, alt_u32 slave,/ 選擇從設(shè)備alt_u32 write_length, /設(shè)臵寫入長(zhǎng)度。 8 位為一個(gè)長(zhǎng)度。const alt_u8* wdata,/ 將要寫入數(shù)據(jù)的數(shù)組地址。 該函數(shù)自動(dòng) 將數(shù)組中的數(shù)據(jù)依次發(fā)出直到發(fā)出所設(shè)定的 write_length 長(zhǎng)度。alt_u32 read_length,/ 設(shè)臵讀出長(zhǎng)度。 8 位為一個(gè)長(zhǎng)度alt_u8* read_data, / 將讀出的數(shù)據(jù)存儲(chǔ)到數(shù)組中, 直到存滿所設(shè)定的re
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版八年級(jí)地理上冊(cè)2.2《氣候》聽課評(píng)課記錄2
- 人教部編版歷史八年級(jí)下冊(cè):第8課《經(jīng)濟(jì)體制改革》聽課評(píng)課記錄2
- 2022版新課標(biāo)七年級(jí)上冊(cè)道德與法治第七課親情之愛3課時(shí)聽課評(píng)課記錄
- 聽評(píng)課記錄表1年級(jí)
- 北師大版歷史八年級(jí)上冊(cè)第7課《義和團(tuán)抗擊八國(guó)聯(lián)軍》聽課評(píng)課記錄
- 魯教版數(shù)學(xué)七年級(jí)上冊(cè)1.2《圖形的全等》聽評(píng)課記錄
- 湘教版數(shù)學(xué)八年級(jí)上冊(cè)《2.2 命題與證明》聽評(píng)課記錄
- 小學(xué)二年級(jí)乘法口算練習(xí)題
- 五年級(jí)分?jǐn)?shù)乘法口算題卡
- 人教版七年級(jí)道德與法治七年級(jí)上冊(cè)聽課評(píng)課記錄:第四單元 生命的思考第十課《綻放生命之花》第二課時(shí)活出生命的精彩
- 危險(xiǎn)化學(xué)品目錄2023
- TSXDZ 052-2020 煤礦礦圖管理辦法
- GB/T 7631.18-2017潤(rùn)滑劑、工業(yè)用油和有關(guān)產(chǎn)品(L類)的分類第18部分:Y組(其他應(yīng)用)
- 2022年第六屆【普譯獎(jiǎng)】全國(guó)大學(xué)生英語(yǔ)翻譯大賽
- GB/T 14258-2003信息技術(shù)自動(dòng)識(shí)別與數(shù)據(jù)采集技術(shù)條碼符號(hào)印制質(zhì)量的檢驗(yàn)
- 政府資金項(xiàng)目(榮譽(yù))申報(bào)獎(jiǎng)勵(lì)辦法
- 最新如何進(jìn)行隔代教育專業(yè)知識(shí)講座課件
- 當(dāng)前警察職務(wù)犯罪的特征、原因及防范,司法制度論文
- 奧特萊斯專題報(bào)告(經(jīng)典)-課件
- 《新制度經(jīng)濟(jì)學(xué)》配套教學(xué)課件
- 計(jì)算機(jī)文化基礎(chǔ)單元設(shè)計(jì)-windows
評(píng)論
0/150
提交評(píng)論