![面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā)26STM32SPI通信技術應用開發(fā)課件_第1頁](http://file4.renrendoc.com/view/0228ebe860e1b3fb2964dddeff896bc1/0228ebe860e1b3fb2964dddeff896bc11.gif)
![面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā)26STM32SPI通信技術應用開發(fā)課件_第2頁](http://file4.renrendoc.com/view/0228ebe860e1b3fb2964dddeff896bc1/0228ebe860e1b3fb2964dddeff896bc12.gif)
![面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā)26STM32SPI通信技術應用開發(fā)課件_第3頁](http://file4.renrendoc.com/view/0228ebe860e1b3fb2964dddeff896bc1/0228ebe860e1b3fb2964dddeff896bc13.gif)
![面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā)26STM32SPI通信技術應用開發(fā)課件_第4頁](http://file4.renrendoc.com/view/0228ebe860e1b3fb2964dddeff896bc1/0228ebe860e1b3fb2964dddeff896bc14.gif)
![面向物聯(lián)網(wǎng)的嵌入式系統(tǒng)開發(fā)26STM32SPI通信技術應用開發(fā)課件_第5頁](http://file4.renrendoc.com/view/0228ebe860e1b3fb2964dddeff896bc1/0228ebe860e1b3fb2964dddeff896bc15.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、CC2530和STM32嵌入式接口技術開發(fā)6.3 STM32 SPI通信技術應用開發(fā)SPI協(xié)議庫函數(shù)的使用Flash芯片介紹項目實踐SPI總線介紹SPI協(xié)議是由摩托羅拉公司提出的通訊協(xié)議(Serial Peripheral Interface),即串行外圍設備接口,是一種高速全雙工的通信總線。它被廣泛地使用在ADC、LCD等設備與MCU間,要求通訊速率較高的場合。SPI物理層SS(Slave Select)從設備選擇信號線,常稱為片選信號線。SCK(Serial Clock)時鐘信號線,用于通訊數(shù)據(jù)同步。MOSI(Master Output,Slave Input)主設備輸出/從設備輸入引腳。
2、MISO(Master Input,Slave Output)主設備輸入/從設備輸出引腳。SPI通訊流程在圖中的標號1處,NSS信號線由高變低,是SPI通訊的起始信號。在圖中的標號6處,NSS信號由低變高,是SPI通訊的停止信號。圖中的2、3、4和5標號處,MOSI及MISO的數(shù)據(jù)在SCK的上升沿期間變化輸出,在SCK的下降沿時被采樣。即在SCK的下降沿時刻,MOSI及MISO的數(shù)據(jù)有效,高電平時表示數(shù)據(jù)“1”,為低電平時表示數(shù)據(jù)“0”。SPI通訊模式(奇數(shù)邊)奇數(shù)邊模式主要是時鐘信號采樣的位置在時鐘信號的奇數(shù)邊進行采集。SPI通訊模式(偶數(shù)邊)偶數(shù)邊模式主要是時鐘信號采樣的位置在時鐘信號的偶
3、數(shù)邊進行采集。STM32的SPI硬件框架1. 通訊引腳主要的引腳是MOSI、MISO、SCK、NSS。2. 時鐘控制邏輯通過時鐘控制器控制SPI速率。3. 數(shù)據(jù)控制邏輯此處控制數(shù)據(jù)的發(fā)送。4. 整體控制邏輯對SPI的收發(fā)進行監(jiān)控。STM32的SPI通訊流程STM32的SPI的配置流程1. 配置相關引腳的復用功能,使能SPI1時鐘RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE);/使能SPI1時鐘2. 初始化SPI1,設置SPI1工作模式等void SPI_Init(SPI_TypeDef*SPIx,SPI_InitTypeDef* SPI_I
4、nitStruct);3. 使能SPI1SPI_Cmd(SPI1,ENABLE);/使能SPI1外設4. SPI傳輸數(shù)據(jù)void SPI_I2S_SendData(SPI_TypeDef* SPIx,uint16_t Data);uint16_t SPI_I2S_ReceiveData(SPI_TypeDef* SPIx);5. 查看SPI傳輸狀態(tài)SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_RXNE);SPI管腳的復用配置GPIO_InitStructure.GPIO_Mode=GPIO_Mode_AF;/復用功能GPIO_PinAFConfig(GPIOB
5、,GPIO_PinSource3,GPIO_AF_SPI1); /PB3復用為SPI1GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_SPI1); /PB4復用為SPI1GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GPIO_AF_SPI1); /PB5復用為SPI1SPI的MISO、MOSI和SCK引腳與GPIO引腳共用,要在GPIO引腳上使用SPI的外設功能,需要使用GPIO引腳相關的復用功能,配置復用功能后就可以使用GPIO作為SPI總線的輸入輸出引腳了。SPI的配置參數(shù)typedefstructuint16_
6、t SPI_Direction; /SPI的通信方式配置參數(shù)uint16_t SPI_Mode; /SPI的主從模式配置參數(shù)uint16_t SPI_DataSize; /SPI的數(shù)據(jù)格式配置uint16_t SPI_CPOL; /SPI的時鐘極性配置參數(shù)uint16_t SPI_CPHA; /SPI的時鐘相位配置參數(shù)uint16_t SPI_NSS; /硬件NSS配置參數(shù)uint16_t SPI_BaudRatePrescaler; /SPI的傳輸速率配置參數(shù)uint16_t SPI_FirstBit; /SPI的數(shù)據(jù)傳輸方配置參數(shù)uint16_t SPI_CRCPolynomial; /S
7、PI的CRC校驗模式SPI_InitTypeDef;SPI結構體中重點配置的幾個參數(shù)有SPI的通信方式、主從模式、數(shù)據(jù)格式、傳輸速率和傳輸方向。SPI的參數(shù)配置SPI_InitTypeDefSPI_InitStructure; /初始化SPI結構體SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex; /配置全雙工模式SPI_InitStructure.SPI_Mode=SPI_Mode_Master; /配置為主機模式SPI_InitStructure.SPI_DataSize=SPI_DataSize_8b; /配置
8、數(shù)據(jù)位為8位SPI_InitStructure.SPI_CPOL=SPI_CPOL_High; /配置時鐘極性為高SPI_InitStructure.SPI_CPHA=SPI_CPHA_2Edge; /配置時鐘相位為偶數(shù)位SPI_InitStructure.SPI_NSS=SPI_NSS_Soft; /配置設備選擇線為軟件配置SPI_InitStructure.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_256; /速度256分頻SPI_InitStructure.SPI_FirstBit=SPI_FirstBit_MSB; /配置高位在前數(shù)據(jù)發(fā)送S
9、PI_InitStructure.SPI_CRCPolynomial=7; /配置CRC值計算的多項式SPI_Init(SPI2,&SPI_InitStructure); /使能SPISPI速率配置為256分頻的時鐘速率為45M/256=175.781KHz,45M的來源為APB2的時鐘速率為45MHz。Flash芯片介紹W25X64基本知識W25X64 系列 Flash 存儲器與普通串行 FLASH 相比,使用更靈活,性能更出色。它非常適合應用,例如存儲聲音,文本和數(shù)據(jù)。W25X64有32768 可編程頁,每頁 256 字節(jié)。W25X64功能引腳W25X16、W25X32 和 W25X64
10、支持標準的 SPI 接口,傳輸速率最大 75MHz。四線制:串行時鐘引腳 CLK;芯片選擇引腳 CS;串行數(shù)據(jù)輸出引腳 DO;串行數(shù)據(jù)輸入輸出引腳 DIO。項目場景系統(tǒng)生成的工作日志,電子設備中存儲的字庫,物聯(lián)網(wǎng)安全系統(tǒng)中存儲的動態(tài)密鑰等都需要隨時快速的存儲和獲取。而通常對這些數(shù)據(jù)存儲的存儲其為了兼顧大容量、節(jié)約硬件資源和低成本,往往使用SPI通信的高速flash。任務目標考勤機生產(chǎn)企業(yè),要對原有產(chǎn)品進行升級,擴充設備存儲容量,以實現(xiàn)更多功能與數(shù)據(jù)記錄,要求使用STM32處理器的SPI接口去擴展 Flash芯片。項目分析本項目設計采用STM32F407的SPI外設與W25Q64的Flash進行
11、交互,程序主要注意兩個方面,以方面是STM32F407的SPI的參數(shù)配置,另一方面是對Flash的讀寫操作,讀寫操作主要按照W25Q64 的控制寄存器來配置即可。STM32F407串口W25Q64Plus節(jié)點項目硬件連接圖W25Q64的Flash原理圖程序邏輯圖項目實現(xiàn)void SPI3_Init(void) GPIO_InitTypeDef GPIO_InitStructure; SPI_InitTypeDef SPI_InitStructure; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE); /使能GPIOB時鐘 RCC_APB
12、1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE); /使能SPI3時鐘SPI3初始化,配置成主機模式 項目實現(xiàn) /GPIOB3,4,5初始化設置 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5; /PB35復用功能輸出 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; /復用功能 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; /推挽輸出 GPIO_InitStructure.GPIO_Spe
13、ed = GPIO_Speed_100MHz; /100MHz GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; /上拉 GPIO_Init(GPIOB, &GPIO_InitStructure); /初始化 GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_SPI3); /PB3復用為 SPI3 GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_SPI3); /PB4復用為 SPI3 GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GP
14、IO_AF_SPI3); /PB5復用為 SPI3 SPI3初始化,配置成主機模式項目實現(xiàn) /這里只針對SPI口初始化 RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI3,ENABLE); /復位SPI3 RCC_APB1PeriphResetCmd(RCC_APB1Periph_SPI3,DISABLE); /停止復位SPI3 SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; /設置SPI單向或者雙向的數(shù)據(jù)模式:SPI設置為雙線雙向全雙工 SPI_InitStructure.
15、SPI_Mode = SPI_Mode_Master; /設置SPI工作模式:設置為主SPI SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; /設置SPI的數(shù)據(jù)大小:SPI發(fā)送接收8位幀結構 SPI_InitStructure.SPI_CPOL = SPI_CPOL_High; /串行同步時鐘的空閑狀態(tài)為高電平 SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; /串行同步時鐘的第二個跳變沿(上升或下降)數(shù)據(jù)被采樣 SPI_InitStructure.SPI_NSS = SPI_NSS_Soft; /NS
16、S信號由硬件(NSS管腳)還是軟件(使用SSI位)管理:內部NSS信號有SSI位控制 SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;/定義波特率預分頻的值:波特率預分頻值為256 SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; /指定數(shù)據(jù)傳輸從MSB位還是LSB位開始:數(shù)據(jù)傳輸從MSB位開始 SPI_InitStructure.SPI_CRCPolynomial = 7; /CRC值計算的多項式 SPI_Init(SPI3, &SPI_InitStru
17、cture); /根據(jù)SPI_InitStruct中指定的參數(shù)初始化外設SPIx寄存器 SPI_Cmd(SPI3, ENABLE); /使能SPI外設 SPI3_ReadWriteByte(0 xff); /啟動傳輸 SPI3初始化,配置成主機模式項目實現(xiàn)void SPI3_SetSpeed(u8 SPI_BaudRatePrescaler) assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler);/判斷有效性 SPI3-CR1&=0XFFC7; /位3-5清零,用來設置波特率 SPI3-CR1|=SPI_BaudRatePrescaler; /設置SPI1速度 SPI_Cmd(SPI2,ENABLE); /使能SPI1SPI3速度設置函數(shù)項目實現(xiàn)u8 SPI3_ReadWriteByte(u8 TxData) while (SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_T
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- ERK2-IN-5-生命科學試劑-MCE-2561
- 二零二五年度文化旅游項目管理費合同范本
- 二零二五年度體育賽事表演安全免責合同
- 施工日志填寫樣本建筑物綠化工程
- 小學數(shù)學課堂中的情境教學與興趣培養(yǎng)
- 酒店衛(wèi)生標準與旅客健康保障措施研究
- 個人土地承包合同示范文本
- 產(chǎn)品分銷區(qū)域合同范本
- SPA會所年度承包經(jīng)營合同
- 個人財產(chǎn)保險合同模板(經(jīng)典)
- (一模)蕪湖市2024-2025學年度第一學期中學教學質量監(jiān)控 英語試卷(含答案)
- 完整版秸稈炭化成型綜合利用項目可行性研究報告
- 詩經(jīng)楚辭文學常識單選題100道及答案
- AI輔助的慢性病監(jiān)測與管理系統(tǒng)
- 2025中國海油春季校園招聘1900人高頻重點提升(共500題)附帶答案詳解
- 膽汁淤積性肝硬化護理
- Unit 6 Is he your grandpa 第一課時 (教學實錄) -2024-2025學年譯林版(三起)(2024)英語三年級上冊
- 《數(shù)據(jù)采集技術》課件-Scrapy 框架的基本操作
- (2024)河南省公務員考試《行測》真題及答案解析
- 湖北省十一校2024-2025學年高三上學期第一次聯(lián)考化學試題 含解析
- 醫(yī)療保險結算與審核制度
評論
0/150
提交評論