SPI是串行外设接口总线,摩托罗拉公司开发的一种全双工,同步通信总线,有四线制和三线制。

  在单片机系统应用中,单片机常常是被用来当做主机(MASTER),外围器件被当做从机(SLAVE)。

  所以,在以下的介绍中,都是默认单片机是主机模式进行说明的。

  SPI总线相对于IIC总线,无总裁机制,无应答机制。

  SPI常用的四线制分别是,MISO(主入从出)、MOSI(主出从入)、SCK(同步时钟线)、CS(片选线,也有是NSS)。

  主从机之间典型的接线方式如下所示:

  

  按照时钟线的时钟极性(CPOL)和相位(CPHA),将SPI总线区分成4种工作方式。

  具体区分如下:

  当时钟极性(CPOL==0)时:表示时钟线空闲状态为低电平;

  当时钟极性(CPOL==1)时:表示时钟线空闲状态为高电平;

  当时钟相位(CPHA==0)时:表示数据在时钟的第一个边沿输出;

  当时钟相位(CPHA==1)时:表示数据在时钟的第二个边沿输出;

  如上所示,CPOL和CPHA两两组合,可表示4种工作方式,假设配置CPOL=0,CPHA=0,表示数据线在空闲时处于低电平,主机数据在时钟的第一个边沿(也就是上升沿被输出),在第二个边沿(也就是下降沿被读入)。

  需要注意的是,主机的配置必须根据从机设计,例如,从机是上升沿输出,下降沿输入。那么,主机在配置的过程当中,必须采用上升沿输出,下降沿输入,即SPI0工作方式。

  采用I/O端口模拟SPI协议时序,可以很好地加深对于SPI总线的理解。

  SPI写时序模拟:

 void SPI_write(unsigned char dat)
{
unsigned char temp;
for(temp=0x80;temp!=;temp>>=)
{
SCK=;
if(temp&dat==)
{
MOSI=;
}
else
{
MOSI=;
}
SPI_delay(); //让MOSI稳定
SCK=;
}
}

  SPI读时序模拟:

 unsigned char SPI_read(void)
{
unsigned char temp;
unsigned char dat;
for(temp=0x80;temp!=;temp>>=)
{
SCK=;
SPI_delay(); //让SCK稳定
SCK=;
if(MISO==)
{
dat|=temp;
}
else
{
dat&=~temp;
}
}
return dat;
}

  

模拟SPI协议时序的更多相关文章

  1. 模拟IIC协议时序

    IIC是飞利浦公司开发的两线式串行总线,主要应用在单片机和外围电子器件之间的数据通讯. IIC总线优点是节约总线数,稳定,快速,是目前芯片制造上非常流行的一种总线,大多数单片机已经片内集成了IIC总线 ...

  2. SPI协议及IO模拟

    SPI协议 SPI协议网上资料比较多,但是也比较乱,当初在网上搜集的错误资料导致现在比较混乱. SPI协议资料比较正规的是: 1.SPI的规约协议英文文档,例如<摩托罗拉spi协议规范> ...

  3. 使用软件模拟spi 时序时注意点

    软件模拟 spi 时序有以下几个点需要注意: cs 使能后到第一个 sck 边沿需要延时. 最后一个sck 边沿到下一个 cs 需要延时. sck 的高电平和低电平本身需要维持时间. mosi 需要先 ...

  4. 模拟I2C协议学习点滴之原理框架

    I2C是一种串行总线协议. 目前几种常用的串行总线有UART.SPI和I2C协议.UART协议的总线只有两条,发送(Transmit:TX)和接收(Receive:RX),没有时钟信号,这就要求两位数 ...

  5. 利用C51单片机模拟SPI进行双机通信

    SPI协议简述 SPI,是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口.由Motorola首创.SPI接口主要应用在 EEPROM,FLASH,实时时 ...

  6. FPGA作为从机与STM32进行SPI协议通信---Verilog实现 [转]

    一.SPI协议简要介绍 SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用 ...

  7. [SPI]SPI协议详解

    转自:https://my.oschina.net/freeblues/blog/67400 1.SPI协议简介 1.1.SPI协议概括 SPI,是英语Serial Peripheral interf ...

  8. SPI协议及其工作原理详解

    一.概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控 ...

  9. 使用STM32的USART的同步模式Synchronous调戏SPI【usart模拟spi理论】

    [原创出品§转载请注明出处] 出处:http://www.cnblogs.com/libra13179/p/7064321.html 什么东西?? 我们先来看我们平常看到SPI的时序图(呵呵,要是忘记 ...

随机推荐

  1. js得到当前页面的url信息方法

    js得到当前页面的url信息方法:http://www.cnblogs.com/zuosong160522/p/5755615.html js获取url传递参数,js获取url?后面的参数:http: ...

  2. mysql 时间类型分类

    MySQL:MySQL日期数据类型.MySQL时间类型使用总结 MySQL 日期类型:日期格式.所占存储空间.日期范围 比较. 日期类型 存储空间 日期格式 日期范围------------ ---- ...

  3. 页面加载与iframe加载函数

    <head> <script> $(document).ready(function(){ alert("a");   var wait = documen ...

  4. <poj - 3268> Silver Cow Party 牛のpart 最短路径问题

    本题链接 : http://poj.org/problem?id=3268 题目大意:牛们要去聚会,输入N = 顶点数(牛场):M = 边(路)的数目: X = 终点 (聚会点).问题:求来回时间的最 ...

  5. C#用 excel 作为模板打印

    //打印操作,套打.打印.预览        enum PrintFlag        {            /// <summary>            /// 套打,只打印没 ...

  6. 【实验室笔记】serialport的readline()方法

    在最近的小项目中,单片机中断优先级的问题,串口发送到上位机的数据有时会出现发送的数据被中断打断的问题. 于是,在上位机机上就容易出现错误,原来读取的方法是read()的方法,反复修改发送数据的格式依然 ...

  7. select空间提交form表单传递参数

    如下, 到了 <form name="modelForm" action="/portal/defectinfo/toDefectPage?projectname= ...

  8. Java实现应用程序记住用户名、密码功能

    1.      从网上下载jquery.cookie.js,拷贝到应用程序中. 2.      登录页面(login.jsp)导入jquery.cookie.js <script type=&q ...

  9. jQuery EasyUI的使用入门

    jQuery EasyUI不是什么太高级的东西,就是用jQuery写了很多方法.定义了很多属性,通过调用这些方法.属性,可以达到一些特定的效果,然后我们再根据具体需求微调就好了.至少需要导入两个样式表 ...

  10. 简单的java程序通过对话框输出 计算加减乘除运算(运算方法可选择)

    import javax.swing.JOptionPane; // import class JOptionPane public class Addition { public static vo ...