當前位置:編程學習大全網 - 編程語言 - spi3是什麽?具體說壹下

spi3是什麽?具體說壹下

SPI?

是不是Serial Periphieral Interface , 串行外設接口

RC32332/4中的SPI接口:

SPI四由個引腳:spi_miso,spi_mosi,spi_sck,spi_ss_n。

SPI支持RC32332與外部設備(E2ROM etc...)全雙工模式的,同步串行數據傳輸。

主設備通過spi_mosi發送數據給從設備,從設備通過主設備的spi_miso發送數據給主設備,兩個方向的傳輸可以同時同步進行。

主設備發送數據:

將發送數據寫入SPI Data Register(SPDR),這個數據將被移到shift register後被立即發送,在8個串行時鐘周期後,SPI標識位(SPI Flag,SPIF)被設置,表示數據傳輸完成。在進行下壹次傳輸前,必須通過讀取SPI 狀態寄存器(SPI Status Register),清除SPIF位和SPDR內容。對於打開SPI中斷,在傳輸完成後,將會產生SPI中斷信息。

SPI四個寄存器,基地址0x1800 0900

SP_Clock Divisor/Prescalar Register(SPCNT) offset:0x00

SP_Control Register SPCNTL 0x04

SP_Status Register (SPSR) 0x08

SP_Data I/O Register (SPDR) 0x0C

SPCNT:設置spi_sck=system clock / [2*(SPCNT+1)*SPR];

SPCNTL:

SPIE:1-在SPIF設1時使能SPI 卡中斷;0-關SPI中斷(默認);

SPE:1-打開SPI,0-關閉SPI(默認)

MSTR:1-SPI主模式;0-保留使用,RC32334/2只能為SPI主模式

CPOL:時鐘級性,0-當傳輸時spi_sck為邏輯0(Default),1-當傳輸時spi_sck為邏輯1.

CPHA:

SPR:00除以2(Default);01除以4;10除以16;11除以32

SPSR:

SPIF:傳輸完成標致,0-空閑,為傳輸做好準備,1-數據傳輸完成,被隱式設置。

WCOL:寫沖突,如果為1,則出現寫沖突,此時的寫入將被忽略。

MODF:Master Error Flag,置1說明出現違例。

SPDR:

數據寄存器,由主設備發起數據傳輸,當數據傳輸完成,主從SPI設備的SPIF狀態位都將被置1。

當要發送數據時,向此寄存器寫入數據,當數據傳輸完成後,SPIF狀態寄存器被置1,讀取SPSR,而後從此寄存器讀取接收到的數據。

主模式編程範例:

系統時鐘頻率67MHz下初始壹個2MHz的SPI接口。

1.設置SPCNT寄存器為0x0000 0008,設置SPI時鐘為3.7MHz

2.設置SPCR寄存器為0x0000 00F0,設置SPIE=1,使能SPI中斷,SPE=1使能SPI接口。MSTR=1,這個通常設為1。CPOL=0時鐘為低電頻表示SPI非激活,CPHA=0:在第壹個活動沿采樣數據。SPR=0,將內部時鐘二分,則SPI時鐘為3.7/2=1.85MHz;

3.設置中斷掩碼寄存器14(0x1800_05E4)為0x0000 0001,打開系統SPI中斷服務。

4.讀取SPSR和SPDR寄存器,清除SPIF位。

5.設置PIO中的spi_ss_n的輸出模式,並設置為低電頻。

6.將要發送的數據寫入SPDR寄存器。

7.等待SPI中斷產生,中斷服務程序完成以下步驟

8.讀取SPSR,確保沒有任何錯誤發生。

9.讀取SPDR寄存器,獲取SPDR寄存器的內容,同時重置SPSR中的SPIF位。

10.設置SPI中斷重置寄存器(0x1800_05E8)為0x0000_0001,清除SPI中斷Pending寄存器。

11.如果完成了命令系列,拉高spi_ss_n引腳。

12.重復5-11的步驟,完成新壹倫的命令。

////

初始化SPI應該註意幾點內容:

1.正確選擇主機或從機,以及工作模式(極性),數據傳輸率。

2.註意傳送字節的順序,是低位優先(LBS First)還是高位優先(MSB First)。

3.正確設置MOSI和MISO接口的輸入,輸出方向,輸入引腳上拉電阻,可以節省總線上的吊高電阻。

  • 上一篇:系統整合
  • 下一篇:教育類app有哪些
  • copyright 2024編程學習大全網