|
“ 本文主要介紹STM32的SPI接口、利用STM32CubeMX軟件配置SPI接口及其使用方法。”
01
—
SPI協(xié)議介紹
SPI協(xié)全稱串行外圍設(shè)備接口(Serial Peripheral Interface),是一種高速全雙工的通信總線。主要用在MCU與ADC、DAC、FLASH等模塊之間的通信。
SPI協(xié)議不同于UART,有主從之分,一個主機(jī)可以連接多個從機(jī),通過片選信號來選擇與哪個從機(jī)通訊。SPI接口包含4條線:NSS:片選SCK:時鐘信號MISO:主設(shè)備輸入 / 從設(shè)備輸出MOSI:主設(shè)備輸出 / 從設(shè)備輸入
nxm3wx4iubb64048943518.jpg (37.83 KB, 下載次數(shù): 0)
下載附件
保存到相冊
nxm3wx4iubb64048943518.jpg
2024-10-5 23:00 上傳
SPI的通訊速率由時鐘信號頻率決定。根據(jù)時鐘極性(CPOL)及相位(CPHA)不同,SPI有四種工作模式。時鐘極性(CPOL)定義了時鐘空閑狀態(tài)電平:CPOL=0表示時鐘空閑時為低電平。CPOL=1表示時鐘空閑時為高電平。時鐘相位(CPHA)定義數(shù)據(jù)的采集時間:CPHA=0表示在時鐘的第一個跳變沿進(jìn)行數(shù)據(jù)采樣。CPHA=1表示在時鐘的第二個跳變沿進(jìn)行數(shù)據(jù)采樣。
vnyzspyvlpe64048943618.jpg (165.12 KB, 下載次數(shù): 0)
下載附件
保存到相冊
vnyzspyvlpe64048943618.jpg
2024-10-5 23:00 上傳
02
—
STM32CubeMX配置
以STM32F072為例,其SPI接口配置如下:
a4h2ujkshhy64048943718.png (63.56 KB, 下載次數(shù): 0)
下載附件
保存到相冊
a4h2ujkshhy64048943718.png
2024-10-5 23:00 上傳
選擇SPI1,模式為Full-Duplex Master(全雙工主機(jī)模式)
硬件NSS信號關(guān)閉,手動配置某個端口為輸出模式,作為片選信號。
其它參數(shù)配置根據(jù)自己所控制的從機(jī)的要求進(jìn)行配置。也可根據(jù)需要打開中斷或DMA傳輸。設(shè)置完成后點擊生成代碼即可。
SPI相關(guān)的函數(shù)主要包括以下幾個,根據(jù)函數(shù)名和參數(shù)名基本上可以看出每個函數(shù)怎么調(diào)用,這里就不做過多介紹。
HAL_StatusTypeDef HAL_SPI_Transmit(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);HAL_StatusTypeDef HAL_SPI_Receive(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size, uint32_t Timeout);HAL_StatusTypeDef HAL_SPI_TransmitReceive(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size, uint32_t Timeout);HAL_StatusTypeDef HAL_SPI_Transmit_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);HAL_StatusTypeDef HAL_SPI_Receive_IT(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);HAL_StatusTypeDef HAL_SPI_TransmitReceive_IT(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);HAL_StatusTypeDef HAL_SPI_Transmit_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);HAL_StatusTypeDef HAL_SPI_Receive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pData, uint16_t Size);HAL_StatusTypeDef HAL_SPI_TransmitReceive_DMA(SPI_HandleTypeDef *hspi, uint8_t *pTxData, uint8_t *pRxData, uint16_t Size);
歡迎關(guān)注公眾號"嵌入式技術(shù)開發(fā)",大家可以后臺給我留言溝通交流。如果覺得該公眾號對你有所幫助,也歡迎推薦分享給其他人。
vurrlrhdihf64048943818.jpg (17.95 KB, 下載次數(shù): 0)
下載附件
保存到相冊
vurrlrhdihf64048943818.jpg
2024-10-5 23:00 上傳
|
|