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
    +关注

    关注

    1629

    文章

    21736

    浏览量

    603428
  • 通信
    +关注

    关注

    18

    文章

    6032

    浏览量

    135995
  • SPI
    SPI
    +关注

    关注

    17

    文章

    1706

    浏览量

    91591

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

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

收藏 人收藏

    评论

    相关推荐

    请问FPGA同时连两片AMC7836时SPI通信是否会互扰?

    请教确认一下,当FPGA同时连两片AMC7836时,两片7836共用SPI总线,各有独立的片选,那么在对其中一片7836进行SPI通信时另一片7836的
    发表于 12-05 06:26

    采用Xilinx FPGA的AFE79xx SPI启动指南

    电子发烧友网站提供《采用Xilinx FPGA的AFE79xx SPI启动指南.pdf》资料免费下载
    发表于 11-15 15:28 0次下载
    采用Xilinx <b class='flag-5'>FPGA</b>的AFE79xx <b class='flag-5'>SPI</b>启动指南

    DS1302芯片与FPGA之间SPI通信原理

    本文通过以DS1302芯片为基础,介绍该芯片与FPGA之间SPI通信原理,详细描述硬件设计原理及FPGA SPI接口驱动设计。
    的头像 发表于 10-24 14:16 463次阅读
    DS1302芯片与<b class='flag-5'>FPGA</b>之间<b class='flag-5'>SPI</b>通信原理

    SPI总线的定义和特点

    SPI总线(Serial Peripheral Interface),全称为串行外围设备接口,是由Motorola公司提出并定义的一种同步、串行、高速的通信总线SPI
    的头像 发表于 09-03 14:05 853次阅读

    【GD32 MCU 入门教程】GD32 MCU 常见外设介绍(8)SPI 模块介绍

    串行外设接口(Serial Peripheral Interface,缩写为 SPI) 提供了基于SPI 协议的数据发送和接收功能, 可以工作于主机或从机模式。 SPI 接口支持具有硬件 CRC 计算和校验的全双工和单工模式。
    的头像 发表于 08-17 09:36 635次阅读
    【GD32 MCU <b class='flag-5'>入门</b>教程】GD32 MCU 常见外设<b class='flag-5'>介绍</b>(8)<b class='flag-5'>SPI</b> 模块<b class='flag-5'>介绍</b>

    全国产T3+FPGASPI与I2C通信方案分享

    简单、可靠和灵活的数据传输。它广泛应用于各种传感器、存储设备、显示设备和通信模块等领域。适用控制命名传输和系统配置的应用场景。 图3 I2C通信总线 国产T3 + FPGASPI与I2C通信方案
    发表于 07-17 10:52

    如何快速入门FPGA

    快速入门FPGA可以遵循以下步骤: 理解FPGA基础知识: FPGA(Field Programmable Gate Array)即现场可编程门阵列,是作为专用集成电路(ASIC)领域
    发表于 04-28 09:06

    如何快速入门FPGA

    快速入门FPGA可以遵循以下步骤: 理解FPGA基础知识: FPGA(Field Programmable Gate Array)即现场可编程门阵列,是作为专用集成电路(ASIC)领域
    发表于 04-28 08:54

    Xilinx 7系列FPGA功能特性介绍

    Xilinx7系列FPGA由四个FPGA系列组成,可满足一系列系统需求,从低成本、小尺寸、成本敏感的大容量应用到最苛刻的高性能应用的超高端连
    发表于 04-22 10:49 5445次阅读
    Xilinx 7<b class='flag-5'>系列</b><b class='flag-5'>FPGA</b>功能特性<b class='flag-5'>介绍</b>

    FPGA与MCU的区别入门难度如何

    如题,目前我的MCU入门了,请问FPGA入门如何,需要怎么样去学习?
    发表于 03-16 07:16

    fpga芯片系列介绍

    FPGA芯片系列众多,不同厂商会推出各具特色的产品系列以满足不同的应用需求。以下是一些主要的FPGA芯片系列
    的头像 发表于 03-14 16:15 1290次阅读

    浅析i2c总线spi总线的区别

    SPI总线需要4根(最少)或更多的线路,包括主设备的主时钟(SCK),主设备发送数据的主输出(MOSI),主设备接收数据的主输入(MISO)以及用于片选(Chip Select)的信号线(SS)。
    发表于 02-02 16:24 3371次阅读
    浅析i2c<b class='flag-5'>总线</b>和<b class='flag-5'>spi</b><b class='flag-5'>总线</b>的区别

    蓝牙串口通讯总线——I2C/SPI/UART

    嵌入式工程师在做串口通信调试工作的时候,会经常用到I2C、SPI、UART这3条总线,I2C、SPI、UART这三种通信总线在嵌入式领域很常见,目前主流的SOC芯片都内置了这三种
    的头像 发表于 01-22 09:41 1659次阅读
    蓝牙串口通讯<b class='flag-5'>总线</b>——I2C/<b class='flag-5'>SPI</b>/UART

    IIC总线FPGA实现说明

    DE2_TV中,有关于寄存器的配置的部分,采用的方法是通过IIC的功能,这里对IIC总线FPGA实现做个说明。
    的头像 发表于 01-05 10:16 1068次阅读
    IIC<b class='flag-5'>总线</b>的<b class='flag-5'>FPGA</b>实现说明

    什么是APB协议/总线?APB总线入门

    上一篇文章简单讲解了什么是AMBA总线,简单来说,AMBA总线是一系列协议。定义了适用于不同场景的总线家族。今天我们就来将AMBA总线中最简
    的头像 发表于 01-02 11:37 3707次阅读
    什么是APB协议/<b class='flag-5'>总线</b>?APB<b class='flag-5'>总线</b><b class='flag-5'>入门</b>