打印
[技术问答]

NUC029LAN的SPI

[复制链接]
1622|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
NUC029LAN的SPI,做为主机模式时,必须使用SPI_SS信号线吗,能不能使用其他IO口。想用一个SPI驱动多个外设
沙发
huangcunxiake| | 2017-2-6 11:03 | 只看该作者

      
一般是这么连的。也有直接用三根的。

使用特权

评论回复
板凳
huangcunxiake| | 2017-2-6 11:21 | 只看该作者

      

1103121622bd84a196f3b13cf1.jpeg (72.6 KB )

1103121622bd84a196f3b13cf1.jpeg

使用特权

评论回复
地板
huangcunxiake| | 2017-2-6 11:24 | 只看该作者
  上图只是对 SPI 设备间通信的一个简单的描述, 下面就来解释一下图中所示的几个组件(Module):

       SSPBUF, Synchronous Serial Port Buffer, 泛指 SPI 设备里面的内部缓冲区, 一般在物理上是以 FIFO 的形式, 保存传输过程中的临时数据;

       SSPSR, Synchronous Serial Port Register, 泛指 SPI 设备里面的移位寄存器(Shift Regitser), 它的作用是根据设置好的数据位宽(bit-width) 把数据移入或者移出 SSPBUF;

       Controller, 泛指 SPI 设备里面的控制寄存器, 可以通过配置它们来设置 SPI 总线的传输模式.

        通常情况下, 我们只需要对上图所描述的四个管脚(pin) 进行编程即可控制整个 SPI 设备之间的数据通信:

        SCK, Serial Clock, 主要的作用是 Master 设备往 Slave 设备传输时钟信号, 控制数据交换的时机以及速率;

        SS/CS, Slave Select/Chip Select, 用于 Master 设备片选 Slave 设备, 使被选中的 Slave 设备能够被 Master 设备所访问;

        SDO/MOSI, Serial Data Output/Master Out Slave In, 在 Master 上面也被称为 Tx-Channel, 作为数据的出口, 主要用于 SPI 设备发送数据;

        SDI/MISO, Serial Data Input/Master In Slave Out, 在 Master 上面也被称为 Rx-Channel, 作为数据的入口, 主要用于SPI 设备接收数据;

        SPI 设备在进行通信的过程中, Master 设备和 Slave 设备之间会产生一个数据链路回环(Data Loop), 就像上图所画的那样, 通过 SDO 和 SDI 管脚, SSPSR 控制数据移入移出 SSPBUF, Controller 确定 SPI 总线的通信模式, SCK 传输时钟信号.

使用特权

评论回复
5
huangcunxiake| | 2017-2-6 11:34 | 只看该作者
我也是对spi协议了解一点点。spi协议按照使用的方式可以分为三线制和四线制,主要是区分于一对一和一对多的通信。
使用spi协议主要的难点是设置时钟和相位,这两个是最重要的吧,你把这两者理解了,使用时没有问题的。看到你是采用模拟的,那就不需要知道的那么多,模仿其时序就行,时序就是spi实现数据通信的顺序,这样理解了吧。
至于发送地址,貌似不是spi的因素吧,是你的硬件中需要一个确切的地址,比如某个寄存器需要到某个指定的地址去或是cpu需要一个准确的地址执行。

使用特权

评论回复
6
huangcunxiake| | 2017-2-6 11:42 | 只看该作者

使用特权

评论回复
7
chinanidaye|  楼主 | 2017-2-6 13:26 | 只看该作者

你的回复很专业,可惜不是我所需要的。

请针对NUC029LAN进行回复

使用特权

评论回复
8
huangcunxiake| | 2017-2-6 13:50 | 只看该作者
下载了这个手册来给你针对一下。



在主机模式,每一个SPI控制器可以通过从机选择引脚SPISSx驱动一个片外的从机设备。在从机模式,片外主机设备通过SPISSx输入引脚驱动从机选择信号到SPI控制器。在主机/从机模式,从机选择信号的有效电平可以在 SS_LVL(SPI_SSR[2]) 位设置为低有效或高有效,SS_LTRIG(SPI_SSR[4]) 位决定从机选择信号SPISSx是电平触发还是边沿触发。触发条件的选择取决于连接的从机/主机设备的类型。

使用特权

评论回复
9
huangcunxiake| | 2017-2-6 13:51 | 只看该作者
根据上面的描述,我觉得不用那个单独的引脚也是可以的,就是可以通过GPIO的高低电平的方式来实现目标从机的选择。

使用特权

评论回复
10
huangcunxiake| | 2017-2-6 13:57 | 只看该作者
如果只用三线模式,那就是点对点了。。

使用特权

评论回复
11
huangcunxiake| | 2017-2-6 13:58 | 只看该作者
三线的模式下实际上就可以利用那个SS管脚,其实我觉得如果你通过其他的IO来做,还是可以实现多机通信的。
当NOSLVSEL(SPI_CNTRL2[8])位被软件置1使能从机3线模式时,在从机模式下SPI控制器可以在
没有从机选择信号下工作。NOSLVSEL(SPI_CNTRL2[8])位仅在从机模式下有效。在与一个主机通
讯时,仅需要三个管脚,SPICLK, MISO和MOSI。SPISS脚可以配置成一个GPIO。

使用特权

评论回复
12
huangcunxiake| | 2017-2-6 14:10 | 只看该作者
部分封装上可以通过这SPISSx,其中x为0或者1,也就是默认的自动选择控制可以控制2个从机设备,如果你需要三个或者更多,可以关闭这个自动选择功能设置成三线模式,通过GPIO的软件选择功能实现从机选择。

使用特权

评论回复
13
chihe0993| | 2017-2-6 16:25 | 只看该作者
谢谢,下载看下。

使用特权

评论回复
14
643757107| | 2017-2-6 22:19 | 只看该作者
上面将的方法能用不

使用特权

评论回复
15
mintspring| | 2017-2-7 13:17 | 只看该作者
觉得上面讲到的很有道理,以前都是点到点的传输,没想过这么多,如果那个SS是选择用,绝对可以通过自定义一个函数来控制的。

使用特权

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

本版积分规则

1

主题

1

帖子

0

粉丝