打印

关于一主多从的SPI通信问题

[复制链接]
5066|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
bethel|  楼主 | 2008-2-19 23:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
      主单片机和仆单片机以及NVRAM通信时,采用的是一主多从的方式。其中,以主单片机为主,NVRAM和仆单片机为从。NVRAM有SPI片选PIN脚,但是仆单片机没有SPI片选,采用的是GIO口模拟片选。
      主单片机和仆单片机通信时,可通过片选信号将NVRAM禁止,这样主单片机就和NVRAM断开。但是在主单片机和NVRAM通信时,当主单片机读NVRAM的数据时,NVRAM和仆单片机都会返回数据给主单片机,致使主单片机读到的数据不正确。请问,这个问题可以怎么解决?
      可以从软件或硬件方面采用什么解决方案呢?(最好是能从硬件上提出解决方案,因为软件编写时由于时序上的要求最好不要再修改了)。
                                                
      
      
    

相关帖子

沙发
stycx| | 2008-2-19 23:32 | 只看该作者

硬件上? 加个片选吧,没选中的时候把数据断了

使用特权

评论回复
板凳
bethel|  楼主 | 2008-2-19 23:36 | 只看该作者

仆单片机没有SPI片选啊

仆单片机没有SPI片选,目前用的I/O口模拟SPI片选,但是会出现上面介绍的问题啊。

使用特权

评论回复
地板
fsaok| | 2008-2-20 08:39 | 只看该作者

从单片机的讯号线加禁止

使用特权

评论回复
5
bethel|  楼主 | 2008-2-20 09:19 | 只看该作者

加三态门阵列可以么?

(1)加三态门阵列可以么?原来用作仆MCU的模拟CS作三态门阵列的选通端。
(2)或者加上一个处于饱和与截止状态的三极管阵列,用原来用作仆MCU的模拟CS连接与该三极管的基极,集电极上拉电阻到高电平,发射极接总线CLK等信号。

使用特权

评论回复
6
armecos| | 2008-2-20 09:24 | 只看该作者

SPI程序编写注意事项

    。。。。。。
    SPI操作没有完全标准化,一些设备间的差异如下:
    1、许多设备的传输单位是8bit字节,也有些设备使用16bit;
    2、片选可能是高有效或者低有效。如果混合使用不同片选有效极性的设备,那么将会使事情变得复杂;
    3、时钟支持各种速率,从128K到20MHz或者更高。某些设备需要先用低速通信,然后获得时钟信息,再选择一个更高速率用于后续传输;
    4、数据传输之间,时钟无效。无效的时钟极性可能为高,也可能为低;
    5、数据可以在上升沿或者下降沿采样;
    6、一个设备可能需要额外的延时,例如:在片选有效和第一个时钟周期之间;
    7、某些设备包括若干个复杂的传输阶段,要求片选一直有效,这样就不能在传输间隙和其他设备进行快速通信了;
    8、一些设备,如MMC卡,在传输结束,片选无效的情况下仍然需要时钟,以便完成设备内部的某些操作。
    
    主机内部的时钟和数据信号通常使用专用硬件实现。替代的方案可以是bit-banging,那是其他串行总线技术经常使用的,如I2C。片选也可以使用专用硬件实现,但通常是由GPIO代劳。
    
    一个SPI传输包括以下阶段:
    1、在线程级别上锁定总线,确保同一时间只有一个线程在访问SPI总线。
    2、有效设备片选,收发数据。可能是一次传输,也可能是一系列传输。在一系列传输期间,片选保持有效不是必须的。
    3、可选的,在片选无效后继续产生一些时钟,用于某些设备完成操作。
    4、解除总线锁定,允许其他线程在连接到这个总线上的设备上执行SPI操作。
    。。。。。。

完整文档见:
SPI驱动程序设计

使用特权

评论回复
7
stycx| | 2008-2-20 12:19 | 只看该作者

5楼的方法1可以,2可能会影响其他器件工作

使用特权

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

本版积分规则

9

主题

49

帖子

0

粉丝