搜索
bottom↓
回复: 3

求助:2个avr全双工SPI传输数据,硬件测试和仿真结果不一致

[复制链接]

出95入8汤圆

发表于 2016-5-29 13:46:05 | 显示全部楼层 |阅读模式
本帖最后由 zzsczz 于 2016-5-29 14:13 编辑

atmega16A 作为  spi master。通过 IO口 点亮 595驱动的 7段 LED,显示 发送和 接收的 数据,2个按钮 ,一个触发发送SPI数据并把数据+2,另一个增加数据值(+1但不发送)。

atmega328p作为 spi slave。     SPI传输中断中 采样AD3 ,在 SS 下降沿 (既 SPI使能但还没有传输数据时)更新SPDR。


2个AVR  单片机 采用 硬件SPI外设 连接 。  


仿真结果很好, spi master 可以显示 slave传回的数据,并显示 发送的数据。


下到真实硬件里面,spi master  显示 的 数据 混乱,表现为 : 在   应该显示 SPI SLAVE 发送数据的2个 7SEG管   ,           slave传回的AD采样数据 和 MASTER发送 的数据         交替显示,即SPI MASTER 触发SPI传输,若显示了AD采样数据,下次触发触发SPI传输则显本次SPI master 发送的数据    (    可能 SLAVE 更新SPDR 失败,下次SPI传输 当前 MASTER 发送的数据  )。


找了3周 不知道原因 ,请大伙看看 有啥问题。

环境 : PROTEUS 7.10 , AVR STUDIO 4.17


















本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

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

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

出95入8汤圆

 楼主| 发表于 2016-5-29 14:17:53 | 显示全部楼层
SPI slave 采集 3.3V 电压  参考 5V
一个字节  0x00 到 0xff表示 0到 5V ,3.3V 显示 AE AF都可以 。。。

初始态 MASTER发送  0,收到 0x00;
再发送 2 ,收到 0XAE;
发送 4 ,收到 0x00(第一次 发送的数据);
再发送 6, 收到 0XAE;
再发送8 ,收到 0X04; (第二次 发送的数据);

依次类推 。。。。

出50入0汤圆

发表于 2016-5-29 17:03:34 | 显示全部楼层
先调一个SPI设备,读写成功后在进行双机通讯

出95入8汤圆

 楼主| 发表于 2016-6-1 22:20:31 | 显示全部楼层


可以工作了

在 SPI SLAVE  的 中断SPI_STC_vect 中

1 读取 SPDR

       IOReg   = SPSR;
       IOReg   = SPDR;

2 再 修改SPDR

   即可




NOTE:
1 SPI MASTER  的 SS需要写代码控制  ;
2   SPI MASTER  在 数据被发送完成前,应避免写SPDR (否则,翻手册) ; SPI SLAVE 在接收一个字节后,若未能及时处理SPDR,新收到的数据会更新SPDR;



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-12 03:45

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

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