打印
[AVR单片机]

用SPI实现两个CPU之间双向数据通讯问题

[复制链接]
3794|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
大个子|  楼主 | 2016-5-17 18:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 大个子 于 2016-5-18 07:08 编辑

我的控制器要求64和32之间双向数据通讯,64做为主机,32做从机,数据由64传向32,同时接收32返回数据。
从单片机说明文件上,设定、主机传送数据没什么问题,但返回数据一直不对。
说明文件上SPDR=data;即启动SPI传送,可没说是主机还是从机?主机用SPDR=data;启动SPI传送数据,此时是双向数据传送,将主机的数据传送至从机,同时也将从机的数据传送至主机,可从机的数据什么时候赋值?
从机SPDR=data;能启动数据传送吗?一直没弄明白,资料说的也不清,请高手指点一下。

相关帖子

沙发
讽德诵功| | 2016-5-20 17:21 | 只看该作者
我最近也调试过SPI遇到过类似问题,给你个资料,写的比较详细

使用特权

评论回复
板凳
讽德诵功| | 2016-5-20 17:27 | 只看该作者
奇怪,怎么资料没传上

使用特权

评论回复
地板
讽德诵功| | 2016-5-20 17:29 | 只看该作者
上传不了,不知道什么问题,楼主去谷歌搜索SPi应该能找到详细资料,我的资料也是这样找到的

使用特权

评论回复
5
大个子|  楼主 | 2016-5-30 16:44 | 只看该作者
讽德诵功 发表于 2016-5-20 17:29
上传不了,不知道什么问题,楼主去谷歌搜索SPi应该能找到详细资料,我的资料也是这样找到的
...

谢谢费心!!!原因已经找到,可能是硬件问题,同样的程序,在这个板子上不通,但在其它的板子上正常。
编程思路:
主机:定时发送数据,同时接收从机数据,每发一个数据结束后等5us,等待从机接收数据并写好待发送数据,再发送下一个数据。
从机:中断接收数据,接收数据后接着给SPDR赋值,返回从机数据。
AVR说明文件中只说了一句SPDR=data;启动SPI传送,但没说主机还是从机,所以很困惑。从实际调试结果来看,这句是主机时才启动传送,而在从机时不会启动传送。
再次感谢!

使用特权

评论回复
6
NE5532| | 2016-6-7 11:04 | 只看该作者
SPI是主机控制总线,只有主机才能发起通讯,所以数据触发通讯只针对主机,从机是“被动”通讯。另外数据是双向的,AVR手册里那张图画得很好,说明了主机和从机之间实际上是“互相交换数据”,从这个层面上理解通讯就容易了。

使用特权

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

本版积分规则

17

主题

48

帖子

3

粉丝