打印
[牛人杂谈]

SPI接口简介

[复制链接]
641|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。

     SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可达到几Mbps。

     SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号:

(1)MOSI – 主器件数据输出,从器件数据输入
(2)MISO – 主器件数据输入,从器件数据输出
(3)SCLK – 时钟信号,由主器件产生
(4)/SS  – 从器件使能信号,由主器件控制



      在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。
      在多个从器件的系统中,每个从器件需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。



    SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK的下降沿上数据改变,同时一位数据被存入移位寄存器。
   
     SPI接口内部硬件图示:
         
     最后,SPI接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。
沙发
xinpian101|  楼主 | 2017-10-11 15:45 | 只看该作者
带有SPI接口的32BIT MCU——新唐M051系列选型指南

使用特权

评论回复
板凳
jiekou001| | 2017-10-11 16:36 | 只看该作者
有图有真相啊,学习学习这个,都是用的时候才看的。

使用特权

评论回复
地板
heisexingqisi| | 2017-10-11 21:52 | 只看该作者
CLK出不来是不是没有配置对、?

使用特权

评论回复
5
捉虫天师| | 2017-10-12 19:54 | 只看该作者
这个图应该是维基百科上的,之前学习的时候看到过,还有代码呢,我去找找。分享来。

使用特权

评论回复
6
捉虫天师| | 2017-10-12 19:55 | 只看该作者
/*
* Simultaneously transmit and receive a byte on the SPI.
*
* Polarity and phase are assumed to be both 0, i.e.:
*   - input data is captured on rising edge of SCLK.
*   - output data is propagated on falling edge of SCLK.
*
* Returns the received byte.
*/
uint8_t SPI_transfer_byte(uint8_t byte_out)
{
    uint8_t byte_in = 0;
    uint8_t bit;

    for (bit = 0x80; bit; bit >>= 1) {
        /* Shift-out a bit to the MOSI line */
        write_MOSI((byte_out & bit) ? HIGH : LOW);

        /* Delay for at least the peer's setup time */
        delay(SPI_SCLK_LOW_TIME);

        /* Pull the clock line high */
        write_SCLK(HIGH);

        /* Shift-in a bit from the MISO line */
        if (read_MISO() == HIGH)
            byte_in |= bit;

        /* Delay for at least the peer's hold time */
        delay(SPI_SCLK_HIGH_TIME);

        /* Pull the clock line low */
        write_SCLK(LOW);
    }

    return byte_in;
}

使用特权

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

本版积分规则

113

主题

1480

帖子

1

粉丝