OpenEdv-开源电子网

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

SPI通信,数据发送时刻

[复制链接]

24

主题

208

帖子

0

精华

高级会员

Rank: 4

积分
714
金钱
714
注册时间
2014-4-8
在线时间
160 小时
发表于 2016-1-16 14:50:06 | 显示全部楼层 |阅读模式
5金钱
我用spi,做全双工通信,在寄存器使用上,用的都是移位寄存器。我想问一下各位大神,在第一个时钟时刻,为什么主机向从机发送数据,从机需要在第二个时钟时刻才回复数据,这个是不是和移位寄存器有关系,也就是说,从机需要得到完整的数据(8位或者是16位)之后,才能进行下一步动作。我仅仅就是这样想的,不知道还有没有其他的原因呢?
如果要是这样说的话,假设主机向从机发送3组数据,每一组数据都需要一个应答的话,是不是就需要4个时钟周期了

最佳答案

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

也不尽然,这要看主从方面的协议怎么定的了 比如nRF24L01这个SPI从设备,它就规定,在CS有效的第一个字节就把自己的STATUS寄存器的值送出:
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-1-16 14:50:07 | 显示全部楼层
也不尽然,这要看主从方面的协议怎么定的了
比如nRF24L01这个SPI从设备,它就规定,在CS有效的第一个字节就把自己的STATUS寄存器的值送出:
QQ截图20160116161251.png

坚决不用寄存器,拒绝重复造轮子。
回复

使用道具 举报

58

主题

6294

帖子

1

精华

资深版主

Rank: 8Rank: 8

积分
11555
金钱
11555
注册时间
2014-4-1
在线时间
1317 小时
发表于 2016-1-16 16:02:52 | 显示全部楼层


一言难尽,先看图琢磨吧。
去年详细解答过这样的问题,前后用了一、两个小时。想学就找找看。


无标题.png



回复

使用道具 举报

24

主题

208

帖子

0

精华

高级会员

Rank: 4

积分
714
金钱
714
注册时间
2014-4-8
在线时间
160 小时
 楼主| 发表于 2016-1-16 16:05:28 | 显示全部楼层
xuande 发表于 2016-1-16 16:02
一言难尽,先看图琢磨吧。
去年详细解答过这样的问题,前后用了一、两个小时。想学就找找看。

这个图  我能看懂  您的这个图  对于我的问题而言  是一个时钟周期  好  我找一下以前的东西  谢谢您
回复

使用道具 举报

24

主题

208

帖子

0

精华

高级会员

Rank: 4

积分
714
金钱
714
注册时间
2014-4-8
在线时间
160 小时
 楼主| 发表于 2016-1-16 16:17:14 | 显示全部楼层
xkwy 发表于 2016-1-16 16:13
也不尽然,这要看主从方面的协议怎么定的了
比如nRF24L01这个SPI从设备,它就规定,在CS有效的第一个字节 ...

好  谢谢给我提供了另外的思路  我现在去看一下这个片子的datasheet  谢谢了
回复

使用道具 举报

6

主题

1097

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3571
金钱
3571
注册时间
2014-12-2
在线时间
365 小时
发表于 2016-1-16 16:22:15 | 显示全部楼层
不客气
回复

使用道具 举报

24

主题

208

帖子

0

精华

高级会员

Rank: 4

积分
714
金钱
714
注册时间
2014-4-8
在线时间
160 小时
 楼主| 发表于 2016-1-16 16:24:40 | 显示全部楼层
xkwy 发表于 2016-1-16 16:13
也不尽然,这要看主从方面的协议怎么定的了
比如nRF24L01这个SPI从设备,它就规定,在CS有效的第一个字节 ...

看完了  想想也对   确实是要看从机的信息   有些时序或者是信号什么的   是由从机自己决定的  不是由主机控制的    我现在用的这个东西有点像SIM900A   有点类似于回显的功能    但是也是在第二个时钟周期才给的数据   我现在还在找上面的那个大神所说的那个帖子  好吧  我没有找到   我的问题可以分成两个问题   谢谢您啊   我现在在找找我的第一个困惑的答案
回复

使用道具 举报

24

主题

208

帖子

0

精华

高级会员

Rank: 4

积分
714
金钱
714
注册时间
2014-4-8
在线时间
160 小时
 楼主| 发表于 2016-1-16 17:28:43 | 显示全部楼层
xuande 发表于 2016-1-16 16:02
一言难尽,先看图琢磨吧。
去年详细解答过这样的问题,前后用了一、两个小时。想学就找找看。

我没有找到您所指的那个帖子  如果您有时间的话  希望您简单说一下   谢谢  没有的话  也没有关系
回复

使用道具 举报

24

主题

208

帖子

0

精华

高级会员

Rank: 4

积分
714
金钱
714
注册时间
2014-4-8
在线时间
160 小时
 楼主| 发表于 2016-1-16 17:35:03 | 显示全部楼层
xuande 发表于 2016-1-16 16:02
一言难尽,先看图琢磨吧。
去年详细解答过这样的问题,前后用了一、两个小时。想学就找找看。

http://www.openedv.com/forum.php ... ght=spi%CA%B1%D0%F2
网址是这个
但是您所说的我都懂,还是刚才我说的,这只是对应我的所谓的一个时钟时刻。谢谢您
回复

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2016-1-16 17:41:27 | 显示全部楼层
本帖最后由 ricefat 于 2016-1-16 17:54 编辑

1.举个简单例子,我回答你的问题我必须要把你的话看完,获得所有内容,才能知道你问什么。电脑也是一样,收到完整指令才能做出正确反应。
2.指令都是人制定的,如果你规定0x01代表让从机回答问题1,而0x03回答问题2,那么收到第一位的时候你是无法判断该回答问题1和问题2。如果你回答错误,那这个通讯根本就是不可靠的。
3.SPI本身是一种硬件接口,硬件上设计就是至少以1字节为一个传输包。
4.二进制包含的信息由位数和值共同决定。一位只能传递0和1两个量,但是3位就可以传递8种值,只有足够的位数才能保证足够的信息传输
5.字节是目前二进制数字电路最基本的数据单位,可以说是一种习惯,一种数学逻辑的基本概念,也可以说是一种半导体电路设计的需要,。如果以后三态门或是量子数据能够有突破性进展,那么这个概念或许才会改变


回复

使用道具 举报

24

主题

208

帖子

0

精华

高级会员

Rank: 4

积分
714
金钱
714
注册时间
2014-4-8
在线时间
160 小时
 楼主| 发表于 2016-1-16 19:31:14 | 显示全部楼层
ricefat 发表于 2016-1-16 17:41
1.举个简单例子,我回答你的问题我必须要把你的话看完,获得所有内容,才能知道你问什么。电脑也是一样,收 ...

是,协议是死的,就像我们在打电话的时候,下意识的说“喂?”。我看到你的第三点就明白了。谢谢了。
至于时钟极性、时钟相位、msb或者是lsb、传输位数什么的,都是在datasheet上写的明明白白的。都是死的,人是活的,mcu就是活的了
谢了
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-22 05:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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