《STM32从零开始学习历程》——SPI固件库
生活随笔
收集整理的這篇文章主要介紹了
《STM32从零开始学习历程》——SPI固件库
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
《STM32從零開(kāi)始學(xué)習(xí)歷程》@EnzoReventon
SPI固件庫(kù)
相關(guān)鏈接:
SPI物理層及FLASH芯片介紹
SPI協(xié)議層
SPI特性及架構(gòu)
參考資料:
[野火EmbedFire]《STM32庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南——基于野火霸天虎開(kāi)發(fā)板》
[正點(diǎn)原子]STM32F4開(kāi)發(fā)指南-庫(kù)函數(shù)版本_V1.2
[ST]《STM32F4xx中文參考手冊(cè)》
SPI協(xié)議及總線協(xié)議介紹
W25Q128產(chǎn)品數(shù)據(jù)手冊(cè)
SPI初始化函數(shù)
typedef struct {uint16_t SPI_Direction; /*!< Specifies the SPI unidirectional or bidirectional data mode.This parameter can be a value of @ref SPI_data_direction */uint16_t SPI_Mode; /*!< Specifies the SPI operating mode.This parameter can be a value of @ref SPI_mode */uint16_t SPI_DataSize; /*!< Specifies the SPI data size.This parameter can be a value of @ref SPI_data_size */uint16_t SPI_CPOL; /*!< Specifies the serial clock steady state.This parameter can be a value of @ref SPI_Clock_Polarity */uint16_t SPI_CPHA; /*!< Specifies the clock active edge for the bit capture.This parameter can be a value of @ref SPI_Clock_Phase */uint16_t SPI_NSS; /*!< Specifies whether the NSS signal is managed byhardware (NSS pin) or by software using the SSI bit.This parameter can be a value of @ref SPI_Slave_Select_management */uint16_t SPI_BaudRatePrescaler; /*!< Specifies the Baud Rate prescaler value which will beused to configure the transmit and receive SCK clock.This parameter can be a value of @ref SPI_BaudRate_Prescaler@note The communication clock is derived from the masterclock. The slave clock does not need to be set. */uint16_t SPI_FirstBit; /*!< Specifies whether data transfers start from MSB or LSB bit.This parameter can be a value of @ref SPI_MSB_LSB_transmission */uint16_t SPI_CRCPolynomial; /*!< Specifies the polynomial used for the CRC calculation. */ }SPI_InitTypeDef;- SPI_Direction:
本成員設(shè)置SPI的通訊方向,可設(shè)置為雙線全雙工(SPI_Direction_2Lines_FullDuplex),雙線只接收(SPI_Direction_2Lines_RxOnly),單線只接收(SPI_Direction_1Line_Rx)、單線只發(fā)送模式(SPI_Direction_1Line_Tx)。 - 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_DataSize:
本成員可以選擇SPI通訊的數(shù)據(jù)幀大小是為8位(SPI_DataSize_8b)還是16位(SPI_DataSize_16b)。 - SPI_CPOL和SPI_CPHA:
這兩個(gè)成員配置SPI的時(shí)鐘極性CPOL和時(shí)鐘相位CPHA,這兩個(gè)配置影響到SPI的通訊模式,時(shí)鐘極性CPOL成員,可設(shè)置為高電平(SPI_CPOL_High)或低電平(SPI_CPOL_Low )。
時(shí)鐘相位CPHA 則可以設(shè)置為SPI_CPHA_1Edge(在SCK的奇數(shù)邊沿采集數(shù)據(jù)) 或SPI_CPHA_2Edge (在SCK的偶數(shù)邊沿采集數(shù)據(jù)) 。 - SPI_NSS:
本成員配置NSS引腳的使用模式,可以選擇為硬件模式(SPI_NSS_Hard )與軟件模式(SPI_NSS_Soft ),在硬件模式中的SPI片選信號(hào)由SPI硬件自動(dòng)產(chǎn)生,而軟件模式則需要親自把相應(yīng)的GPIO端口拉高或置低產(chǎn)生非片選和片選信號(hào)。
實(shí)際中軟件模式應(yīng)用比較多。 - SPI_BaudRatePrescaler:
本成員設(shè)置波特率分頻因子,分頻后的時(shí)鐘即為SPI的SCK信號(hào)線的時(shí)鐘頻率。這個(gè)成員參數(shù)可設(shè)置為fpclk的2、4、6、8、16、32、64、128、256分頻。 - SPI_FirstBit:
所有串行的通訊協(xié)議都會(huì)有MSB先行(高位數(shù)據(jù)在前)還是LSB先行(低位數(shù)據(jù)在前)的問(wèn)題,而STM32的SPI模塊可以通過(guò)這個(gè)結(jié)構(gòu)體成員,對(duì)該特性編程控制。 - SPI_CRCPolynomial:
這是SPI的CRC校驗(yàn)中的多項(xiàng)式,若我們使用CRC校驗(yàn)時(shí),就使用這個(gè)成員的參數(shù)(多項(xiàng)式),來(lái)計(jì)算CRC的值。
SPI其他常用庫(kù)函數(shù)
總結(jié)
以上是生活随笔為你收集整理的《STM32从零开始学习历程》——SPI固件库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Unity——通过点击鼠标进行场景切换
- 下一篇: excel导出java.lang.Arr