硬件SPI是芯片的外设功能,而模拟的SPI是用GPIO实现的,
一般使用模拟SPI是由于芯片没有SPI外设,但是要与SPI芯片进行通讯时才会使用的
你看到的可能是比较老的51单片机了,现在的芯片大多都是在硬件 的SPI的
硬件spi是内部集成了spi通信接口 可以直接调用相应的寄存器和中断 占用mcu资源比较少
软件spi就是用io口模拟spi端口 可以是任意io口都可以模拟 但是占用muc资源比较多 速度相对来说也慢一些
硬件SPI的传输过程不需要CPU参与,节省CPU性能;
使用软件SPI方便程序移植,一些没有硬件SPI的MCU也可以使用
硬件的SPI,协议在单片机中已经设计好的,只要使用外设就可以了
模拟的要使用GPIO模拟SPI的时序,效率比较低,速度比较慢
模拟 spi 其实就是软件 spi ,使用 cpu 模拟 gpio 口反转实现的。只要有 gpio 就可以当作 spi 使用
硬件 spi 是个外设,硬件模块。设置好,自己产生 spi 逻辑电平
软件管脚模拟SPI就是软SPI有些单片机集成了这个 就是硬SPI了
如果你软件实现的非常漂亮,各种时间参数上都很标准。那么我想区别就在于所能接收的最大速率了。因为软件模拟需要中断,而处理器处理中断能力是有限的,肯定没有spi硬件控制器所能达到速度更快。其次就是软件模拟需要大量中断,对系统来说是个很大负担,能不用尽量不用。有硬件就不要用软件模拟。
硬件的SPI需要有对应硬件模块和接口支持,软件SPI只要芯片资源还能满足,接口也有空闲就可以实施(更好移植)
不过一般在实际应用中要优先采用硬件的。