软件模拟spi的注意事项

前几天遇到了软件模拟spi的时候,读和写不一致的现象,后来仔细研究了一下,其实是时序性问题不对。

spi的有四种时序,硬件实现的时候,很简单,初始化后直接调用api即可。但是软件模拟就比较麻烦。

 

举例如下:

读时序如下:

 

 

 写时序如下:

 

 

 这两个结合起来就是下面四种spi模式的第四种

也就是模式2,如下所示:

值得注意的是:

按照上面的时序图,单片机应该是在上升沿输出数据(即写数据),

但是,读数据,看时序图好像是也上上升沿,其实是错误的,应该是下降沿读数据,即单片机在下降沿的时候采样丛集的数据。

网络参考:https://blog.csdn.net/ybhuangfugui/article/details/52068759

 

2.模拟SPI初始化

 

 

3.模拟SPI写函数(时序)

 

 

这种时序的写法在学习过51的朋友来看再熟悉不过了。

 

注意:

 

1、高字节在前,说以上面红色标记的的部分就是将高位先输出,依次移位输出。

 

2、在时钟的上升沿将数据输出,所以在“时钟-高”之前将数据输出。

4.模拟SPI读函数(时序) 

 

 

 

读时序和写时序原理类似,但还是存在差异。

 

注意:

 

1、高位先输出来(从机输出),所以,需要将读取的数据依次移向高位。

 

2、在时钟的下降沿读出数据,所以,我红色标记的部分可以看得出来,是在时钟为低之后才去读取数据。

 

posted @   wdliming  阅读(2928)  评论(0编辑  收藏  举报
编辑推荐:
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 对象命名为何需要避免'-er'和'-or'后缀
· SQL Server如何跟踪自动统计信息更新?
· AI与.NET技术实操系列:使用Catalyst进行自然语言处理
阅读排行:
· dotnet 源代码生成器分析器入门
· 官方的 MCP C# SDK:csharp-sdk
· 一款 .NET 开源、功能强大的远程连接管理工具,支持 RDP、VNC、SSH 等多种主流协议!
· 一步一步教你部署ktransformers,大内存单显卡用上Deepseek-R1
· 一次Java后端服务间歇性响应慢的问题排查记录
点击右上角即可分享
微信分享提示