王某人从0开始学习lorawan的笔记_2:最底层!SPI驱动层,Spi_t类与初始化

  

  SX1276的通讯接口是SPI接口,所有的SX1276的驱动函数都是通过SPI接口实现的。这个随笔针对spi_board.c源码文件

  在spi.h文件中,定义了如下spi_t类:

王某人从0开始学习lorawan的笔记_2:最底层!SPI驱动层,Spi_t类与初始化_第1张图片

 

   Spi_t 类中有5个变量:

  1. SpiId_t 枚举类型的 SpiId

   如上图所示,SpiId_t是预先定义好的枚举类型,用于选择 Spi1 或 Spi2 ,并配置 Spi 协议的参数

  2. Gpio_t 类型的 Mosi ,Miso , Sclk , Nss 

   定义了4个对象,用于确定初始化 SPI 4个通讯引脚

  针对SPI类的初始化如下:

王某人从0开始学习lorawan的笔记_2:最底层!SPI驱动层,Spi_t类与初始化_第2张图片

 

   使用这个初始化函数前,需要传递预先定义好 Spi_t 对象,SpiId号 ,4个 PinNames 类型的引脚号。

  值得注意的是:在源码中,官方定义了进入临界段和退出临界段函数

王某人从0开始学习lorawan的笔记_2:最底层!SPI驱动层,Spi_t类与初始化_第3张图片  王某人从0开始学习lorawan的笔记_2:最底层!SPI驱动层,Spi_t类与初始化_第4张图片

 

  在配置SPI的时候关闭中断,配置结束后再开启。

  初始化完成之后,可以进行读写,读写函数为  uint16_t SpiInOut( Spi_t *obj, uint16_t outData ) 同样也是针对Spi_t 类型对象

  

 

你可能感兴趣的:(王某人从0开始学习lorawan的笔记_2:最底层!SPI驱动层,Spi_t类与初始化)