4287|5

4

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

SPI协议的一点问题 [复制链接]

在学习SPI的时候遇到了少许疑问,望各位大神能够指点一下。如下:
在使用SPI串行通信的时候,当主端SPI拉低了ss片选信号线,并且在时钟也产生的情况下,此时如果没有及时向SPI的数据移位寄存器中写入数据,那数据线MOSI上的电平会根据时钟的顺序被SPI从机作为数据接收么?
如果是的,那么在双方交互玩数据后如果没有及时将偏选信号线来高,那么线上数据也可能被误读或误写么?
谢谢!
此帖出自单片机论坛

最新回复

本帖最后由 huo_hu 于 2015-8-23 13:43 编辑 clk时钟已经产生,从机能否收到数据就因不同的spi设备来决定了,关闭无数据的clk时钟可以节省能量,持续产生clk可以减少响应时间,有些spi模块可以检测MOSI数据线的边沿跳变作为数据的起始条件,所以你的问题得视情况而定了.  详情 回复 发表于 2015-8-23 13:40
点赞 关注
 

回复
举报

1560

帖子

24

TA的资源

五彩晶圆(初级)

沙发
 
如果是用SPI模块的话,常见应该是将数据写入寄存器(或FIFO)后片选CS自动拉低,模块开始数据传输。当寄存器(或FIFO)中数据全部发送完毕后,片选CS自动拉高。
如果楼主CS先拉低,但没给数据,有可能不会工作,也有可能发送的是上一次数据,具体看SPI模块的设计。
此帖出自单片机论坛
 
个人签名这孩子,成熟的象征,理智的典范。
 

回复

4008

帖子

0

TA的资源

版主

板凳
 
本帖最后由 huo_hu 于 2015-8-23 13:28 编辑

spi协议里SS线用来确定主机身份,而不是什么片选信号,它用在多主机的情况下,如果是单主机则不存在主机身份切换的问题,这个时候SS可以当片选用.spi的基本原则之一是主机控制clk,所以身份确定后数据传输就不会有问题了.
多主环境里一个设备能否获得主机身份是看它能否拉低SS线来定的,所有设备SS线应当开漏输出,如果SS已经为低电平表示总线上已经有主机了不能获得主机身份,所有设备都遵从这个原则才可以实现多主机通信.
楼主要做多主机的spi通信吗?

此帖出自单片机论坛
 
 
 

回复

4008

帖子

0

TA的资源

版主

4
 
本帖最后由 huo_hu 于 2015-8-23 13:43 编辑

clk时钟已经产生,从机能否收到数据就因不同的spi设备来决定了,关闭无数据的clk时钟可以节省能量,持续产生clk可以减少响应时间,有些spi模块可以检测MOSI数据线的边沿跳变作为数据的起始条件,所以你的问题得视情况而定了.
此帖出自单片机论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

5
 
lonerzf 发表于 2015-8-23 10:28
如果是用SPI模块的话,常见应该是将数据写入寄存器(或FIFO)后片选CS自动拉低,模块开始数据传输。当寄存 ...

谢谢你的回复。
如果CS信号线被SPI模块自动管理,自然是最好不过了,这个时候也不用操心时序的问题。
但是在很多情况下,使用单片机来进行SPI通信,CS信号线由程序软件来控制,即像控制普通的IO电平一样来给出CS信号,这个时候时序就会比较蛋疼了。
此帖出自单片机论坛
 
 
 

回复

4

帖子

0

TA的资源

一粒金砂(初级)

6
 
huo_hu 发表于 2015-8-23 13:40
clk时钟已经产生,从机能否收到数据就因不同的spi设备来决定了,关闭无数据的clk时钟可以节省能量,持续产生cl ...

我现在是一对一的单片机SPI主从通信,没有做多机通信。
我在资料里面看到的情况是,当通信开始时,主机的CS线应该主动拉低标示通信数据传输的开始,在数据传输结束之后主动拉高来标示数据传输的结束。所给的程序例程(主机端输出数据),如下:
/*
SPI_FLASH_CS = 0;                                    
SPI_I2S_SendData(SPI1, TxData);         
SPI_FLASH_CS = 1;
*/
所以我比较疑惑的是,如果在这段时间时序如果不对,会不会导致另一个单片机(SPI从机)数据读取错误呢?
谢谢。
此帖出自单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表