0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA入门系列15--SPI总线介绍

e9Zb_gh_8734352 来源:FPGA技术联盟 作者:FPGA技术联盟 2021-03-04 16:41 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

本系列文章主要针对FPGA初学者编写,包括FPGA的模块书写、基础语法、状态机、RAMUART、SPI、VGA、以及功能验证等。将每一个知识点作为一个章节进行讲解,旨在更快速的提升初学者在FPGA开发方面的能力,每一个章节中都有针对性的代码书写以及代码的讲解,可作为读者参考。

16

第十六章:SPI

SPI简介

电子系统设计中,往往被IIC/SPI/UART等总线搞的晕头转向,本文详细介绍SPI总线的接口协议和应用。

SPI总线是一种同步串行外设接口,它可以使MCU/FPGA/DSP控制器与各种外围设备以串行方式进行通信。其具有通信速度快,同步设计以及控制协议简单等特点,是电子系统设计的常用选择之一。很多芯片的控制都提供SPI接口。

SPI 是英语 Serial Peripheral Interface 的缩写,顾名思义就是串行外围设备接口。是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,最早由Motorola提出的。由于其简单易用的特性,现在很多的芯片都集成了SPI通信协议。

SPI传输串行数据时首先传输最高位。波特率可以高达5Mbps,具体速度大小取决于SPI硬件。例如,Xicor公司的SPI串行器件传输速度能达到5MHz。

SPI flash 芯片应用十分广泛,在很多电子产品上面或多或少都有它的踪影,如手机数码、液晶显示器、机顶盒、电脑主板等。主要应用在EEPROM,FLASH,实时时钟AD转换器,还有数字信号处理器和数字信号解码器等,也是很多复杂芯片参数配置的常用接口。

SPI总线介绍

SPI 接口一般使用 4 条线通信,包括片选线(cs_n)、时钟线(sclk/sck)、输入数据线(sdi/miso) 和输出数据线(sdo/mosi):

SCLK:串行时钟线,由主设备产生;

MISO:主设备数据输入,从设备输出;

MOSI:主设备数据输出,从设备输入;

CS:从设备片选信号,由主设备控制。

0e61a438-7b3c-11eb-8b86-12bb97331649.png

其中CS是片选信号,可以预先规定其为高使能或者低使能有效时,对此芯片的操作才有效。这就允许在同一总线上连接多个SPI设备。

SPI接口在Master控制下产生的从器件使能信号和时钟信号,两个双向移位寄存器按位传输进行数据交换,传输数据高位在前,低位在后(MSB)。在SCK的下降沿数据改变,上升沿一位数据被存入移位寄存器,如图所示:

0efbd364-7b3c-11eb-8b86-12bb97331649.png

SPI总线通信特点

1.采用主-从模式(Master-Slave) 的控制方式

SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制从设备 (Slave). 一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选来控制多个 Slave 设备。

2.采用同步方式(Synchronous)传输数据

Master 设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的。

3.数据交换(Data Exchanges)

SPI设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个"发送(Transmitter)" 或者 "接收者(Receiver)". 在每个 Clock 周期内, SPI 设备都会发送并接收一个 bit 大小的数据, 相当于该设备有一个 bit 大小的数据被交换了。

0f3b1e0c-7b3c-11eb-8b86-12bb97331649.png

SPI FLASH读写介绍

对flash芯片的操作,一般包括对flash芯片的擦除,编程和读取,各大厂商的SPI flash芯片都大同小异,操作命令基本是没什么变化的,当我们拿到一款芯片,要特别注意芯片的容量,操作分区等。

其实,无论是对芯片的擦除,编程还是读取操作,我们大致可以按照以下的套路来:写命令---写地址---写(读)数据。正如以下的时序图一样清晰明了,我们先把片选信号拉低,再依次写指令,地址和数据,就可以对FLASH芯片进行操作。

0f75a6bc-7b3c-11eb-8b86-12bb97331649.png

在第十七章中将通过SPI总线控制Flash为例讲解擦除的实现。

责任编辑:lq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1656

    文章

    22298

    浏览量

    630488
  • 通信
    +关注

    关注

    18

    文章

    6319

    浏览量

    139588
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1867

    浏览量

    99881

原文标题:FPGA入门系列15--SPI

文章出处:【微信号:gh_873435264fd4,微信公众号:FPGA技术联盟】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    FPGA实现基于SPI协议的Flash驱动控制芯片擦除

    本篇博客具体包括SPI协议的基本原理、模式选择以及时序逻辑要求,采用FPGA(EPCE4),通过SPI通信协议,对flash(W25Q16BV)存储的固化程序进行芯片擦除操作。
    的头像 发表于 12-02 10:00 1895次阅读
    <b class='flag-5'>FPGA</b>实现基于<b class='flag-5'>SPI</b>协议的Flash驱动控制芯片擦除

    SPI的缺点介绍

    的系统中,可能需要在软件级别实施额外的错误检查和处理过程。这可能涉及校验和、CRC(循环冗余校验)或数据包确认机制等技术,以确保可靠的数据传输。 可扩展性有限: 随着 SPI 总线中设备数量的增加,所需
    发表于 11-26 06:41

    RVMCU课堂「15」: 手把手教你玩转RVSTAR—SPI总线通信篇

    SPI是一种同步、高速、全双工的通信总线,全称为Serial Peripheral Interface(串行外设接口),由Motorola公司提出。在嵌入式系统设计时,常使用SPI接口连接一些传感器
    发表于 10-31 07:00

    GPIOB模拟spi的方法及lcd屏幕的接入

    越高,数据传输速率越快。由于spi接口较为简单,同时《RISC-V架构与嵌入式开发快速入门》书中也详细介绍过,在此原理部分介绍从略。 二、spi
    发表于 10-30 07:59

    深入剖析SPI协议

    SPI,全称(Serial Peripheral interface)是由摩托罗拉公司首先定义的协议,中文名为串型外围设备接口。SPI是一种高速全双工的总线协议。
    的头像 发表于 08-21 15:04 3582次阅读
    深入剖析<b class='flag-5'>SPI</b>协议

    使用nRFF54L15初始化一个SPI

    新建一个nrf5l15dk_nrf54l15_cpuapp.overlay 添加需要的内容 }; }; spi22_sleep_alt : spi22_sleep_alt { group1 {
    的头像 发表于 06-27 14:55 623次阅读
    使用nRFF54L<b class='flag-5'>15</b>初始化一个<b class='flag-5'>SPI</b>

    第十七章 SPI——读写串行FLASH

    本章介绍SPI协议,其为高速全双工通信总线,含物理层、协议层内容,还讲解W55MH32的SPI特性、初始化及DMA相关配置。
    的头像 发表于 06-19 17:06 1060次阅读
    第十七章 <b class='flag-5'>SPI</b>——读写串行FLASH

    看完这篇,SPI其实也很简单嘛(可下载)

    首先我们来简单介绍一下SPISPI是串行外设接口(SerialPeripheralInterface)简单来讲就是它一种高速的,全双工,同步的通信总线被各种
    发表于 03-26 14:29 2次下载

    对于一款新的BSP如何添加SPI驱动

    介绍SPI总线由开发,是一种,由四个IO口组成:CS、SCLK、MISO、MOSI;通常用于CPU和外设之间进行通信,常见的SPI总线设备有
    的头像 发表于 02-26 19:00 895次阅读
    对于一款新的BSP如何添加<b class='flag-5'>SPI</b>驱动

    【国产FPGA必备教程】——紫光同创FPGA图像视频教程,适用于小眼睛FPGA盘古全系列开发板

    案例、时序约束及收敛方法等,教程内容丰富,从入门到应用提高,覆盖紫光同创FPGA开发全流程,教程适用于小眼睛科技盘古系列、泰坦系列全开发套件。目前,小眼睛科技基于
    发表于 02-19 15:44

    SPI通信总线概述和Verilog实现

    SPI = Serial Peripheral Interface,是串行外围设备接口,是一种高速,全双工,同步的通信总线
    的头像 发表于 02-07 14:28 2004次阅读
    <b class='flag-5'>SPI</b>通信<b class='flag-5'>总线</b>概述和Verilog实现

    你知道什么是SPI吗?一文入门,简单易懂

    在现代电子设备中,数据传输的速度和效率至关重要。SPI(SerialPeripheralInterface,串行外围接口),作为一种同步串行数据总线,因其高效、全双工的特点而广泛应用于嵌入式系统
    的头像 发表于 02-05 17:22 8302次阅读
    你知道什么是<b class='flag-5'>SPI</b>吗?一文<b class='flag-5'>入门</b>,简单易懂

    I2C总线SPI总线的比较

    在现代电子系统中,微控制器与各种外设之间的通信是必不可少的。I2C和SPI是两种流行的串行通信协议,它们各自具有独特的特点和应用场景。 I2C总线 I2C是一种多主机、多从机的同步通信协议,广泛应用
    的头像 发表于 01-17 15:08 1770次阅读

    SH32F9001的SPI介绍与应用

    SPI(Serial peripheral interface)即串行外围设备接口,是由Motorola首先在其MC68HCxx系列单片机上定义的,基于高速全双工总线的通讯协议。被广泛应用于LCD
    的头像 发表于 12-31 17:04 2076次阅读
    SH32F9001的<b class='flag-5'>SPI</b><b class='flag-5'>介绍</b>与应用

    基于Xilinx的A7系列FPGA的CAN总线协议开发

    一、CAN总线协议介绍 CAN是 Controller Area Network 的缩写(以下称为 CAN ),是 ISO 国际标准化的串行通信协议。可以用来满足“多总线通信时,线束的数量
    的头像 发表于 12-21 14:49 3088次阅读
    基于Xilinx的A7<b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>的CAN<b class='flag-5'>总线</b>协议开发