打印

SPI协议问题

[复制链接]
1363|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dfsa|  楼主 | 2014-2-25 19:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
火箭球迷| | 2014-2-25 19:17 | 只看该作者
1 既然从机没有数据,那么读过来的数据就是无效的,不用管。
2 数据的读取是在发送读取命令后,后面跟着的就是有效数据,注意,只有连续发送空数据,从机才能返回数据。

使用特权

评论回复
板凳
baidudz| | 2014-2-25 19:26 | 只看该作者
主机不发时钟,从机就无数据

详细的还要看器件的DATASHEET...

使用特权

评论回复
地板
pkat| | 2014-2-25 19:31 | 只看该作者
SPI 仅有物理层和数据链路层协议。而你说的涉及到应用层协议了。

最简单的方法,主机在发送最后一个有效数据字节后,再发送一个 NULL 标志字节,例如 0x00.

当主机在从从机读取时,也发送这个 NULL 标志字节来驱动时钟。

从机在发送有效数据前,先发送一个不同于 NULL 标志的起始标志字节,例如 0xFF.

这样,当从机没有对 SPI 移位寄存器写入数据的情况下,主机收到的始终是 NULL 字节,看作从机忙。当收到起始字节时,就知道后面是有效数据了。

使用特权

评论回复
5
骗子的片子| | 2014-2-26 18:59 | 只看该作者
主机不发时钟,从机就无数据

使用特权

评论回复
6
angerbird| | 2014-2-27 21:24 | 只看该作者
SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便

使用特权

评论回复
7
angerbird| | 2014-2-27 21:25 | 只看该作者
在一个基于SPI的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通讯一次连续传送至少8位数据,而SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。

使用特权

评论回复
8
angerbird| | 2014-2-27 21:26 | 只看该作者
主设备通过对SCK时钟线的控制可以完成对通讯的控制。SPI还是一个数据交换协议:因为SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。

使用特权

评论回复
9
angerbird| | 2014-2-27 21:26 | 只看该作者
SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。

使用特权

评论回复
10
angerbird| | 2014-2-27 21:27 | 只看该作者
SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。

使用特权

评论回复
11
smilingangel| | 2014-2-28 00:13 | 只看该作者
楼上的解释的很清楚的,我参照了

使用特权

评论回复
12
smilingangel| | 2014-2-28 22:35 | 只看该作者
pkat 发表于 2014-2-25 19:31
SPI 仅有物理层和数据链路层协议。而你说的涉及到应用层协议了。

最简单的方法,主机在发送最后一个有效数 ...

这个解决办法还是蛮有效的,谢谢经验分享的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

282

主题

2404

帖子

2

粉丝