打印

ATxmega128A与DSP之间的SPI通信

[复制链接]
3417|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shangken|  楼主 | 2010-6-2 10:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请教高手指点一下迷津,最近小弟我在做一个SPI通信,是AVR的ATxmega128A与DSP之间的SPI通信,由于采样时钟有沿触发,差了半个周期,现在出现的问题是每接收一个数据都会有一位错位,比如我发的是0x7C(0111 1100),接收到的是0x3E(0011 1110).这问题让我很头疼,详细看了一下资料,我的AVR采集是在同一个时钟沿的,而DSP并不是在同一个沿触发的,它有差半个时钟周期.
      麻烦有高手的指点一下,小弟十分感激,在这里先谢过各位大哥了.

相关帖子

沙发
ayb_ice| | 2010-6-2 11:14 | 只看该作者
SPI共有4种方式,
可能是两边方式不同

使用特权

评论回复
板凳
shangken|  楼主 | 2010-6-2 12:29 | 只看该作者
问题就是现在这两边不同,有没有什么好的方案能让他们相同???
不知道,您有没有做过,或者有没有好的解决方法,指点一下......
谢谢

使用特权

评论回复
地板
shangken|  楼主 | 2010-6-2 12:32 | 只看该作者
在网上找了这个,但看不懂,他说的是什么,好像技术性很深.麻烦帮忙看一下.还有补充一点,AVR是主机,DSP是从机.

http://www.c-cnc.com/dz/news/news.asp?id=19120#
上面那个是我找的网址.
谢谢

使用特权

评论回复
5
ruyeecheung| | 2010-6-2 12:41 | 只看该作者
难道没有寄存器可以设置相位的模式吗?

使用特权

评论回复
6
shangken|  楼主 | 2010-6-2 13:00 | 只看该作者
有啊,但都共同一下特点,就是收发都是在同一时钟沿的.有四种模式.就是没有一种能配置有差半个时钟周期的.

使用特权

评论回复
7
IJK| | 2010-6-2 14:40 | 只看该作者
连上示波器,SPI的4种方式都试一下,应该就可以解决了

使用特权

评论回复
8
mbutterfly| | 2010-6-2 16:05 | 只看该作者
AVR单片机的SPI以前用的时候蛮难用的,实在不行可以用IO口模拟试试。不知道你用什么型号的DSP,但至少应该是16位的吧。

使用特权

评论回复
9
shangken|  楼主 | 2010-6-2 17:30 | 只看该作者
DSP是2407的

使用特权

评论回复
10
jimwu2011| | 2011-11-25 11:26 | 只看该作者
1# shangken
楼主,我也在写类似的程序,不过是DSP(TMS320x28035)为主机,ATXmega128为从机。有个问题想问下楼主,DSP的SPI DATA寄存器为16位,AVR为8位。只是在DSP中设置了发送位数就行了,还是要作其他的处理。

使用特权

评论回复
11
jimwu2011| | 2011-11-25 11:28 | 只看该作者
1# shangken
顺便问一下,楼主的DSP是什么型号的。

使用特权

评论回复
12
hotpower| | 2011-11-25 13:10 | 只看该作者
主机模拟是不会有问题的,从机就难了。四种模式16种组合,可能是可以的。

使用特权

评论回复
13
joyme| | 2011-11-25 17:35 | 只看该作者
有啊,但都共同一下特点,就是收发都是在同一时钟沿的.有四种模式.就是没有一种能配置有差半个时钟周期的.


收发在同一个时间沿肯定是错的,SPI不会那么傻,要么是上升沿写数据(发送数据),下降沿采样(读数据),要么反过来。设置同一个沿读写是不科学的,因为写数据建立需要一定时间,如果太快采样可能采样到错的数据。ATMEGA16里有个CPHA是决定相位的,CPOL是决定极性的,ATMEGA128应该一样的,LZ可以看看是否有用

使用特权

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

本版积分规则

24

主题

128

帖子

1

粉丝