2016-05-16 125 views
0

任何人可以解釋我的SPI通信的工作原理?如果有可能向我展示與SPI通信示例代碼的鏈接? 我將使用「STM32f1xx」微處理器與SPI通信的外圍設備ADE7878(能量分析器)。我正在使用「STM32CubeMx」和「stm32f1xx_hal.h」庫。但是我找不到「stm32f1xx_hal.h」庫的很多代碼示例。 在此先感謝您的幫助如何使用STM32f1xx_HAL SPI通信

+0

這有幫助嗎?:https://github.com/eleciawhite/STM32Cube/tree/master/STM32Cube_FW_F3_V1.3.0/Projects/STM32F303RE-Nucleo/Examples/SPI/SPI_FullDuplex_ComIT/Src – TisteAndii

回答

0

基本上SPI是一種同步串行通訊接口,採用主從關係。主器件(您的STM32微控制器)選擇總線上的從器件,拉低片選引腳。在所有通信操作之前,您需要在ADE7878中選擇SPI接口。切換三次電後的SS/HSA銷,除非你需要與I2C protokoll(見datasheet在68頁的詳細信息)通信。選擇主器件在SCLK線中啓動時鐘信號後。主機發送第一個字節來選擇讀/寫位0,第二個字節在MOSI線上有一個寄存器地址。最後,主設備讀取MISO線上從設備寄存器的日期或在MOSI上寫入寄存器值。

通信之前,需要設定參數(時鐘相位,極性,時鐘頻率等)。您可以在文獻中閱讀它並參閱STM32F1 HAL documentation。關於SPI有很多很好的通用材料。首先我建議你the wiki page of SPI。如果你在這裏搜索,你可以找到幾個有關SPI和stm32的有用提示(例如,some shorter general intro)。我熱烈建議您閱讀Geoffrey Brown's book,這是介紹STM32F1編程的內容。它基於標準外設庫(HAL的祖先),但其原理已得到很好的解釋。

如果使用CubeMX和STM32CubeF1 firmware package安裝你可以找到在倉庫中不同工具的一些工作SPI例子。如果你想要更多,你可以看到任何STM32的例子,因爲HAL代碼可以跨系列移植。我推薦用例如搜索。 "__HAL_SPI_ENABLE"

相關問題