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

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

3天内不再提示

浅谈SPI总线通信接口及其协议

CHANBAEK 来源:落木青云 作者:落木青云 2023-03-22 16:11 次阅读

上篇内容我们介绍了IIC总线通信接口及其协议,这一篇文章我们介绍另一种项目开发中非常常见的通信接口——SPI总线。

SPI(Serial Peripheral Interface,串行外设接口)总线是摩托罗拉公司设计的一种同步串行通信接口。 和IIC总线一样,它也分主机和从机,一个主机也可以接多个从机,但从机没有地址之分,它们是通过主机的硬件选择来确定哪个设备与主机通信,每个设备有两个数据端口,即输入、输出端口,通常情况下它包含4根通信引脚,在某些特殊情形下也可以是3线甚至2线,即可以忽略片选信号或某根数据信号,当然具体情况根据电路应用而定!

SS/CS——片选信号端口

SCLK——时钟信号端口

MOSI——主出从入信号端口

MISO——主入从出信号端口

硬件接线图:

wKgZomQat-eAIAnKAAAtFEdxSh8591.jpg

硬件连接图

部分资料芯片手册中会使用SDO,SDI来定义两数据端口MOSI和MISO,两种说法本质都是一样的

wKgaomQat-aATIJcAAASOoN2MpQ291.jpg

SDO,SDI连线示意

相比于IIC总线,SPI总线协议更为简单,不需要验证地址,也没有校验信号,又因为拥有独立的输入输出端口,所以在信号传递方面它拥有更高的速率。

wKgZomQat-aARSQMAAJ8YELUXZA044.jpg

多机通信电路

通信协议

SPI总线中由于涉及到时钟信号极性(Cpol: Clock Polarity)和相位(Cpha: Clock Phase)的影响使得协议分为4种模式。

CPOL:即时钟的极性,通信的整个过程包含空闲状态和工作状态,如果SCLK在空闲状态是高电平,那么CPOL=1,如果是低电平,那么就是CPOL=0。

CPHA:即时钟的相位,在这里就是SCLK的跳变边沿,如果在SCLK信号的第一个跳变沿就开始数据传输则CPHA=0,否则若是在第二个边沿才开始数据传输则CPHA=1。

读起来还是有点拗口,看时序图会更直观一点:

wKgaomQat-eAauqdAAMdTOSvwPM371.jpg

时序图

当然这些不用记忆,你使用的时候根据具体的芯片手册的时序说明进行配置就好了,不要把简单的事情复杂化。心里有个概念就好,假如你是应届毕业生参加面试那保证自己能区分开来这几种模式就可以,很多毕业生连IIC和SPI是什么东西都不知道呢,因为教材里面不一定会介绍这些通信协议,51单片机教材里印象中好像除了串口通信外没有介绍其他的通信方式,即使有类似应用也没使用这些专业名称来说明,其他的很多都得是自己买块板子回来折腾才碰得到的。如果你是在校学生看看教材或者不妨问问你身边的同学试试。

一般情况下作为主机的单片机如果硬件接口具备SPI总线端口编程时直接根据对应寄存器配置为从机可以接受的模式使能该总线功能即可,若是普通不带SPI总线的单片机,那我们也简单,和上一篇中的模拟IIC通信一样,根据需要在程序中模拟出时序就好了。这里再次说明了读芯片数据手册的重要性,有的人或许芯片手册都不看,从网上找一个别人跑得通的代码就copy过去,或许可能刚好能用,也可能搞半天自己的芯片啥数据都读不出来,这是初学者大忌,所以学技术切莫急功近利,每一次的侥幸可能造成日后的大雷。

通信程序

SPI通信协议的程序使用起来比较灵活,它的应用的场合也比较多,具体的示例程序在后面的实际例子中再做介绍了。结合上一篇IIC的示例程序,今天的SPI协议程序应该脑海里应该也有思路了吧。

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

    关注

    33

    文章

    8575

    浏览量

    151012
  • 通信
    +关注

    关注

    18

    文章

    6024

    浏览量

    135949
  • 端口
    +关注

    关注

    4

    文章

    963

    浏览量

    32051
  • SPI总线
    +关注

    关注

    4

    文章

    103

    浏览量

    27584
  • IIC总线
    +关注

    关注

    1

    文章

    66

    浏览量

    20295
收藏 人收藏

    评论

    相关推荐

    3分钟理解通信协议SPI总线 #通信协议

    通信协议SPISPI总线总线/接口技术
    硬声课堂
    发布于 :2021年10月18日 10:18:55

    SPI总线协议通信原理及应用举例

    。  在点对点的通信中,SPI接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C系统要稍微复杂一些。  最后,
    发表于 11-08 15:31

    怎么使用FPGA实现SPI总线通信接口

    随着现代技术的发展,SPI接口总线已经成为了一种标准的接口,由于协议实现简单,并且I/O资源占用少,为此
    发表于 08-09 08:14

    SPI总线协议介绍及硬件设计资料分享

    typora-copy-images-to: typora_picture基于FPGA与MCU通信SPI协议设计1. SPI总线
    发表于 11-10 07:06

    SPI总线协议简介

    的。SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。SPI是一种高速的,全双工,同步的通信
    发表于 12-13 07:37

    基于PC/104 总线与CPLD 的SPI 接口设计

    本文根据SPI 同步串行接口通信协议,介绍了在CPLD 中利用VHDL 语言实现PC/104 总线扩展SPI
    发表于 05-30 09:28 41次下载

    SPI总线实现DSP和MCU之间的高速通信

    简述了SPI总线协议工作时序和配置要求,通过一个成功的实例详细介绍了使用SPI总线实现DSP与MCU之间的高速
    发表于 11-27 15:10 58次下载

    CAN总线通信协议的分析和实现 CAN总线通信协议及其实现方法

    CAN总线通信协议的分析和实现 CAN总线通信协议及其实现方法
    发表于 09-04 08:45 40次下载
    CAN<b class='flag-5'>总线</b><b class='flag-5'>通信协议</b>的分析和实现 CAN<b class='flag-5'>总线</b><b class='flag-5'>通信协议</b>以<b class='flag-5'>及其</b>实现方法

    串行外设接口SPI通信协议的应用

    SPI是串行外设接口(SerialPeripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片
    发表于 01-09 14:58 1866次阅读
    串行外设<b class='flag-5'>接口</b><b class='flag-5'>SPI</b><b class='flag-5'>通信协议</b>的应用

    嵌入式硬件通信接口协议中的串行通信接口-SPI

    本节继续讲嵌入式硬件通信接口协议中的另外一个串行通信接口-SPI。相比于UART串口
    发表于 02-05 11:35 1639次阅读
    嵌入式硬件<b class='flag-5'>通信</b><b class='flag-5'>接口</b><b class='flag-5'>协议</b>中的串行<b class='flag-5'>通信</b><b class='flag-5'>接口</b>-<b class='flag-5'>SPI</b>

    基于FPGA与MCU通信SPI协议设计

    typora-copy-images-to: typora_picture基于FPGA与MCU通信SPI协议设计1. SPI总线
    发表于 11-05 15:35 16次下载
    基于FPGA与MCU<b class='flag-5'>通信</b>的<b class='flag-5'>SPI</b><b class='flag-5'>协议</b>设计

    SPI协议

    目录SPI协议简介SPI物理层SPI协议SPI协议
    发表于 12-22 19:17 34次下载
    <b class='flag-5'>SPI</b><b class='flag-5'>协议</b>

    通信协议SPI

    STM32模拟SPI通信协议SPI的简介:SPI是串行外设接口的缩写,是一种高速的,全双工、同步的串行
    发表于 12-22 19:20 22次下载
    <b class='flag-5'>通信协议</b>:<b class='flag-5'>SPI</b>

    通信协议SPI

    一、SPI简介SPI(Serial Peripheral Interface)是串行外设接口的缩写,SPI是高速的,**全双工**、**同步**的串行
    发表于 12-22 19:33 6次下载
    <b class='flag-5'>通信协议</b>(<b class='flag-5'>SPI</b>)

    嵌入式硬件通信接口协议-SPI(一)协议基础

    /hDUK43s8naybJLvoE2UsoA 本节继续讲嵌入式硬件通信接口协议中的另外一个串行通信接口-
    发表于 01-12 17:48 10次下载
    嵌入式硬件<b class='flag-5'>通信</b><b class='flag-5'>接口</b><b class='flag-5'>协议</b>-<b class='flag-5'>SPI</b>(一)<b class='flag-5'>协议</b>基础