STM32 HAL庫 模擬SPI
????在使用單片機(jī)的過程中,SPI總線是常用的一種通信方式,與此類似的還有 I2C 和 UART?。在實(shí)際的工程開發(fā)的工程中硬件工程師可能會無法滿足硬件SPI的要求,此外部分芯片的 SPI 通信協(xié)議是24位,不是常見的8位或16位,為此我們需要使用IO口來模擬SPI。
? ? SPI的簡介:

????SPI 有四線和三線兩種,本文以常見的三線 SPI 為例
? ?用 STM32CubeMx 初始化模擬 SPI 的引腳:

????STM32CubeMx的GPIO的配置可以參考:

? ? 所用到的三個IO口分別對應(yīng)SPI總線的串行數(shù)據(jù)線和串行時鐘線。
? ? CS:PC5
? ? SCLK:PC4
????SDI / SDO:PC1
user_spi.h
user_spi.c
SDO_IN:更改一個 SDO 腳為輸入
SDO_OUT:更改一個 SDO 腳為輸出
SPI_Write_OneByte:使用 SPI 寫一個字節(jié)
SPI_Read_OneByte:使用 SPI 讀一個字節(jié)
WriteReg:通過調(diào)用 SPI_Write_OneByte 函數(shù)使用?SPI 向外傳輸3個字節(jié)24位的數(shù)據(jù)(實(shí)際應(yīng)用案例:2個地址字節(jié),在這個地址字節(jié)下寫入1個字節(jié)的數(shù)據(jù))
ReadReg:通過調(diào)用?SPI_Write_OneByte 函數(shù)和SPI_Read_OneByte函數(shù)使用?SPI?傳輸2個字節(jié)16位的數(shù)據(jù),接受1個字節(jié)8位的數(shù)據(jù)(實(shí)際應(yīng)用案例:2個地址字節(jié),等待從從機(jī)接受1個字節(jié)的數(shù)據(jù))
參考文獻(xiàn):
STM32不完全手冊_標(biāo)準(zhǔn)庫版本_V3.3?