搜索
bottom↓
回复: 20

SPI主从机通信:主机接收从机数据的疑问!!

[复制链接]

出0入0汤圆

发表于 2005-7-5 10:45:45 | 显示全部楼层 |阅读模式
主机发送数据时,即些SPDR时,就启动时钟,那么在主机接收从机发送来的数据时,时钟是怎样启动的呢?

小弟不才,看了好一会数据手册,还是没有搞明白,还请各位高手不吝指导,谢谢!!
-----此内容被coole于2005-07-05,16:31:37编辑过

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2005-7-5 12:14:19 | 显示全部楼层
从机可以启动数据发送吗?

从机相对于主机来说,不过就是一个移位寄存器而已,时钟信号还是主机发送的。

出0入0汤圆

 楼主| 发表于 2005-7-5 13:37:45 | 显示全部楼层
你的意思是说主机要主动读取才行,是这样吗?

可是主机怎么知道什么时候从机有数据给他啊?要主机定期查询吗?用中断吗?可是我不明白主机接收时怎么进入中断?希望再次给解答下,谢谢!!

出0入0汤圆

 楼主| 发表于 2005-7-5 16:43:16 | 显示全部楼层
另外,从机什么时刻能够进入中断?(看数据手册看了一头雾水)是在一个字节完全移出之后进入吗?(如果中断都使能的话)

出0入0汤圆

发表于 2005-7-5 18:56:50 | 显示全部楼层
要先看看SPI协议的资料,才能明白。



没人愿意回复一个不认真看书的人所提的问题。

出0入0汤圆

发表于 2005-7-6 02:08:44 | 显示全部楼层
【4楼】 HJJourAVR ,你也不要随意打击别人说别人不看书。能看懂还问大家?

SPI总线每发送一次完成,都会触发一个SPI中断,使用这种中断非常适合有大批量数据传送。你说的可能是只间歇性的数据传送。如果是这样的话,你也可以使用一个外部中断来通知主机。

没有深究,姑妄言之,姑妄听之

出0入0汤圆

发表于 2005-7-6 07:53:04 | 显示全部楼层
不是随意打击! 从楼主所提的问题的特点--多,基础---看来,可以说明:

1 没认真看书。

2 没认真做实验。



在UART/IIC/1write/SPI等常用的串行总线中,SPI是最简单的(对比AVR数据手册里面各种总线描述所用的篇幅就知道了),就是一个主机控制(主机发送时钟,同步通讯都是这样)的双8bit移位寄存器。



SPIF: SPI 中断标志:串行发送结束后(即每移位8bit,主从机的数据互换),SPIF 置位。若此时寄存器SPCR 的SPIE 和全局中断使能位置位,SPI中断即产生.



什么时候去读从机的数据,取决于从机的处理速度----SPI ROM可以在发完命令后马上读,SPI ADC则要在发完命令后等待ADC转换完成后再去读取数据----请参考SPI从设备的数据手册。



[师傅带入门,修_炼在个人] 别人的帮助固然是好,但个人的天分和努力才是最重要的。

出0入0汤圆

发表于 2005-7-6 07:58:37 | 显示全部楼层
另外从机还可以拉低ss从而变成主机,主动发数据

出0入0汤圆

 楼主| 发表于 2005-7-6 08:19:59 | 显示全部楼层
只因小弟天生愚钝,昨晚搞到一点多,不能说完全搞出来了,但收获还是有的。

谢谢各位老师的谆谆教诲,小弟日后定会更加虚心,努力学习!!

HJJourAVR说的好“[师傅带入门,修_炼在个人] 别人的帮助固然是好,但个人的天分和努力才是最重要的。”我没有什么天分,因此对我来说就只剩下努力和汗水了。(^_^)

出0入0汤圆

发表于 2005-9-2 16:21:07 | 显示全部楼层
我想跟高手们确实一件事:如果单片机设为从机时,是不是只能接收数据,不能发送数据呀?我做了个实验,结果好像就是这样的!

出0入0汤圆

发表于 2006-9-18 15:40:39 | 显示全部楼层
我做的SPI 主机M8发送 128分频 从机16接收 也是128分频  频率都是内部8M  但数据发送过程中会出现数据传输错误,偶尔会正确,发送端每发一次数据都会有适当的延时,接收端靠中断SS一直低电平。有哪位高手能稍微指点一下啊?

出0入0汤圆

发表于 2011-1-26 09:12:38 | 显示全部楼层
最近打算把AVR所有外设 都做一边。。。。

出0入0汤圆

发表于 2011-1-26 10:04:57 | 显示全部楼层
spi主机发起通信,可以设置发送完毕中断,也可以直接从MISO中读回数据。但请注意此时读回的是发送时从机中SPI缓存,如果从机没有事先存数据,读回的就是无用数据。从机不知道主机什么时候发数据,可以设置接收完毕中断,也可以设置片选脚去外部中断来检测主机的动作。。。具体协议可以自己搞。。。

出0入0汤圆

发表于 2011-1-26 14:51:51 | 显示全部楼层
spi数据通信:
1,三线方式,CLK,SDA,SIN;
2,主从机接线交错;时钟直连。
3,主从机发送接收SDA,SIN使用中断引脚;
4,通信协议自定;如中断后接收一字节是否本机地址;解协,回主机!
5,远距离通信信号要放大!实际使用中9600无任何问题;从机256。

出0入0汤圆

发表于 2011-1-26 15:08:19 | 显示全部楼层
回复【13楼】shmioy
spi数据通信:
1,三线方式,clk,sda,sin;
2,主从机接线交错;时钟直连。
3,主从机发送接收sda,sin使用中断引脚;
4,通信协议自定;如中断后接收一字节是否本机地址;解协,回主机!
5,远距离通信信号要放大!实际使用中9600无任何问题;从机256。
-----------------------------------------------------------------------

9600?   256?  不解!~

出0入0汤圆

发表于 2011-1-26 15:46:32 | 显示全部楼层
通信波特率9600,从机数量256台。

出0入0汤圆

发表于 2011-7-12 18:30:29 | 显示全部楼层
各位大侠,有研究过如何用从机发送一帧数据给主机吗?
主机控制时序,如果速度很高,可能在从机还没来得及送新数据时,已经发起了时钟,造成主机接收帧的错误

出0入0汤圆

发表于 2012-6-11 23:01:06 | 显示全部楼层
注意从机的手册也看看。。

出0入0汤圆

发表于 2013-8-19 21:02:51 | 显示全部楼层
菜鸟表示压力很大,,,

出0入0汤圆

发表于 2016-3-12 17:47:22 | 显示全部楼层
如果你使用的是硬件SPI接口,主机发送数据时候到MOSI,主机控制时钟,与此同时从机也在发送信号给主机MISO,如果主机接下来要读取从机数据,就要继续发数据,从而触发从机发数据给主机。
主要看主从之间的协议如何定义的。

出0入0汤圆

发表于 2016-3-29 22:49:37 | 显示全部楼层
本帖最后由 freeboyxd 于 2016-3-29 22:50 编辑

最近在测试用M8作主机并用通用端口经软件来模拟SPI,从机采用ATTINY44的USI实现,发现要想成功实现双向数据交换还真有点难
好像主机时钟在从机的1/4时可以成功通信,否则数据基本都是错误的,还没找到问题的原因啊!
”从机的手册“ 指的是什么啊?
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-12 04:04

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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