普通IO口模拟实现SPI通信及应用解析

来源:互联网 发布:linux网络编程书籍 编辑:程序博客网 时间:2024/06/04 17:45

根据SPI通信规范(具体可以参考“浅谈SPI总线”),与IO口模拟I2C类似,通过普通IO端口模拟也可以实现单片机(主设备)与从设备的SPI通信,其中使能信号CS在开始SPI通信前置低,在通信结束后置高,时钟线SCK通过IO口延时高低电平变化实现,MOSI,MISO根据SCK状态实现发送接收数据等,以下是相关代码

模拟SCK需要注意采用的延时需要根据从设备的特性来调整,延时时间不能小于从设备的最小SCK间隔时间,以LED驱动芯片HEF4894为例,在VDD为5V的情况下fclk(max)典型值为10MHZ,最小值为5MHZ,那么模拟SCK不应超过5MHZ,以下是HEF4894控制LED相关函数的代码

需要注意不同的从设备可能还会有一些特殊要求,例如HEF4894需要STR端口控制将shift register 的数据传到storage register,需要OE端口控制将storage register 的数据输出。
和采用IO口来模拟I2C通信一样,通过普通IO口模拟实现SPI通信一般仅用于单片机没有SPI模块的情况下,如果单片机本身具有SPI模块,还是应该通过配置单片机相应的寄存器来实现SPI通信



0 0
原创粉丝点击