打印

求助:如何实现两个MCU之间的spi接口双工通信

[复制链接]
10243|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zgq0901|  楼主 | 2008-4-22 22:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    请问各位,我用spi接口实现两片c8051f单片机的双工通信,我试编了一段程序,把其中一个作为主机,另一个作为从机,但只能实现主机向从机发送数据,而从机回给主机的数据主机却接收不到,不知道是什么原因,那位大侠曾经编过类似的程序,请指点一下,如果有例程当然最好了,多谢了

相关帖子

沙发
ljxh401| | 2008-4-23 09:18 | 只看该作者

在AVR中做过

分机发给主机的信息 是在主机发送数据给分机时候一并接收的
因为分机自己不产生时钟脉冲 你不会犯的是这么低级的错误吧

使用特权

评论回复
板凳
huangqi412| | 2008-4-23 11:29 | 只看该作者

发送的同时也在接受 ,应该没问题的啊

使用特权

评论回复
地板
zgq0901|  楼主 | 2008-4-23 22:56 | 只看该作者

我知道发送和接收是同时的

   发送和接收是同时的没错,但从机想发给主机的数据主机却接收不到,只要给从机的spidata写数据就会发生写数据冲突,今天又调了一下程序,发现从机给spidata赋值只能在发送完数据片选信号ss为高的时候才行,现在主机能接收数据了,但接收的数据总是右移了一位,比如从机spidata=0x40,主机接收的就是0x20,但主机发给从机的数据没错,这就又不知道怎么办了

使用特权

评论回复
5
zgq0901|  楼主 | 2008-4-25 10:57 | 只看该作者

哈哈,调试成功

    问题已经全部解决,主机接收数据移位是因为主机spi时钟速率设置不合适,只要把sck调一下就行了

使用特权

评论回复
6
gyt| | 2008-4-25 14:05 | 只看该作者

祝贺一下

使用特权

评论回复
7
mcu2051| | 2008-4-25 17:37 | 只看该作者

恭喜!

使用特权

评论回复
8
一起沉默h| | 2014-6-28 18:33 | 只看该作者
求代码,我现在也在做这个,单边传输都不稳定,双边就不知道怎么办了,求代码,就讲解啊

使用特权

评论回复
9
lxj19901115| | 2014-7-1 11:24 | 只看该作者
一起沉默h 发表于 2014-6-28 18:33
求代码,我现在也在做这个,单边传输都不稳定,双边就不知道怎么办了,求代码,就讲解啊 ...

双边传输的话,你可以加协议
比如主机这边,发送0xdd,0xdc,,,,,0xfe,0xff,这样告诉从机,这是主机向从机发送数据,从机可以不回数据,
如果要读取数据的话,那么就另外一个,0xec,0xee,,,,0xed,0xxx说明是主机想从机请求数据,
这样虽然速度会慢点,但是通信数据的正确性是可以保证的,
还有就是在针对特殊字符的时候,要定义转码规范,,

使用特权

评论回复
10
lxj19901115| | 2014-7-1 11:25 | 只看该作者
lxj19901115 发表于 2014-7-1 11:24
双边传输的话,你可以加协议
比如主机这边,发送0xdd,0xdc,,,,,0xfe,0xff,这样告诉从机,这是主机向从机 ...

我那方法,适合大批量数据,,

使用特权

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

本版积分规则

28

主题

52

帖子

0

粉丝