60 spi通信协议

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种//
这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述

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


SPI设备没有设备地址, 多个设备连接时同一个控制器时,需要用不同的片选线(也就是不同的IO口)来区别要访问的设备。如下图:
这里写图片描述

/
参考一个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;
}
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值