SPI串行接口
SPI是由Motorala公司提出的一種同步串行外圍接口。它在速度要求不高、低功耗、需保存少量參數(shù)的智能化傳感系統(tǒng)中得到了廣泛應(yīng)用。
SPI是一個(gè)全雙工的同步串行接口。在數(shù)據(jù)傳輸過程中,總線上只能是一個(gè)主機(jī)和一個(gè)從機(jī)進(jìn)行通信。
1、MISO(Master In Slave Out)
主機(jī)輸入、從機(jī)輸出信號(hào)。
2、MOSI(Master Out Slave In)
主機(jī)輸出、從機(jī)輸入信號(hào)。
3、SCK(Serial Clock)
串行時(shí)鐘信號(hào)。(用來同步使用的)
4、SS(Slave Select)
從機(jī)選擇信號(hào),低電平有效。
SPI系統(tǒng)連接
SPI總線可在軟件的控制下構(gòu)成各種簡(jiǎn)單或復(fù)雜的系統(tǒng)。
SPI通信工作原理
SPI的基本結(jié)構(gòu)相當(dāng)于兩個(gè)8位移位寄存器的首位相接,構(gòu)成16位的環(huán)形移位寄存器。從而實(shí)現(xiàn)了主機(jī)與從機(jī)的數(shù)據(jù)交換。
SPI框圖
分析:
①首先看SCK 管腳,通過波特率發(fā)生器產(chǎn)生時(shí)鐘信號(hào),這個(gè)信號(hào)可以出去給從機(jī)使用,也可以進(jìn)來給自己驅(qū)動(dòng) COMMUNICATION CONTROL(通信控制),其中波特率發(fā)生器由BR0、BR1、BR2控制,由這三個(gè)值來決定波特率的速度,通信控制受MSTR、SSM、SSI控制
,如果通信控制出錯(cuò),比如控制的CRCERR(CRC校驗(yàn)錯(cuò)誤)、MODF(模式)、OVR(數(shù)據(jù)溢出),就會(huì)在SPI_SR的相應(yīng)位置1。通信控制出來的信號(hào)連接著 MASTER CONTROL LOGIC(主控邏輯電路),中控邏輯電路控制著MOSI、MISO這一塊。
②數(shù)據(jù)從MISO進(jìn)來,進(jìn)入SHIFT REGISTER(移位寄存器),移位寄存器數(shù)據(jù)一旦8位接收完整之后,會(huì)自動(dòng)放到 RX BUFFER 中,我們可以通過 RX BUFFER可以讀取數(shù)據(jù)。 當(dāng)我們要發(fā)送內(nèi)容,就是通過總線(地址總線,數(shù)據(jù)總線)將數(shù)據(jù)寫入 TX BUFFER 中去,然后送到移位寄存器 ,數(shù)據(jù)一旦8位接收完整之后,可以通過MOSI將數(shù)據(jù)發(fā)送出去。
SPI通信的幾個(gè)步驟
1.SPI主從模式
設(shè)置MSTR(主設(shè)備選擇)和SPE位(使能位)來選擇是否工作在主模式還是從模式下。(這兩個(gè)位都在SPI_CR1寄存器中都可以設(shè)置),作為從機(jī),片選要接地,可以硬件實(shí)現(xiàn)也可以軟件實(shí)現(xiàn),接電源是作主機(jī)
2.時(shí)鐘信號(hào)的相位和極性
SPI接口可由CPOL和CPHA設(shè)定4種不同傳輸格式的時(shí)序。(CPOL和CPHA在SPI_CR1寄存器中)
CPOL決定時(shí)鐘脈沖SCK的有效脈沖方式(正脈沖、負(fù)脈沖)。CPHA決定數(shù)據(jù)線MOSI什么時(shí)候輸出數(shù)據(jù)或采集數(shù)據(jù)。
根據(jù)CPOL和CPHA的組合數(shù)目,一共有4種設(shè)置情況。
分析:
CPOL決定了脈沖的方式,第一行(CPOL=0),是正脈沖,第二行(CPOL=1),是負(fù)脈沖(空閑時(shí)高電平,來數(shù)據(jù)下降沿);當(dāng)CPHA=0,數(shù)據(jù)是先出來的,即比上方的SCK的電平變化(時(shí)鐘輸出)要快,大概快半拍,我們稱之為數(shù)據(jù)傳輸相位超前;當(dāng)CPHA=1,SCK的電平變化之后數(shù)據(jù)才會(huì)出來,相位是同步的,當(dāng)在SCK的第二個(gè)上升沿或者下降沿的時(shí)候才開始數(shù)據(jù)采集
4種時(shí)序下的數(shù)據(jù)傳輸,其中“第一位數(shù)據(jù)的輸出”和“其他位數(shù)據(jù)的輸出”欄是表示數(shù)據(jù)在什么時(shí)候更新輸出。還需注意數(shù)據(jù)采樣是上升沿還是下降沿有效。
數(shù)據(jù)與時(shí)鐘的相位關(guān)系如下圖:
3.數(shù)據(jù)幀的格式
根據(jù)SPI_CR1寄存器中的LSBFIRST位,輸出數(shù)據(jù)位時(shí)可以MSB在先也可以LSB在先。
根據(jù)SPI_CR1寄存器的DFF位,每個(gè)數(shù)據(jù)幀可以是8位或是16位。所選擇的數(shù)據(jù)幀格式對(duì)發(fā)送和/或接收都有效。
SPI主模式通信
在主模式時(shí),串行時(shí)鐘在SCK腳產(chǎn)生。
配置步驟:
通過 SPI_CR1寄存器的 BR[2:0]位定義串行時(shí)鐘波特率
選擇 CPOL和CPHA 位,定義數(shù)據(jù)傳輸和串行時(shí)鐘間的相位關(guān)系
設(shè)置 DFF 位來定義8或16位數(shù)據(jù)幀格式
配置 SPI_CR1寄存器的 LSBFIRST 位定義幀格式
如果 NSS 引腳需要工作在輸入模式,硬件模式中在整個(gè)數(shù)據(jù)幀傳輸期間應(yīng)把 NSS 腳連接到髙電平:在軟件模式中,需設(shè)置 SPI_CR1寄存器的 SSM 和 SSI 位 。 如 果 NSS 引腳工作在輸出模式.則只需設(shè)置 SSOE 位
必須設(shè)置 MSTR 和 SPE 位(只當(dāng) NSS 腳被連到高電平.這些位才能保持置位)
在這個(gè)配置中, MOSI 腳是數(shù)據(jù)輸出,而 MISO 腳是數(shù)據(jù)輸入。
數(shù)據(jù)發(fā)送過程
1、 當(dāng)一字節(jié)寫進(jìn)發(fā)送緩沖器時(shí),發(fā)送過程開始。
2、 在發(fā)送第一個(gè)數(shù)據(jù)位時(shí),數(shù)據(jù)字被并行地(通過內(nèi)部總線–TX BUFFER)傳入移位寄存器,而后串行地移出到 MOSI 腳上; MSB 在先還是 LSB 在先,取決于 SPI_CR1寄存器中的 LSBFIRST 位。數(shù)據(jù)從發(fā)送緩沖器傳輸?shù)揭莆患拇嫫?TXE 標(biāo)志將被置位,如果設(shè)置 SPI_CR1寄存器中的 TXEIE 位,將產(chǎn)生中斷。
3、 在試圖寫發(fā)送緩沖器之前,需確認(rèn) TXE 標(biāo)志應(yīng)該是1
數(shù)據(jù)接收過程
當(dāng)數(shù)據(jù)傳輸完成時(shí):
1、 移位寄存器里的數(shù)據(jù)傳送到接收緩沖器(8位–>RX BUFFER),并且 RXNE 標(biāo)志被置位(硬件接受滿自動(dòng)置位1)。如果 SPI_CR2寄存器中的 RXEIE 位被設(shè)置,則產(chǎn)生中斷。
2、 讀 SPI_ DR 寄存器時(shí), SPI 設(shè)備返回接收到的數(shù)據(jù)字。讀 SPI_DR 寄存器將清除RXNE 位(也是硬件自動(dòng)清零)。
數(shù)碼管顯示 123.4
main.c
/* Includes ------------------------------------------------------------------*/
#include "stm32f10x_lib.h" //包含了所有的頭文件 它是唯一一個(gè)用戶需要包括在自己應(yīng)用中的文件,起到應(yīng)用和庫之間界面的作用。
#include "../Module_Function/Module.h"
#include TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; ErrorStatus HSEStartUpStatus; void Delay_Ms(u16 time); void RCC_Configuration(void); void GPIO_Configuration(void); /* Private functions ---------------------------------------------------------*/ /******************************************************************************* * Function Name : main * Description : Main program. * Input : None * Output : None * Return : None *******************************************************************************/ int main(void) { // u16 i=0,j; #ifdef DEBUG debug(); #endif RCC_Configuration();//使能外設(shè)時(shí)鐘 SEG_Init(); //========實(shí)現(xiàn)數(shù)碼管顯示========== while (1) { /*for(i=0;i<9999;i++) { for(j=0;j<500;j++) SEG_Display(i,0); } */ SEG_Display(1234,3); } } /******************************************************************************* * Function Name : Delay_Ms * Description : delay 1 ms. * Input : time (ms) * Output : None * Return : None *******************************************************************************/ void Delay_Ms(u16 time) //延時(shí)函數(shù) { u16 i,j; for(i=0;i
上一篇:STM32-(17):SPI與數(shù)碼管,
下一篇:STM32-(19):I2C通信(理論基礎(chǔ))
推薦閱讀最新更新時(shí)間:2025-08-02 05:23




設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦
- DC957A,使用 LTC3785、3.3V、3.0A 高效率同步降壓-升壓轉(zhuǎn)換器的演示板
- AM1/4S-2403SH30Z 3.3V 0.25W DC-DC轉(zhuǎn)換器的典型應(yīng)用
- LTC1732-4/4.2 的典型應(yīng)用 - 鋰離子線性電池充電器控制器
- RH1028M 的典型應(yīng)用 - 抗輻射超低噪聲精密高速運(yùn)算放大器
- AD8108-EB,用于 AD8108 模擬音頻/視頻開關(guān)的四層評(píng)估板
- LTC4162IUFD-FST 9V 至 35V 2 節(jié) 3.2A 充電器的典型應(yīng)用,具有 PowerPath 和 2A 輸入限制
- 使用 Microchip Technology 的 TC05AC 的參考設(shè)計(jì)
- 使用 Analog Devices 的 LTC3526BEDC-2 的參考設(shè)計(jì)
- AKD4364,用于 AK4364 96kHz、24 位 D/A 轉(zhuǎn)換器的評(píng)估板,帶 PLL/DIT
- 使用 Analog Devices 的LT1934的參考設(shè)計(jì)
- 泰克推出KTE V7.1軟件S530參數(shù)測(cè)試系統(tǒng),加速半導(dǎo)體芯片生產(chǎn)
- Mobileye:驅(qū)動(dòng)我們前進(jìn)的力量之源
- 手把手教學(xué)51單片機(jī)第三課 | 復(fù)位電路、數(shù)碼管靜態(tài)顯示
- 德州儀器出席 2023 年教育部產(chǎn)學(xué)合作協(xié)同育人項(xiàng)目對(duì)接會(huì), 并榮獲優(yōu)秀項(xiàng)目案例獎(jiǎng)
- 晶心科技和 IAR攜手助力奕力科技加速開發(fā)其符合ISO 26262標(biāo)準(zhǔn)的TDDI SoC ILI6600A
- ACM8629單聲道100W/立體聲50W內(nèi)置DSP音頻算法的I2S數(shù)字輸入D類功放IC解決方案
- 半導(dǎo)體關(guān)稅可能會(huì)使您的下一輛汽車更加昂貴
- 潮起!人形機(jī)器人成本的20%-30%——靈巧手,國產(chǎn)3大廠商正快速產(chǎn)業(yè)化!
- AB Dynamics發(fā)布用于無人駕駛測(cè)試的物體檢測(cè)系統(tǒng)
- AI重構(gòu)出行:高階輔助駕駛的破局之路
- 廣汽即將發(fā)布全新星源增程技術(shù)
- Yole表示,到2030年,數(shù)據(jù)中心芯片市場(chǎng)規(guī)模將達(dá)到5000億美元
- 綠色節(jié)能趨勢(shì)下的延時(shí)繼電器發(fā)展:低功耗設(shè)計(jì)與環(huán)保材料應(yīng)用
- 國內(nèi)車企在固態(tài)電池領(lǐng)域的挑戰(zhàn)和技術(shù)方案
- 資本熱捧 + 政策護(hù)航,2025 人形機(jī)器人能否叩開 “量產(chǎn)元年” 大門?
- 耐世特推出用于智能運(yùn)動(dòng)控制的 MotionIQ?軟件套件
- 新能源汽車國內(nèi)補(bǔ)貼逐步取消,全球新能源車銷售增長(zhǎng)迅猛
- 中國新能源汽車市場(chǎng)下半年將如何?
- 無人駕駛技術(shù)全球領(lǐng)先,美政府為何廢除無人駕駛委員會(huì)?
- 蔚來7月交付電動(dòng)汽車不足千輛,新造車勢(shì)力的未來在哪?
- 國內(nèi)車企紛紛“摩拳擦掌”掘金5G
- 基于DS1307的可調(diào)實(shí)時(shí)時(shí)鐘系統(tǒng)設(shè)計(jì)
- 基于UC3846間接電流型控制直流變換器研究
- EM78系列單片機(jī)--查表程序設(shè)計(jì)
- EM78系列單片機(jī)--中斷程序的設(shè)計(jì)
- EM78系列單片機(jī)--延遲子程序的編寫