1.前言
接上一篇“spi抽象/硬件spi”博客。上一篇文章主要描述spi总线抽象过程和使用方式,同时实现stm32f1硬件spi,及spi抽象接口函数的使用。对于一些特殊mcu没有硬件spi,或者硬件spi不够用的情况下,可以用io翻转方式模拟spi总线。模拟spi实现,只需将硬件spi部分替代即可,上层代码或者器件外设驱动程序无须更改,方便移植。模拟spi与之前一篇“i2c抽象/模拟i2c”中描述的模拟i2c抽象思路一致,对模拟spi通过函数指针的方式进行封装,将时序实现源码和应用程序分离,方便移植和更换模拟spi的io口。
2.模拟spi抽象
此部分实现源码为:spi_bitops.c spi_bitos.h
1)总线入口参数(设备指针)
与硬件spi的函数参数一致,主要是“struct spi_bus_device”的实例化。再看“struct spi_bus_device”参数如下:
struct spi_bus_device
{
int (*s