STM32在芯片內(nèi)部已經(jīng)集成了SPI接口,用戶只需配置SPI并復(fù)用映射到相應(yīng)的IO口就行趴生。
一阀趴、SPI的特點(diǎn):
? ? ? 1.全雙工同步通信? ? ? ?
? ? ? 2.一主多從(主機(jī)控制從機(jī))
? ? ? 3.至少需要4根線,3根線也可以(用于單相傳輸)
二苍匆、SPI接口總線
? ? ? MISO:主輸入/從輸出數(shù)據(jù)刘急。此引腳可用于在從模式下發(fā)送數(shù)據(jù)和在主模式下接收數(shù)據(jù)
? ? ? MOSI:主輸出/從輸入數(shù)據(jù)。此引腳可用于在主模式下發(fā)送數(shù)據(jù)和在從模式下接收數(shù)據(jù)
? ? ? SCLK:用于 SPI 主器件的串行時(shí)鐘輸出以及 SPI 從器件的串行時(shí)鐘輸入
? ? ? NSS:從器件選擇浸踩。這是用于選擇從器件的可選引腳(片選)
? ??STM32的SPI一旦配置成主模式叔汁,SPI_CR1的SSI就已經(jīng)置1了,此位的值將作用到NSS引腳上检碗,? ? ? 并忽略 NSS 引腳的 IO 值
? ? ? NSS的配置:????
? ??????????????????????????-軟件管理NSS:
????????????????????????????????????????????????????1.配置為輸出:SPI_CR1的SSOE置1(SSOE:使能輸出)
????????????????????????????????????????????????????2.配置為輸入:SSM與SSI置1(如果已配置為主模式据块,SSI就不需要在置高了)
????????????????????????????-硬件管理NSS:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 1.STM32的SPI配置為主模式時(shí),SSI已經(jīng)置1后裸,此時(shí)的硬件NSS引腳可以給外界使用瑰钮。如果主從的NSS連接在一起,則可以由主機(jī)的NSS去片選從機(jī)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?2.STM32的SPI沒(méi)有配置為主機(jī)模式時(shí)微驶,硬件NSS一定要置高電平
三浪谴、通信過(guò)程
接收過(guò)程:數(shù)據(jù)收到后开睡,先存儲(chǔ)到內(nèi)部接收緩沖區(qū)中;
發(fā)送過(guò)程:先將數(shù)據(jù)存儲(chǔ)到內(nèi)部發(fā)送緩沖區(qū)中苟耻,然后發(fā)送數(shù)據(jù)篇恒。
對(duì) SPI_DR 寄存器(數(shù)據(jù)寄存器)的讀訪問(wèn)將返回接收緩沖值,而對(duì) SPI_DR 寄存器的寫訪問(wèn)會(huì)將寫入的數(shù)據(jù)存儲(chǔ)到發(fā)送緩沖區(qū)中凶杖。
四胁艰、初始化配置
1.初始化GPIO口
2.復(fù)用映射SPI接口到GPIO口
3.使能SPI時(shí)鐘總線:RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1,ENABLE)
4.配置初始化的參數(shù):SPI_Init(SPI1,&SPI_Initstructure)
5.使能SPI外設(shè):SPI_Cmd(SPI1,ENABLE);