第三章 PX4-Pixhawk-SPI底层驱动解析
第三章?PX4-SPI底層驅動解析
?????????這一章節我們會對PX4的底層驅動進行解析,我們這里主要解析的是SPI協議,因為這個協議是所有傳感器的一個協議,至于IIC和串口就可以類似的讀寫一下,大家看完這個解析后不妨去試試驅動一下can總線協議。
????????首先大家是不是覺得奇怪,為什么PX4編譯的是一個針對F4的程序而不是其他的。這里我們就需要從整個系統的架構考慮了。我們之前提到過這個系統是基于nuttx操作系統開發的,至于nuttx是一個什么樣的系統我們不做過多介紹,總的來說他就是一個類似于ucos的系統就行了。
?????????在nuttx系統的配置時就對處理的器做了選擇,具體我們需要追蹤到目錄
下,里面有一個defconfig文件哦。打開這個文件你可以看到很多以CONFIG開頭的定義,有的定義是y有的是not set。這些其實就是類似于C語言的define,定義一些宏,而y就代表yes也就是1。這里面你就可以看到
看到沒,支持stm32的,
這些都是哦。里面還有定義了使用stm32的AD,DMA,IIC,SDIO,SPI等等。這里can是沒有開啟的大家到時候開發的時候可以開啟
。這個文件里面定義了很多的東西哦,下次找不到一些定義可以的到這里面來找,這里還有定義串口的波特率
。這里要特別記住有幾個定義,我這里先貼出來,
這兩個是解析rcs的相關東西哦。
?????????大家還記得PX4是有個協處理的,這個協處理的定義實在路徑下的defconfig
,至于defconfig的連接處在哪,那個這個就是nuttx下的工具會自動連接過去的,這個我們不用管,因為我也沒去仔細去研究,如果大家有興趣不妨去研究一下。
?????????這里說明一下整個系統的啟動是以__start開始的,至于為什么需要查看nuttx腳本了,這里貼出來一下
,剩下的大家自己去查看。
?????????說了這么多終于可以進入到驅動層了,關于SPI協議,其實nuttx這個系統是已經寫好的,我們只需要鏈接過去就行了,can總線也是一樣的。
?????????還記前面提到的nsh_main了吧,這里其實就是APP層的一個入口了文件在這個路徑下
,這里我們具體的流程我們暫時不做詳細描述,這一章節我們只對SPI這個驅動來解析,大家不要急,在后面我們會慢慢的對整個流程進行一部分一部分解析。在nsh_main中有個函數
。我們追蹤進去發現只有一個函數,所以這個很容易就找到。這里面有這個函數
,這里我們我們用suoce insight來看的就需要用到搜索功能,結果一搜索出現好多個這樣的文件,不過大家也不用急,告訴大家一個方法我們是針對PX4-V2的硬件。所以我們就針對有關于V2的硬件就行了。所以我們搜索到路徑
,里面有個文件是px4fmu2_init.c中
這個函數中你就可以看到很多的端口的初始化了哦。那些端口的標號你可查到就在board_config.h中,記住都是v2的硬件哦。我們要找的是SPI端口,所以我們還是去找SPI。在這個函數中你可以看到
這個就是對驅動層的APP鏈接層嘍。
看到沒這些初始化和CS片選了。
找到這個了沒?這個up_spiinitializa函數需要繼續追蹤了,我們是針對stm32的,所以這個函數肯定在stm32的庫中去找了
找到了哦。看一下這個函數,看到這個了沒
,還記得defconfig文件嗎?那里有定義哦。接著就是初始化端口了。
。說到這里大家是不是還是不知道怎么連接到nuttx的spi庫中。不要急,還是在stm32_spi.c這個文件中,大家不妨跑到最前一點去看看是不是有這樣的一個結構體
看到沒連接過來了哦。前一部分就是nutxx的庫了,后面是自己寫的,當然這個要一致還有一個宏要注意哦
它們之間存在映射的關系哦所以在之后寫初始化的都是SPI_SELECT這個在spi.h中。到時寫can的時候別忘了。這里我們再來找一個函數就行stm32_spi1select。這個函數因為有片選的參與,所以我們特別說明,至于其他的設置模式,設置速率大家就自己去研究。這個函數我們還是需要追蹤,這下我們追蹤到的就是
,這里就行PX4的spi的片選了,后期的硬件的讀寫用到哦。這里面有三個參數
,端口、設備和片選。注意在PX4架構中對這些傳感器都是有標號的哦,具體的查找在這個文件中哦
,還是那個原則,找與V2相關的,這里再提一句與硬件相匹配的還有board.h文件這個有兩個文件一個是針對F4主控的一個是針對F1協處理器的里面有相關配置,比如晶振這塊就在里面還有相關端口的配置也在其中的。在這個文件中我們可以找到這個,看到沒都是進行標號的哦。
。在stm32_spi1select中有個片選
這些片選在文件中都是可以查到了,以后寫驅動的引腳控制就要在這個文件中寫了,便于維護。講到這里底層的SPI就差不多了。后面我們將會對SPI的具體硬件上的應用做一個解析。
如果文章有什么問題歡迎大家提出來,本人將在第一時間進行更改。如果大家有什么問題也可以隨時聯系我,可以QQ給我或者郵箱給我,如果大家比較急也可以打電話給我13530699165不過盡量不要打哦。
總結
以上是生活随笔為你收集整理的第三章 PX4-Pixhawk-SPI底层驱动解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 第二章 PX4-Pixhawk-RCS启
- 下一篇: 第四章 PX4-Pixhawk-MPU6