OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2787|回复: 3

想问一个思路,关于模拟SPI,并且和W25Q16通信

[复制链接]

33

主题

114

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2019-7-8
在线时间
177 小时
发表于 2020-6-8 15:29:13 | 显示全部楼层 |阅读模式
100金钱
本帖最后由 seraph15 于 2020-6-8 15:31 编辑

我已经完成了模拟SPI发送的部分,剩接收的部分,没有一个思路去实现,希望能帮忙一下,谢谢

发送部分虽然已经成功,但是SPI是从机完全听从主机的时钟,两者是息息相关的
我用了逻辑分析仪抓出数据,对照W25Q16的手册,调试出如下的结果
1.png
0x9F是读生产商ID(十进制为159)
执行这个命令后,W25Q16能透过MISO反馈信息给单片机
从而知道自己能否和W25Q16正常沟通

我目前的疑问
串口只要设定好波特率,你想什么时候发,对方想什么时候发,都随意
但是SPI,从机必须利用主机发送过来的时钟(SCK)来反馈数据(MISO)
感觉还要和发送的代码关联,才能达到接收从机数据的目的
我是用定时器实现的,下面是我定时器中断里面的代码(发送SPI,效果如上方逻辑分析仪的图)
2.png

模拟接收SPI,应该要和发送配合,是吧?我只需要一个思路,麻烦了,谢谢你们

最佳答案

查看完整内容[请看2#楼]

思路基本上实现了,也差不多知道该怎么做了,这帖先结了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

33

主题

114

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2019-7-8
在线时间
177 小时
 楼主| 发表于 2020-6-8 15:29:14 | 显示全部楼层
思路基本上实现了,也差不多知道该怎么做了,这帖先结了
回复

使用道具 举报

8

主题

206

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-4-6
在线时间
234 小时
发表于 2020-6-8 18:57:24 | 显示全部楼层
老哥,这说明了,SPI是同步的,串口是异步的。。同步通信必须要有一个时钟信号作为约定。所以不管你是发送还是接受,都需要主机提供这个时钟信号,但是串口是异步的,不存在这个时钟信号,
回复

使用道具 举报

33

主题

114

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2019-7-8
在线时间
177 小时
 楼主| 发表于 2020-6-8 23:14:59 | 显示全部楼层
xiedonghui258 发表于 2020-6-8 18:57
老哥,这说明了,SPI是同步的,串口是异步的。。同步通信必须要有一个时钟信号作为约定。所以不管你是发送 ...

是的,所以我在提问里面有提到(SCK)(MISO)
另外我可能用串口的比喻并不好,只是想表达,SPI必须依赖时钟,不像串口只要大家波特率相同即可

前辈,能提供一点思路吗?
是不是应该在下降沿的时候捕获数据?
还是另外的解决方法呢?
又或是有没有代码可以给小弟参考一下

我要模拟SPI的,但网上找的都是用nop来实现
这会占用资源,我想用定时器实现

谢谢你了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-14 06:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表