嵌入式常见的几种接口

嵌入式开发中,常见的外设通信接口/协议有SPI,I2C,UART三种,本文先分三个部分对SPI,I2C,UART进行介绍,最后对这三种协议进行比较。
 

1 SPI

1.1 SPI的简介

SPI(Serial Peripheral Interface):串行外围设备接口。SPI是一种高速的,全双工的,同步的通信总线。SPI没有定义速度限制,一般的实现通常能达到甚至超过10 Mbps,已知的有的器件SPI已达到50Mbps。

1.2 SPI接口的引脚

  • MOSI(Master Out Slave In):主设备数据输出,从设备数据输入
  • MISO(Master In Slave Out):主设备数据输入,从设备数据输出
  • SCLK(Serial Clock):时钟信号,由主设备产生,主从设备共用
  • CS/SS(Slave Select):从设备使能信号,由主设备控制,低电平有效

1.3 SPI的工作原理

  • SPI通过移位寄存器实现数据的交换
  • 每经历一个时钟脉冲,主设备和从设备同时发送接收一位数据(如上升沿发送数据,下降沿接收数据)。
  • 发送数据时,将移位寄存器中的数据左移一位,最高位发送出去;接收数据时,将数据补充到移位寄存器的最后一位
  • 当完成指定位数的数据发送或接收后,移位寄存器将数据存放到缓冲器中等待读取

1.4 SPI的四种工作方式

为了和外设进行数据交换,需要根据外设工作要求,设置SPI的时钟极性(CPOL)和时钟相位(CPHA)。CPOL和CPHA决定数据发送和接收的时序(注意:数据总是先发送后接收的)。

  • CPOL:时钟极性选择
    CPOL = 0 :SPI总线空闲为低电平
    CPOL = 1 :SPI总线空闲为高电平
  • CPHA:时钟相位选择
    CPHA = 0 :无相位延时
    CPHA = 1 :1/2个周期的相位延时

下表为SPI的四种工作模式选择

工作模式CPOL = 0CPOL = 1
CPHA = 0上升沿发送数据,下降沿接收数据下降沿发送数据,上升沿接收数据
CPHA = 1下降沿发送数据,上升沿接收数据上升沿发送数据,下降沿接收数据

下图为四种工作模式的时序图

?

2 I2C

2.1 I2C的简介

??I2C(Inter Integrated Circuit):内部集成电路。I2C是一种低速的,半双工的,同步的通信总线。IIC 数据传输速率有标准模式(100 kbps)、快速模式(400 kbps)和高速模式(3.4 Mbps)。

2.2 I2C接口的引脚

  • SDA:数据线
  • SCL:时钟线

2.3 I2C的工作原理

  • 开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据
  • 结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据

    在这里插入图片描述

  • 数据传输:SCL为高电平时,若SDA保持稳定,那么SDA传输一位数据
  • 数据改变:SCL为低电平时,SDA线改变想要传输的一位数据
  • 应答信号:接收数据的IC在接收到数据后,向发送数据的IC发出特定的低电平脉冲,表示已经收到数据;发送数据的IC在发送数据后,等待接收数据的IC发出应答信号,根据实际情况做出是否继续传递信号的判断(注意:只有应答信号是从设备发送,其他信号都是主设备发送)

    在这里插入图片描述

2.4 I2C的通信过程

  • Master发送START
  • Master发送数据,等待ACK
  • Slave发送ACK
  • Master发送STOP

?

3 UART

3.1 UART的简介

??UART(Universal Asynchronous Receiver/Transmitter):通用异步收发传输器。UART是一种低速的,全双工的,异步的通信总线。UART的数据传输速率有9600bps,115200bps等等。

3.2 UART接口的引脚

  • VCC:供电端,若两设备独立供电,则不需要连接
  • TX:发送数据端,要接对面设备的RX
  • RX:接收数据端,要接对面设备的TX
  • GND:保证两设备共地(必须要接)

3.3 UART的传输格式

  1. 空闲位:当总线处于空闲状态时信号线的状态为高电平
  2. 起始位:发送一个低电平信号,表示开始传输数据
  3. 数据位:可以是5~8位的数据,一般都是8位。先发送最低位,最后发送最高位。(I2C和SPI先发送最高位,最后发送最低位)
  4. 奇偶校验位:数据位传送完成后,要进行奇偶校验。分为无校验,奇校验,偶校验
    ?- 无校验(no parity)
    ?- 奇校验(odd parity):如果数据位中’1’的数目是偶数,则校验位为’1’,如果’1’的数目是奇数,校验位为’0’
    ?- 偶校验(even parity):如果数据为中’1’的数目是偶数,则校验位为’0’,如果为奇数,校验位为’1’。
  5. 停止位:数据的结束标志。可以是1位、1.5位、2位的高电平。

下图为UART数据传输格式

在这里插入图片描述

4 SPI、I2C、UART的区别与联系

SPI、I2C、UART都是常见的通信协议,目前主流的芯片都内置了这些通讯协议的控制器。同样,各种传感器、蓝牙模块、WIFI模块也都兼容这三种通信方式的一种或几种。我们可以根据外设拥有的通信方式和几种通信方式的特点选择合适的通信方式。

4.1 使用场景

  • I2C,SPI主要是CPU与其他芯片(如Flash等)的通信方式
  • UART主要是CPU与CPU之间的通信方式

4.2 传输速度

  • 同步:低速情况下,使用I2C合适,如果速度快一些,则一般都要使用SPI
  • 异步:使用UART传统的传输速度一般在115200bps或以下

4.3 硬件开销

  • SPI有4根线,可以挂多个从设备,但是在挂多个从设备时,主设备端还需要做一个n选1的译码器,用于选择将要访问的从设备,因此,主设备上的管脚需求比较多;SPI总线在只有一个从设备时,只要用到SCK,SDO,SDI这三根线,此时选择SPI比I2C总线占优
  • I2C有2根线,可以挂多个从设备,对从设备的选择直接依靠协议完成,无需增加物理连线
  • 一般情况下,当一块电路板上有多个从设备时,往往选用I2C而非SPI,因为SPI增加了额外硬件开销以及电路板走线

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/185095.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SAP S/4HANA 中的业务合作伙伴概念

原文地址:https://blogs.sap.com/2023/07/16/business-partner-concept-in-sap-s-4hana/ 1.1 什么是业务合作伙伴? 在 SAP S/4 HANA 中,业务合作伙伴是维护业务合作伙伴、客户和供应商(以前称为供应商)主数据的主…

超级利器!Postman自动化接口测试让你提升测试效率,节省宝贵时间!

Postman自动化接口测试 该篇文章针对已经掌握 Postman 基本用法的读者,即对接口相关概念有一定了解、已经会使用 Postman 进行模拟请求的操作。 当前环境: Window 7 - 64 Postman 版本(免费版):Chrome App v5.5.3 …

Airtest进阶使用篇!提高脚本稳定性 + 批量运行脚本!

一、背景 今天彭于晏为大家分享Airtest进阶使用篇,主要包含两块的内容: 提高脚本稳定性批量运行脚本生成测试报告 二、提高脚本稳定性 1、添加全局配置: #全局设置 ST.FIND_TIMEOUT10 #设置隐式等待时长,默认识别图片时间是30秒,可改为…

C++:C++11新特性---右值引用

文章目录 初始化方式显示查看类型initializer_listdecltype左值引用和右值引用move左右值引用的场景 万能引用和完美转发 本篇总结C11新特性 初始化方式 C11对参数列表的初始化有了更明确的定义,可以这样进行定义 // 列表初始化 void test1() {// 旧版本int x 0…

免费WordPress站群插件-批量管理站群的免费软件

WordPress站群插件:让文章管理如丝般顺滑 在众多网站建设工具中,WordPress一直以其简便易用、丰富的插件生态而备受青睐。对于站群管理者而言,如何高效地更新、发布和推送文章是一项不可忽视的任务。本文将专注分享一款WordPress站群插件&am…

Audacity降噪消除视频中杂音

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 优质专栏:多媒…

QListWidget中自定义widget大小自适应

背景: QListWidget中的item,可以添加自定义的widget。 但是怎么去调整widget的大小呢? 参考:QT QListWidget的添加与删除,滚动条显示或隐藏,判断是否滑到顶部或底部,并使QListWidgetItem自适…

MT4交易平台优缺点详解,教你如何做出最佳交易决策

随着互联网金融行业的不断发展,越来越多的投资者开始选择使用MT4交易平台进行外汇交易。那么MT4交易平台到底有哪些优缺点呢?在使用MT4交易平台时如何做出最佳交易决策呢? 一、MT4交易平台的优点 1. 功能强大:MT4交易平台具有丰富的交易功能&#xff0…

Node.js【文件系统模块、路径模块 、连接 MySQL、nodemon、操作 MySQL】(三)-全面详解(学习总结---从入门到深化)

目录 Node.js 文件系统模块(二) Node.js 文件系统模块(三) Node.js 文件系统模块(四) Node.js 路径模块 Node.js 连接 MySQL Node.js nodemon Node.js 操作 MySQL Node.js 应用 Node.js 文件系统模块…

每日汇评:在美国通胀数据前,黄金多头变得谨慎起来

黄金价格在连续五天上涨后,周四早间稍作休息; 在个人消费支出通胀数据公布前,美元和美债收益率巩固了下行空间; 超买状况可能限制金价的上行空间,因为月底的资金流动可能占主导地位; 昨日亚盘交易时段&…

MySQL 使用命令

查询结果导出到文件 终端命令下直接导出 除了在mysql命令行下导出查询结果,还可以在终端直接导出查询结果到CSV文件中 mysql -uroot -p -e "select * from test" > xxx.csv如果导出结果中涉及到中文,可以使用--default-character-setutf…

【HDFS】ActiveNamenodeResolver#getNamespaces 方法调用点梳理

获取所有的注册在router里的active状态的集群。 /*** Get a list of all namespaces that are registered and active in the* federation.** @return List of name spaces in the federation* @throws IOException Throws exception if the namespace list is not* av…

子类拷贝构造函数会调用父类拷贝构造函数吗?

一. 编译器提供的默认子类拷贝构造函数会调用父类拷贝构造函数。 #include <iostream> #include <string> using namespace std;class Parent { public:Parent(string home_address "中国") : m_home_address(home_address) {cout << "调用…

文件上传的实现

前端准备: 使用表单进行文件上传 1. form的method属性提交方式: post 2. form 的enctype属性: enctype的默认值: application/x-www-form-urlencoded对表单数据进行url编码->对文本进行编码 中:(UTF-8)占3个字节-> url编码:每一个字节变成: %两位十六进制 类似于这种形…

学习笔记小结

redis-cluster集群 redis3.0引入的分布式存储方案 集群由多个node节点组成&#xff0c;redis数据分布在这些节点当中。 在集群之中分为主节点和从节点 集群模式当中&#xff0c;主从一一对应&#xff0c;数据的写入和读取与主从模式一样&#xff0c;主负责写&#xff0c;从…

C陷阱与缺陷——第3章 语义陷阱

1. 指针和数组 C语言中只有一维数组&#xff0c;而且数组的大小必须在编译器就作为一个常数确定下来&#xff0c;然而在C语言中数组的元素可以是任何类型的对象&#xff0c;当然也可以是另外的一个数组&#xff0c;这样&#xff0c;要仿真出一个多维数组就不是难事。 对于一个…

iframe

iframe学习 1.iframe是什么&#xff1f; a)iframe是html元素&#xff0c;用于在网页中内嵌另一个网页。 b)iframe默认有一个宽高,存在边界。 c)iframe是一个行内块级元素&#xff0c;可以通过display修改。 2.iframe元素属性有哪些&#xff1f; a)src : 指定内联网页的地…

[教程] 一文进阶Redis

Redis进阶 过期时间&#xff08;Expire&#xff09; Redis 的过期时间&#xff08;Expire&#xff09;功能是一种数据生命周期管理机制&#xff0c;允许为键设置一个过期时间。一旦达到该时间&#xff0c;键会自动被删除。这对于管理缓存数据特别有用&#xff0c;可以自动清理…

Mac电脑版程序创建工具 VMware InstallBuilder Enterprise mac最新

VMware InstallBuilder Enterprise 是一款功能强大、操作简单、跨平台支持的软件安装和部署工具&#xff0c;可以让开发者更加高效地创建和部署软件&#xff0c;并提供了丰富的功能和工具&#xff0c;适用于不同的用户需求和场景。 内置调试器 轻松排除应用程序安装过程中的故…

《LeetCode力扣练习》代码随想录——哈希表(两个数组的交集---Java)

《LeetCode力扣练习》代码随想录——哈希表&#xff08;两个数组的交集—Java&#xff09; 刷题思路来源于 代码随想录 349. 两个数组的交集 Set哈希表 class Solution {public int[] intersection(int[] nums1, int[] nums2) {Set<Integer> hashSetnew HashSet<>(…