版权声明:本文为博主原创文章,未经博主允许不得转载。
第三章 PX4-SPI底层驱动解析
下,里面有一个defconfig文件哦。打开这个文件你可以看到很多以CONFIG开头的定义,有的定义是y有的是not set。这些其实就是类似于C语言的define,定义一些宏,而y就代表yes也就是1。这里面你就可以看到
看到没,支持stm32的,
这些都是哦。里面还有定义了使用stm32的AD,DMA,IIC,SDIO,SPI等等。这里can是没有开启的大家到时候开发的时候可以开启
。这个文件里面定义了很多的东西哦,下次找不到一些定义可以的到这里面来找,这里还有定义串口的波特率
。这里要特别记住有几个定义,我这里先贴出来,
这两个是解析rcs的相关东西哦。
,至于defconfig的连接处在哪,那个这个就是nuttx下的工具会自动连接过去的,这个我们不用管,因为我也没去仔细去研究,如果大家有兴趣不妨去研究一下。
,剩下的大家自己去查看。
,这里我们具体的流程我们暂时不做详细描述,这一章节我们只对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不过尽量不要打哦。
http://blog.youkuaiyun.com/qq_18112493/article/details/69951086