欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

60 spi通信协议

程序员文章站 2022-07-09 12:54:29
...

SPI(Serial Peripheral Interface–串行外围接口), 由摩托罗拉公司发明.
SPI的接口组成:
数据线,每个时钟周期传输一位数据:
MOSI:  master output slave input(主机输出,从机输入)
MISO: master input slave output(主机输入,从机输出)
//两根数据实现全双工数据传输

时钟线:
SPICLK: 提供时钟信号,每个信号周期收发一位数据

片选线:
SPICS: 通常片选线低电平,所连的SPI设备就处于工作状态,如是高电平,则连接的SPI设备停止工作
////////////////////主机与从机的连接//////////

       master:                        slave:
    cs      <------------>            cs
    spiclk  <------------>            clk
    miso    <------------>            miso(so)
    mosi    <------------>            mosi

//注意不用交叉接
/////////////////// spi 的工作时序方式有4种//////////////////
60 spi通信协议

60 spi通信协议

60 spi通信协议

60 spi通信协议

//采样数据(就是接收端判断电平), 输出数据(发送端改变电平)
总结:
SPI它是在SPICLK边沿时(上升沿/下降沿)进行采样数据或者输出数据的.
CPOL是表示空闲时SPICLK电平, 0表示空闲时低电平, 1表示空闲时高电平.
CPHA是表示在SPICLK的第几个边沿进行采样数据的, 0表示第0个边沿时进行采样数据, 1表示在第1个边沿时进行采样数据.

////////////////////////////////////////////////////////////////
SPI设备没有设备地址, 多个设备连接时同一个控制器时,需要用不同的片选线(也就是不同的IO口)来区别要访问的设备。如下图:
60 spi通信协议

/////////////////////////////////////
参考一个spi接口的lcd屏51代码了解spi时序
这个屏只能接收主机发过来的命令和数据, 所以用不上MISO.

sbit cs        =P0^0;
sbit reset     =P0^1;
sbit rs        =P0^2;
sbit sda       =P1^5;//MOSI
sbit scl       =P1^7;//CLK

void  write_command(uchar c) //告诉屏要配置的寄存器地址
{
    cs=0;

    rs=0;
    bitdata=c;

    sda=bit7;scl=0;scl=1;
    sda=bit6;scl=0;scl=1;
    sda=bit5;scl=0;scl=1;
    sda=bit4;scl=0;scl=1;
    sda=bit3;scl=0;scl=1;
    sda=bit2;scl=0;scl=1;
    sda=bit1;scl=0;scl=1;
    sda=bit0;scl=0;scl=1;
    cs=1;      
}

void  write_data(uchar d) //告诉屏要设置的值
{
    cs=0;
    rs=1;
    bitdata=d;
    sda=bit7;scl=0;scl=1;
    sda=bit6;scl=0;scl=1;
    sda=bit5;scl=0;scl=1;
    sda=bit4;scl=0;scl=1;
    sda=bit3;scl=0;scl=1;
    sda=bit2;scl=0;scl=1;
    sda=bit1;scl=0;scl=1;
    sda=bit0;scl=0;scl=1;
    cs=1;
}