![函数截图](https://images.gitee.com/uploads/images/2020/0831/104414_21d78719_6554663.png "屏幕截图.png")
目前使用一款SPI的通信,CPOL = 0, CPHA = 1。调试发现需要使用CPHA为0的情况下才能正常通信。
![正常通信的时序图](https://images.gitee.com/uploads/images/2020/0831/104617_2aa1edee_6554663.png "屏幕截图.png")
另:自行增加CS的控制脚,增加SPI初始化的操作。目的是可以将SPI的驱动框架与设备的驱动框架分开,在使用具体的通信设备时初始化相关的设备对应的SPI。
```
void bUtilSPI_Init(bUtilSPI_t spi)
{
bHalGPIO_Config(spi.mosi.port,spi.mosi.pin, B_HAL_GPIO_OUTPUT, B_HAL_GPIO_PULLUP);
bHalGPIO_Config(spi.miso.port,spi.miso.pin, B_HAL_GPIO_INPUT, B_HAL_GPIO_NOPULL);
bHalGPIO_Config(spi.clk.port, spi.clk.pin, B_HAL_GPIO_OUTPUT, B_HAL_GPIO_PULLUP);
bHalGPIO_Config(spi.cs.port, spi.cs.pin, B_HAL_GPIO_OUTPUT, B_HAL_GPIO_PULLUP);
}
```
```
#ifndef _SPI_CONFIG_DEFAULT
/* Default config for soft spi structure */
#define SPI_SOFT_CONFIG_MOSI_DEFAULT \
{ \
.port = B_HAL_GPIOB,/* config port define */ \
.pin = B_HAL_PIN15, /* config pin define */ \
}
#define SPI_SOFT_CONFIG_MISO_DEFAULT \
{ \
.port = B_HAL_GPIOB,/* config port define */ \
.pin = B_HAL_PIN14, /* config pin define */ \
}
#define SPI_SOFT_CONFIG_CLK_DEFAULT \
{ \
.port = B_HAL_GPIOB,/* config port define */ \
.pin = B_HAL_PIN13, /* config pin define */ \
}
#define SPI_SOFT_CONFIG_CS_DEFAULT \
{ \
.port = B_HAL_GPIOB,/* config port define */ \
.pin = B_HAL_PIN12, /* config pin define */ \
}
#define SPI_SOFT_CONFIG_DEFAULT \
{ \
SPI_SOFT_CONFIG_MISO_DEFAULT, \
SPI_SOFT_CONFIG_MOSI_DEFAULT, \
SPI_SOFT_CONFIG_CLK_DEFAULT, \
SPI_SOFT_CONFIG_CS_DEFAULT, \
0, /* GPOL */ \
1, /* GPHA */ \
}
#endif
该默认宏可以使用者修改对应的SPI引脚号,SPI初始化时可以使用如下:
bUtilSPI_t spi2 = SPI_SOFT_CONFIG_DEFAULT;
```