LoRaWAN_stack移植笔记(三)__SPI
stm32相关的配置
由于例程使用的主控芯片为STM32L151C8T6,而在本设计中使用的主控芯片为STM32L051C8T6,内核不一样,并且Cube库相关的函数接口及配置也会有不同,所以芯片的驱动所以做修改。
SPI 的配置
SPI使用的是STM32的硬件接口-SPI1 MOSI MISO
可以看到例程中,对SPI接口进行了再一层的封装,封装如下:
其中:
是原先的STM32Cube库的封装,在此基础上,将SPI的引脚也封装进了自定义的Spi_s结构体中。这样,查看结构体就可以看到SPI的所有情况。
SPI 初始化配置
初始化的函数体如下:
可以看到SPI的MOSI/MISO/SCLK脚都有看到,但是NSS脚看到,而是传了NC。
这是为什么呢?
可以看到程序里面有段话
其意思就是设置为NC就配置NSS 为软件控制,即NSS脚只做片选使用,x像GPIO一样控制他拉高拉低就可以控制片选的使能与否了。
还有一处,设置SPI的工作频率的
由于__ffs这个函数只有Cotex-M3以上内核才能调用,但是通过计算可知若传参为10000000,__ffs这个函数的返回值为0x03,所以可得obj->Spi.Init.BaudRatePrescaler = 8,即SPI_BAUDRATEPRESCALER_8
因为
所以此处设置Spi.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_8;
最后再调用至此,SPI的初始化就完成了。
SPI 读写接下来就是SPI的读写操作了,由于都是使用的Cube库,对寄存器的命名并没有什么不同,直接保留例程中的代码就可以了。
在使用上,需要注意NSS引脚的操作,在进行读写前进行使能,读写完毕之后失能。程序如下图所示:
至此,LoRaWAN例程中的SPI的移植就完成了。
邮箱地址:454626653@qq.com 欢迎咨询搭讪
您的留言或需求: