SPI介面(續二)

2022-06-19 02:00:12 字數 3707 閱讀 1353

接下來看spi接收器資料暫存器rxdat,下表是它的全部位結構,其位址分別為0x40058014(spi0)、0x4005c014(spi1)。

(1)第0到15位(rxdat)為接收器資料,它包含接收的下乙個資料,使用的位數由txctl/txdatctl中的len設定。

(2)第16位(rxssel0_n)為接收的從機選擇位,此欄位允許ssel0引腳狀態與接收資料一同儲存,數值反映主機和從機操作的ssel0引腳,0表示從機選擇有效,每乙個從機選擇引腳的實際極性通過cfg中的相應spol位配置。

(3)第17位(rxssel1_n)為接收的從機選擇位,此欄位允許ssel1引腳狀態與接收資料一同儲存,數值反映主機和從機操作的ssel1引腳,0表示從機選擇有效,每乙個從機選擇引腳的實際極性通過cfg中的相應spol位配置。

(4)第18位(rxssel2_n)為接收的從機選擇位,此欄位允許ssel2引腳狀態與接收資料一同儲存,數值反映主機和從機操作的ssel2引腳,0表示從機選擇有效,每乙個從機選擇引腳的實際極性通過cfg中的相應spol位配置。

(5)第19位(rxssel3_n)為接收的從機選擇位,此欄位允許ssel3引腳狀態與接收資料一同儲存,數值反映主機和從機操作的ssel3引腳,0表示從機選擇有效,每乙個從機選擇引腳的實際極性通過cfg中的相應spol位配置。

(6)第20位(sot)傳輸標誌開始位,如果是ssel從無效到有效之後的第乙個資料(比如之前所有傳輸均已結束),則置1,若傳輸長度大於16位,則此資訊可用來識別第一條資料。

(7)第21到31位為保留位,寫入時只能寫0。

接下來看spi傳送器資料和控制暫存器txdatctl,下表是它的全部位結構,其位址分別為0x40058018 (spi0)、0x4005c018 (spi1)。

(1)第0到15位(txdat)為傳送資料,該欄位提供待傳送資料的1至16位。

(2)第16位(txssel0_n)為傳送從機選擇位,主機模式下該字段使ssel0生效,引腳輸出預設為低電平有效,ssel0引腳的有效狀態由cfg暫存器中的位配置,值為0時表示ssel0已生效,值為1時表示ssel0未生效。

(3)第17位(txssel1_n)為傳送從機選擇位,主機模式下該字段使ssel1生效,引腳輸出預設為低電平有效,ssel1引腳的有效狀態由cfg暫存器中的位配置,值為0時表示ssel1已生效,值為1時表示ssel1未生效。

(4)第18位(txssel2_n)為傳送從機選擇位,主機模式下該字段使ssel2生效,引腳輸出預設為低電平有效,ssel2引腳的有效狀態由cfg暫存器中的位配置,值為0時表示ssel2已生效,值為1時表示ssel2未生效。

(5)第19位(txssel3_n)為傳送從機選擇位,主機模式下該字段使ssel3生效,引腳輸出預設為低電平有效,ssel3引腳的有效狀態由cfg暫存器中的位配置,值為0時表示ssel3已生效,值為1時表示ssel3未生效。

(6)第20位(eot)為傳輸結束,已生效的ssel將在傳輸結束時解除生效並至少保持一段時間,這段時間由dly暫存器中的transfer_delay值確定。值為0時ssel未解除生效,此條資料不視為傳輸結束,ssel不會在該資料結束時解除生效。值為1時ssel已解除生效。此條資料視為傳輸結束。ssel會在該資料結束時解除生效。

(7)第21位(eof)為幀結束,兩幀之間可以插入延遲,該延遲由dly暫存器中的frame_delay值定義。如果frame_delay值 = 0,則幀結束可能沒有特殊意義。該控制可作為支援 幀長度超過16位的一部分。值為0時表示資料未eof,此條傳輸資料不視為幀結束。值為1時表示資料eof,此條資料視為幀結束,導致frame_delay時間在後續資料傳送之前被插入。

(8)第22位(rxignore)為接收忽略,允許資料使用spi傳送時,無需從接收器讀取不需要的資料。設定此位可以簡化傳送過程,並可與dma一同使用。值為0時表示讀取已接收資料。必須讀取已接收資料,才能允許傳輸過程。從機模式下,如果已接收資料未能在接收到新資料前讀取,則發生溢位錯誤。值為1時表示忽略已接收資料。已接收資料被忽略,允許在不讀取不需要的已接收資料情況下進行傳輸。不產生接收器標誌。

(9)第23位為保留位,寫入時只能寫0。

(10)第24到27位(len)為資料長度,指定1到16位資料長度,通過多個相繼傳輸可支援16位以上的傳輸長度,值從0x0到0xf,表示資料傳輸長度分別1到16位。

(11)第28到31位為保留位,寫入時只能寫0。

接下來是spi傳送器資料暫存器txdat,下表是它的全部位結構,其位址分別為0x4005801c(spi0)、0x4005c01c(spi1)。

(1)第0到15位(data)為傳送資料,該欄位提供待傳送資料的4至16位。

(2)第16到31位為保留位,寫入時只能寫0。

接下來看spi傳送器控制暫存器txctl,下表是它的全部位結構,其位址分別為0x40058020(spi0)、0x4005c020(spi1)。

(1)第0到15位為保留位,寫入時只能寫0。

(2)第16位(txssel0_n)為傳送從機選擇0。

(3)第17位(txssel1_n)為傳送從機選擇1。

(4)第18位(txssel2_n)為傳送從機選擇2。

(5)第19位(txssel3_n)為傳送從機選擇3。

(6)第20位(eot)為傳輸結束。

(7)第21位(eof)為幀結束。

(8)第22位(rxignore)為接收忽略。

(9)第23位為保留位,寫入時只能寫0。

(10)第24到27位(len)為資料傳輸長度。

(11)第28到31位為保留位,寫入時只能寫0。

接下來看spi分頻器暫存器div,下表是它的全部位結構,其位址分別為0x40058024(spi0)、0x4005c024(spi1)。

(1)第0到15位(divval)為速率分頻器值,指定spi的pclk分頻值,從而在主機模式下產生spi時鐘速率。

divval為-1編碼,以便pclk/1數值為0,pclk/2數值為1,直至pclk/65536中的最大可能分頻值0xffff。

(2)第16到31位為保留位,寫入時只能寫0。

最後看spi中斷狀態暫存器intstat,下表是它的全部位結構,其位址分別為0x40058028(spi0)、0x4005c028(spi1)。

(1)第0位(rxrdy)為接收器就緒標誌。

(2)第1位(txrdy)為傳送器就緒標誌。

(3)第2位(rxov)為接收器溢位中斷標誌。

(4)第3位(txur)為傳送器下溢中斷標誌。

(5)第4位(ssa)為從機選擇生效。

(6)第5位(ssd)為從機選擇解除生效。

(7)第6到31位為保留位,寫入時只能寫0。

至此,所有spi介面用到的暫存器全部介紹完畢,後面將會以乙個例項來具體說明spi介面的應用。

--待續--

SPI介面(續一)

spi介面共涉及到11個暫存器,下面就來對它們進行具體分析。先來看spi配置暫存器cfg,下表是它的全部位結構,其位址分別為0x40058000 spi0 0x4005c000 spi1 1 第0位 enable 為spi使能位,值為0時禁用spi介面,值為1時使能spi介面,預設為禁止。2 第1位...

弄懂SPI介面

spi serial peripheral inte ce,序列外設介面 是motorola公司提出的一種同步序列資料傳輸標準,在很多器件中被廣泛應用。1.介面 spi介面經常被稱為4線序列匯流排,以主 從方式工作,資料傳輸過程由主機初始化。如圖1所示,其使用的4條訊號線分別為 1 sclk 序列時...

SPI匯流排介面

序列外圍裝置介面spi serial peripheral inte ce 匯流排技術是motorola公司推出的一種同步序列介面,motorola公司生產的絕大多數mcu 微控制器 都配有spi硬體介面,如68系列mcu。spi 用於cpu與各種外圍器件進行全雙工 同步序列通訊。spi可以同時發出...