spi通信如何写c语言,b_util_spi.c文件模拟SPI读写操作函数---bUtilSPI_WriteRead

![函数截图](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;

```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值