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

软件模拟 spi 时序有以下几个点需要注意:

  1. cs 使能后到第一个 sck 边沿需要延时。
  2. 最后一个sck 边沿到下一个 cs 需要延时。
  3. sck 的高电平和低电平本身需要维持时间。
  4. mosi 需要先把数据放上去,然后启动上升沿,然后延时 sck 高电平的时间。
  5. 在延时了 sck 高电平的时间后,读取 miso 的电平,然后启动下降沿,然后延时 sck 低电平的时间。

原文地址:https://www.cnblogs.com/ramlife/p/11743022.html

时间: 2024-08-10 17:10:53

使用软件模拟spi 时序时注意点的相关文章

IO SPI FLASH W25Q64B IO模拟SPI时序,使用FLASH 外设!W25Q64B

#include "iospiflash.h" /*******************************************//// This is a IOSPI (simulater by IO)// // Lib For Driver Flash W25Q64BV//*******************************************///sbit IOFLASHSPI_CS = P1^0;//sbit IOFLASHSPI_DIN = P1^3;/

STM32F10x_SPI(硬件接口 + 软件模拟)读写Flash(25Q16)

Ⅰ.写在前面 SPI(Serial Perripheral Interface)串行外设通信接口,主要实现设备(主从)之间的通信.硬件上由CS.SCK.MISO.MOSI四根通信线连接而成.关于SPI更多介绍不再详细描述,本文主要以STM32F103为主机.W25Q16为从机进行SPI通信实验. 本文将提供STM32硬件SPI.软件模拟SPI两实例工程代码供大家参考.掌握两种方式的区别. STM32硬件SPI:控制简单.运行效率高.使用方便等. 软件模拟SPI:移植性强,只需要简单修改接口,就能

模拟SPI协议时序

SPI是串行外设接口总线,摩托罗拉公司开发的一种全双工,同步通信总线,有四线制和三线制. 在单片机系统应用中,单片机常常是被用来当做主机(MASTER),外围器件被当做从机(SLAVE). 所以,在以下的介绍中,都是默认单片机是主机模式进行说明的. SPI总线相对于IIC总线,无总裁机制,无应答机制. SPI常用的四线制分别是,MISO(主入从出).MOSI(主出从入).SCK(同步时钟线).CS(片选线,也有是NSS). 主从机之间典型的接线方式如下所示: 按照时钟线的时钟极性(CPOL)和相

stm32软件模拟IIC读取PX4FLOW光流传感器数据

这段时间在做全国光电设计大赛,用到了px4的px4flow光流传感器,用软件模拟iic读取数据不定期会导致px4flow死机,查了资料和光流的源码,发现这个光流用了stm32的硬件iic,所以对软件模拟iic的时序要求可能更高一点所以在原子哥的iic程序上做了修改,代码测验后已经不会死机,做个笔记,保存一下. 1 #include "myiic.h" 2 #include "delay.h" 15 16 //初始化IIC 17 void IIC_Init(void)

linux enc28j60网卡驱动移植(硬件spi和模拟spi)

本来想移植DM9000网卡的驱动,无奈硬件出了点问题,通过杜邦线链接开发板和DM9000网卡模块,系统上电,还没加载网卡驱动就直接崩溃了,找不到原因...刚好手上有一个enc28j60的网卡模块,于是就着手移植enc28j60的驱动. 其实移植enc28j60的驱动也十分简单,网上有现成的,只需要分配一些硬件资源即可. 由于我的内核版本老到掉牙,没有自带enc28j60的驱动,只能在网上找一个: enc28j60.c http://git.ti.com/ti-linux-kernel/ti-li

SPI总线协议及SPI时序图详解

SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议.SPI是一个环形总线结构,由ss(cs).sck.sdi.sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换. 上升沿发送.下降沿接收.高位先发送.上升沿到来

使用GPIO模拟SPI总线进行通信

下面给出了模拟SPI总线在模式1下进行读写的伪代码,用以说明如何使用GPIO实现SPI通信:     #define SS      252                     //定义SS所对应的GPIO接口编号       #define SCLK    253                     //定义SCLK所对应的GPIO接口编号       #define MOSI    254                     //定义SCLK所对应的GPIO接口编号       

I2C总线协议的软件模拟实现方法

I2C总线协议的软件模拟实现方法 在上一篇博客中已经讲过I2C总线通信协议,本文讲述I2C总线协议的软件模拟实现方法. 1. 简述 所谓的I2C总线协议的软件模拟实现方法,就是用软件控制GPIO的输入.输出和高低电平变化,来模拟I2C总线通讯过程中SCL.SDA的电平变化来实现的. 2. I2C总线的封装 每个处理器对应的GPIO操作都有差异,即使是同一款处理器,不同的人也会有不同的GPIO封装风格,就以我个人习惯用的GPIO方法为例来进行讲解.我习惯上将GPIO的组和位封装为一个结构体,这样使

GPIO模拟SPI

上次用gpio模拟i2c理解i2c协议,同样的,我用gpio模拟spi来理解spi协议. 我用的是4线spi,四线分别是片选.时钟.命令/数据.数据. 数据在时钟上升沿传递,数据表示的是数据还是命令由命令/数据线决定. 开始条件: void spi_start(void) { gpio_config(GPIO_CS, GPIO_OUTPUT); udelay(SPI_SPEED_DURATION); gpio_set(GPIO_CS, 0);/* start condition */ udela