[AVR单片机] 用SPI实现两个CPU之间双向数据通讯问题

[复制链接]
4122|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应该能找到详细资料,我的资料也是这样找到的
 楼主| 大个子 发表于 2016-5-30 16:44 | 显示全部楼层
讽德诵功 发表于 2016-5-20 17:29
上传不了,不知道什么问题,楼主去谷歌搜索SPi应该能找到详细资料,我的资料也是这样找到的
...

谢谢费心!!!原因已经找到,可能是硬件问题,同样的程序,在这个板子上不通,但在其它的板子上正常。
编程思路:
主机:定时发送数据,同时接收从机数据,每发一个数据结束后等5us,等待从机接收数据并写好待发送数据,再发送下一个数据。
从机:中断接收数据,接收数据后接着给SPDR赋值,返回从机数据。
AVR说明文件中只说了一句SPDR=data;启动SPI传送,但没说主机还是从机,所以很困惑。从实际调试结果来看,这句是主机时才启动传送,而在从机时不会启动传送。
再次感谢!
NE5532 发表于 2016-6-7 11:04 | 显示全部楼层
SPI是主机控制总线,只有主机才能发起通讯,所以数据触发通讯只针对主机,从机是“被动”通讯。另外数据是双向的,AVR手册里那张图画得很好,说明了主机和从机之间实际上是“互相交换数据”,从这个层面上理解通讯就容易了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

17

主题

48

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部