版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
ARM微控制器與嵌入式系統(tǒng)
STM32-SPI主講人:景妮琴北京電子科技職業(yè)學(xué)院內(nèi)容STM32的SPISPI框圖SPI通訊SPI初始化結(jié)構(gòu)體SPI庫(kù)函數(shù)STM32的SPISPI接口提供兩個(gè)主要功能,支持SPI協(xié)議或I2S音頻協(xié)議。串行外設(shè)接口(SPI)可與外部器件進(jìn)行半雙工/全雙工的同步串行通信。主模式或從模式操作,8個(gè)主模式波特率預(yù)分頻器(最大值為fPCLK/2),從模式頻率(最大值為fPCLK/2),可為外部從器件提供通信時(shí)鐘
(SCK)該接口還能夠在多主模式配置下工作8位或16位傳輸幀格式選擇可編程的時(shí)鐘極性和相位可編程的數(shù)據(jù)順序,最先移位MSB或LSB可觸發(fā)中斷的專用發(fā)送和接收標(biāo)志通訊引腳時(shí)鐘控制邏輯數(shù)據(jù)控制邏輯整體控制邏輯STM32的SPI框圖STM32芯片有多個(gè)SPI外設(shè),它們的SPI通訊信號(hào)引出到不同的GPIO引腳上,使用時(shí)必須配置到這些指定的引腳,以《STM32F4xx規(guī)格書》為準(zhǔn)。引腳SPI編號(hào)SPI1SPI2SPI3SPI4SPI5SPI6MOSIPA7/PB5PB15/PC3/PI3PB5/PC12/PD6PE6/PE14PF9/PF11PG14MISOPA6/PB4PB14/PC2/PI2PB4/PC11PE5/PE13PF8/PH7PG12SCKPA5/PB3PB10/PB13/PD3PB3/PC10PE2/PE12PF7/PH6PG13NSSPA4/PA15PB9/PB12/PI0PA4/PA15PE4/PE11PF6/PH5PG8
其中SPI1、SPI4、SPI5、SPI6是APB2上的設(shè)備,最高通信速率達(dá)42Mbtis/s,SPI2、SPI3是APB1上的設(shè)備,最高通信速率為21Mbits/s。其它功能上沒(méi)有差異。SPI的SPI通訊引腳SCK線的時(shí)鐘信號(hào),由波特率發(fā)生器根據(jù)“控制寄存器CR1”中的BR[0:2]位控制,該位是對(duì)fpclk時(shí)鐘的分頻因子,對(duì)fpclk的分頻結(jié)果就是SCK引腳的輸出時(shí)鐘頻率BR[0:2]分頻結(jié)果(SCK頻率)BR[0:2]分頻結(jié)果(SCK頻率)000fpclk/2100fpclk/32001fpclk/4101fpclk/64010fpclk/8110fpclk/128011fpclk/16111fpclk/256其中的fpclk頻率是指SPI所在的APB總線頻率,APB1為fpclk1,APB2為fpckl2。SPI的時(shí)鐘控制邏輯SPI的MOSI及MISO都連接到數(shù)據(jù)移位寄存器上,數(shù)據(jù)移位寄存器的數(shù)據(jù)來(lái)源來(lái)源于接收緩沖區(qū)及發(fā)送緩沖區(qū)。通過(guò)寫SPI的“數(shù)據(jù)寄存器DR”把數(shù)據(jù)填充到發(fā)送緩沖區(qū)中。通過(guò)讀“數(shù)據(jù)寄存器DR”,可以獲取接收緩沖區(qū)中的內(nèi)容。其中數(shù)據(jù)幀長(zhǎng)度可以通過(guò)“控制寄存器CR1”的“DFF位”配置成8位及16位模式;配置“LSBFIRST位”可選擇MSB先行還是LSB先行。SPI的數(shù)據(jù)控制邏輯整體控制邏輯負(fù)責(zé)協(xié)調(diào)整個(gè)SPI外設(shè),控制邏輯的工作模式根據(jù)“控制寄存器(CR1/CR2)”的參數(shù)而改變,基本的控制參數(shù)包括前面提到的SPI模式、波特率、LSB先行、主從模式、單雙向模式等等。在外設(shè)工作時(shí),控制邏輯會(huì)根據(jù)外設(shè)的工作狀態(tài)修改“狀態(tài)寄存器(SR)”,只要讀取狀態(tài)寄存器相關(guān)的寄存器位,就可以了解SPI的工作狀態(tài)了。除此之外,控制邏輯還根據(jù)要求,負(fù)責(zé)控制產(chǎn)生SPI中斷信號(hào)、DMA請(qǐng)求及控制NSS信號(hào)線。實(shí)際應(yīng)用中,一般不使用STM32SPI外設(shè)的標(biāo)準(zhǔn)NSS信號(hào)線,而是更簡(jiǎn)單地使用普通的GPIO,軟件控制它的電平輸出,從而產(chǎn)生通訊起始和停止信號(hào)。SPI的整體控制邏輯通訊過(guò)程跟其它外設(shè)一樣,STM32標(biāo)準(zhǔn)庫(kù)提供了SPI初始化結(jié)構(gòu)體及初始化函數(shù)來(lái)配置SPI外設(shè)。初始化結(jié)構(gòu)體及函數(shù)定義在庫(kù)文件“stm32f4xx_spi.h”及“stm32f4xx_spi.c”中,編程時(shí)我們可以結(jié)合這兩個(gè)文件內(nèi)的注釋使用或參考庫(kù)幫助文檔。SPI初始化結(jié)構(gòu)體SPI_Direction:設(shè)置SPI為單向或雙向的數(shù)據(jù)模式可設(shè)置為:雙線全雙工(SPI_Direction_2Lines_FullDuplex),雙線只接收(SPI_Direction_2Lines_RxOnly),單線只接收(SPI_Direction_1Line_Rx)、單線只發(fā)送模式(SPI_Direction_1Line_Tx)。SPI初始化結(jié)構(gòu)體SPI_Mode:設(shè)置SPI工作模式主機(jī)模式(SPI_Mode_Master)從機(jī)模式(SPI_Mode_Slave)這兩個(gè)模式的最大區(qū)別為SPI的SCK信號(hào)線的時(shí)序,SCK的時(shí)序是由通訊中的主機(jī)產(chǎn)生的。若被配置為從機(jī)模式,STM32的SPI外設(shè)將接受外來(lái)的SCK信號(hào)。SPI初始化結(jié)構(gòu)體SPI_DataSize:選擇SPI通訊的數(shù)據(jù)幀大小4位(SPI_DataSize_4b)8位(SPI_DataSize_8b)16位(SPI_DataSize_16b)SPI初始化結(jié)構(gòu)體SPI_CPOL:配置SPI的時(shí)鐘極性CPOL高電平(SPI_CPOL_High)低電平(SPI_CPOL_Low)SPI_CPHA:配置時(shí)鐘相位CPHASPI_CPHA_1Edge(在SCK的奇數(shù)邊沿采集數(shù)據(jù))
SPI_CPHA_2Edge
(在SCK的偶數(shù)邊沿采集數(shù)據(jù))
SPI初始化結(jié)構(gòu)體SPI_NSS:配置NSS引腳的使用模式硬件模式(SPI_NSS_Hard
),這時(shí)SPI片選信號(hào)由SPI硬件自動(dòng)產(chǎn)生軟件模式(SPI_NSS_Soft
),外部引腳控制。實(shí)際中軟件模式應(yīng)用比較多。SPI初始化結(jié)構(gòu)體SPI_BaudRatePrescaler:設(shè)置波特率分頻因子,分頻后的時(shí)鐘即為SPI的SCK信號(hào)線的時(shí)鐘頻率??稍O(shè)置為fpclk的2、4、6、8、16、32、64、128、256分頻。SPI_InitStruct.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_32;SPI初始化結(jié)構(gòu)體SPI_FirstBit:設(shè)置數(shù)據(jù)傳輸從MSB開始還是LSB開始MSB先行:SPI_FirstBit_MSBLSB先行:SPI_FirstBit_LSBSPI_InitStruct.SPI_FirstBit=SPI_FirstBit_MSB;SPI初始化結(jié)構(gòu)體SPI_CRCPolynomial:這是SPI的CRC校驗(yàn)中的多項(xiàng)式,若我們使用CRC校驗(yàn)時(shí),就使用這個(gè)成員的參數(shù)(多項(xiàng)式),來(lái)計(jì)算CRC的值。配置完這些結(jié)構(gòu)體成員后,要調(diào)用SPI_Init函數(shù)把這些參數(shù)寫入到寄存器中,實(shí)現(xiàn)SPI的初始化,然后調(diào)用SPI_Cmd來(lái)使能SPI外設(shè)SPI初始化結(jié)構(gòu)體SPI的庫(kù)函數(shù)SPI_InitVoidSPI_Init(SPI_TypeDef*SPIx,SPI_InitTypeDef*SPI_InitStruct)功能:根據(jù)SPI_InitStruct中的參數(shù)初始化外設(shè)SPIx的寄存器。SPI_Init(SPI1,&SPI_InitStruct);SPI的庫(kù)函數(shù)SPI_CmdvoidSPI_Cmd(SPI_TypeDef*SPIx,FunctionalStateNewState);功能:使能或失能指定的SPI外設(shè)SPI_Cmd(SPI1,ENABLE);SPI的庫(kù)函數(shù)SPI_I2S_ITConfigvoidSPI_I2S_ITConfig(SPI_TypeDef*SPIx,uint8_tSPI_I2S_IT,FunctionalStateNewState);功能:使能或失能指定的SPI/I2S中斷SPI_I2S_IT可取的值:SPI_I2S_IT_TXE(發(fā)送緩存空中斷屏蔽),SPI_I2S_IT_RXNE(接收緩存非空中斷屏蔽),SPI_I2S_IT_ERR(錯(cuò)誤中斷屏蔽)SPI的庫(kù)函數(shù)SPI_I2S_SendDatavoidSPI_I2S_SendData(SPI_TypeDef*SPIx,uint16_tData);功能:通過(guò)外設(shè)SPIx發(fā)送數(shù)據(jù)SPI_I2S_SendData(SPI1,0x55);SPI的庫(kù)函數(shù)SPI_I2S_ReceiveDatauint16_tSPI_I2S_ReceiveData(SPI_TypeDef*SPIx);功能:返回通過(guò)外設(shè)SPIx最新接收的數(shù)據(jù)temp=SPI_I2S_ReceiveData(SPI1);SPI的庫(kù)函數(shù)SPI_I2S_GetFlagStatusFlagStatusSPI_I2S_GetFlagStatus(SPI_TypeDef*SPIx,uint16_tSPI_I2S_FLAG);功能:檢查指定的SPI/I2S標(biāo)志位設(shè)置與否SPI_I2S_FLAG可取的值:
SPI_I2S_FLAG_TXE:發(fā)送緩存空標(biāo)志位SPI_I2S_FLAG_RXNE:接收緩存非空標(biāo)志位while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE)==RESET);while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE)==RESET);SPI的庫(kù)函數(shù)SPI_I2S_ClearFlagvoidSPI_I2S_ClearFlag(SPI_TypeDef*SPIx,uint16_tSPI_I2S_FLAG);功能:清除指定的SPI/I2S標(biāo)志位SPI_I2S_FLAG可取的值:
SPI_I2S_FLAG_TXE:發(fā)送緩存空標(biāo)志位SPI_I2S_FLAG_RXNE:接收緩存非空標(biāo)志位SPI的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年甲乙雙方關(guān)于量子通訊網(wǎng)絡(luò)建設(shè)的施工合同
- 2024年版紅木家具交易協(xié)議細(xì)則版
- 會(huì)計(jì)2023個(gè)人工作計(jì)劃
- 高密度連接線路板項(xiàng)目商業(yè)計(jì)劃書
- 2018-2024年中國(guó)廣告行業(yè)市場(chǎng)發(fā)展現(xiàn)狀調(diào)研及投資趨勢(shì)前景分析報(bào)告
- 2022-2027年中國(guó)內(nèi)窺鏡行業(yè)市場(chǎng)運(yùn)行態(tài)勢(shì)及投資戰(zhàn)略研究報(bào)告
- 車間主管個(gè)人工作計(jì)劃5篇
- 買賣合同模板集合5篇
- 網(wǎng)絡(luò)安全教育觀后感
- 工作計(jì)劃-文檔
- 2025年心內(nèi)科工作計(jì)劃
- 質(zhì)量是生產(chǎn)出來(lái)課件
- 2024-2025學(xué)年人教版七年級(jí)數(shù)學(xué)上冊(cè)期末模擬測(cè)試卷(含簡(jiǎn)單答案)
- 2024-2030年中國(guó)家用小家電項(xiàng)目可行性研究報(bào)告
- 監(jiān)理對(duì)進(jìn)度控制的目標(biāo)及方法措施
- 壓縮空氣(教學(xué)設(shè)計(jì))-2024-2025學(xué)年三年級(jí)上冊(cè)科學(xué)教科版
- 猩紅熱ppt幻燈片課件
- 輸配電線路基礎(chǔ)知識(shí)
- 2015年日歷表(超清晰A4打印版)
- 剪式汽車舉升機(jī)設(shè)計(jì)
- 健康證體檢表
評(píng)論
0/150
提交評(píng)論