硬件编程:硬件开发中常用的几种通信接口总结

在嵌入式系统中,板上通信接口是指用于将各种集成电路与其他外围设备交互连接的通信通路或总线。

以下内容为常用板上通信接口:包括I2C、SPI、UART、1-Wire:

I2C总线

I2C总线是一种同步、双向、半双工的两线式串行接口总线。这里,半双工的含义是指在任意给定的时刻,只有一个方向上是可以通信的。

I2C总线最早由Philips半导体公司于20世纪80年代研发面市。I2C最初的设计目标是为微处理器/微控制器系统与电视机外围芯片之间的连接提供简单的方法。

I2C总线由两条总线组成:串行时钟线SCL和串行数据线SDA。

SCL线——负责产生同步时钟脉冲。

SDA线——负责在设备间传输串行数据。

I2C总线是共享的总线系统,因此可以将多个I2C设备连接到该系统上。连接到I2C总线上的设备既可以用作主设备,也可以用作从设备。

主设备负责控制通信,通过对数据传输进行初始化/终止化,来发送数据并产生所需的同步时钟脉冲。

从设备则是等待来自主设备的命令,并响应命令接收。主设备和从设备都可以作为发送设备或接收设备。无论主设备是作为发送设备还是接收设备,同步时钟信号都只能由主设备产生。

在相同的总线上,I2C支持多个主设备的同时存在。图1-1显示了I2C总线上主设备和从设备的连接关系。

当总线空闲时,SDA 和SCL 都处于高电平状态,当主机要和某个从机通讯时,会先发送一个开始条件,然后发送从机地址和读写控制位,接下来传输数据(主机发送或者接收数据),数据传输结束时主机会发送停止条件。传输的每个字节为8 位,高位在前,低位在后。

  • 开始条件:SCL 为高电平时,主机将SDA 拉低,表示数据传输即将开始。

  • 从机地址:主机发送的第一个字节为从机地址,高7 位为地址,最低位为R/W 读写控制位,1 表示读操作,0 表示写操作。

一般从机地址有7 位地址模式和10 位地址模式两种,如果是10 位地址模式,第一个字节的头7 位是11110XX 的组合,其中最后两位(XX)是10 位地址的两个最高位,第二个字节为10 位从机地址的剩下8 位,如下图所示:

  • 应答信号:每传输完成一个字节的数据,接收方就需要回复一个ACK(acknowledge)。写数据时由从机发送ACK,读数据时由主机发送ACK。当主机读到最后一个字节数据时,可发送NACK(Notacknowledge)然后跟停止条件。

  • 数据:从机地址发送完后可能会发送一些指令,依从机而定,然后开始传输数据,由主机或者从机发送,每个数据为8 位,数据的字节数没有限制。

  • 重复开始条件:在一次通信过程中,主机可能需要和不同的从机传输数据或者需要切换读写操作时,主机可以再发送一个开始条件。

  • 停止条件:在SDA 为低电平时,主机将SCL 拉高并保持高电平,然后在将SDA 拉高,表示传输结束。

SPI总线

SPI总线是同步、双向、全双工的4线式串行接口总线,最早由Motorola公司提出。SPI是由“单个主设备+多个从设备”构成的系统。需要说明的是:在系统中,只要任意时刻只有一个主设备是处于激活状态的,就可以存在多个SPI主设备。常运用于EEPROM、FLASH、实时时钟、AD转换器、数字信号处理器和数字信号解码器之间实现通信。

为了实现通信,SPI共有4条信号线,分别是:

(1)主设备出、从设备入(Master Out Slave In,MOSI):由主设备向从设备传输数据的信号线,也称为从设备输入(Slave Input/Slave Data In,SI/SDI)。

(2)主设备入、从设备出(Master In Slave Out,MISO):由从设备向主设备传输数据的信号线,也称为从设备输出(Slave Output/Slave Data Out,SO/SDO)。

(3)串行时钟(Serial Clock,SCLK):传输时钟信号的信号线。

(4)从设备选择(Slave Select,SS):用于选择从设备的信号线,低电平有效。

SPI使用方法:

上图所示芯片有2 个SPI 控制器,SPI 控制器对应SPI 主设备,每个SPI 控制器可以连接多个SPI从设备。挂载在同一个SPI 控制器上的从设备共享3 个信号引脚:SCK、MISO、MOSI,但每个从设备的CS 引脚是独立的.

主设备通过控制CS 引脚对从设备进行片选,一般为低电平有效。任何时刻,一个SPI 主设备上只有一个CS 引脚处于有效状态,与该有效CS 引脚连接的从设备此时可以与主设备通信。

所以,SPI通信方式可以使用“一主多从”的结构进行通信。每个连接到总线上的器件都有唯一的地址,主设备启动数据传输并产生时钟信号,从设备被主设备寻址,同一时刻只允许有一个主设备。

从设备的时钟由主设备通过SCLK 提供,MOSI、MISO 则基于此脉冲完成数据传输。SPI 的工作时序模式由CPOL(Clock Polarity,时钟极性)和CPHA(Clock Phase,时钟相位)之间的相位关系决定,CPOL 表示时钟信号的初始电平的状态,CPOL 为0 表示时钟信号初始状态为低电平,为1 表示时钟信号的初始电平是高电平。CPHA 表示在哪个时钟沿采样数据,CPHA 为0 表示在首个时钟变化沿采样数据,而CPHA 为1 则表示在第二个时钟变化沿采样数据。

根据CPOL 和CPHA 的不同组合共有4 种工作时序模式:CPOL=0,CPHA=0、CPOL=0,CPHA=1、CPOL=1,CPHA=0、CPOL=1,CPHA=1

UART

UART——通用异步收发传输器,UART 作为异步串口通信协议的一种,工作原理是将传输数据的每个字符一位接一位地传输。在应用程序开发过程中使用频率较高的数据总线。

基于UART的数据传输是异步形式的串行数据传输。基于UART的串行数据传输不需要使用时钟信号来同步传输的发送端和接收端,而是依赖于发送设备和接收设备之间预定义的配置。

对于发送设备和接收设备来说,两者的串行通信配置(波特率、单位字的位数、奇偶校验、起始位数与结束位、流量控制)应该设置为完全相同。通过在数据流中插入特定的比特序列,可以指示通信的开始与结束。当发送一个字节数据的时候,需要在比特流的开头加上起始位,并在比特流的末尾加上结束位。数据字节的最低位紧接在起始位之后。

UART 串口的特点是将数据一位一位地顺序传送,只要2 根传输线就可以实现双向通信,一根线发送数据的同时用另一根线接收数据。

UART 串口通信有几个重要的参数,分别是波特率、起始位、数据位、停止位和奇偶检验位,对于两个使用UART 串口通信的端口,这些参数必须匹配,否则通

  • 起始位:表示数据传输的开始,电平逻辑为“0” 。

  • 数据位:可能值有5、6、7、8、9,表示传输这几个bit 位数据。一般取值为8,因为一个ASCII 字符值为8 位。

  • 奇偶校验位:用于接收方对接收到的数据进行校验,校验“1” 的位数为偶数(偶校验) 或奇数(奇校验),以此来校验数据传送的正确性,使用时不需要此位也可以。

  • 停止位:表示一帧数据的结束。电平逻辑为“1”。

  • 波特率:串口通信时的速率,它用单位时间内传输的二进制代码的有效位(bit) 数来表示,其单位为每秒比特数bit/s(bps)。常见的波特率值有4800、9600、14400、38400、115200 等,数值越大数据传输的越快,波特率为115200 表示每秒钟传输115200 位数据。

1-Wire接口

1-Wire接口是由Maxim Dallas半导体公司(首页为http://www.maxim-ic.com)开发的异步半双工通信协议,也称为Dallas 1-Wire®协议。其中,按照主-从通信模型,只使用单条信号线DQ实现通信。

1-Wire总线的一个重要特征在于,该总线允许在信号线上传输能量。1-Wire接口支持在总线上连接单个主设备以及一个或多个从设备。

并行接口

板上并行接口(parallel interface)通常用于系统与外围设备之间的通信,其中,外围设备通过存储器映射到系统的主控端。只要嵌入式系统的主控处理器/控制器含有并行总线,支持并行总线的设备就可以直接连接到该总线系统上。外围设备与主控端之间具有控制信号接口,可以控制并行总线上的数据通信。这里,通信的控制信号包括读/写信号和设备选择信号。一般说来,外围设备具有设备选择线;只有当主控处理器选通该线的时候,该设备才是有效的。

数据传输的方向可以是从主控端到外围设备,也可以是从外围设备到主控端;这是通过读和写控制信号线进行控制的。只有主控处理器能够控制读控制信号和写控制信号。一般说来,外围设备通过存储器映射到主控处理器,从而可以访问分配的地址范围。此时,设备需要使用地址译码电路来产生芯片选择信号。

当处理器选择的地址位于设备指定范围内的时候,译码电路对芯片选择线进行触发,从而激活设备。然后,处理器可以使能相应的控制线(分别是RD与WD),从而由设备读出数据,或者是向设备写入数据。

为了实现并行通信,系统需要严格遵循时序规范。前面已经提到过,并行通信是由主控处理器启动的。如果某外围设备想要对通信进行初始化,那么可以向处理器发出中断,告知相关信息。

为了实现上述功能,设备的中断线需要连接到处理器的中断线上,并且主控处理器需要触发相应的中断。需要说明的是,主控处理器的数据总线宽度决定了并行接口的宽度,可以是4位、8位、16位、32位、64位等。设备支持的总线宽度应该与主控处理器完全相同。

END

来源:博客园,作者:Iriczhao


版权归原作者所有,如有侵权,请联系删除。

IT技术分享社区

个人博客网站:https://programmerblog.xyz

文章推荐程序员效率:画流程图常用的工具程序员效率:整理常用的在线笔记软件远程办公:常用的远程协助软件,你都知道吗?51单片机程序下载、ISP及串口基础知识硬件:断路器、接触器、继电器基础知识

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

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

相关文章

集合初始化时,指定集合初始值大小

集合初始化时,指定集合初始值大小

hadoop常用linux命令,# Hadoop学习笔记(二)——Linux常用命令

ifconfigLinux ifconfig命令用于显示或设置网络设备。ifconfig可设置网络设备的状态,或是显示目前的设置。ifconfig.png语法ifconfig [网络设备][down up -allmulti -arp -promisc][add][del][][io_addr][irq][media][mem_start][metric][mtu][netmask][tunnel][-br…

数据库:计算地球上两个坐标点之间里程

今天给大家分享计算地球上两个坐标点之间里程不同数据库版本的脚本。1、SQLServer脚本–-计算地球上两个坐标点(经度,纬度)之间距离sql函数 CREATE FUNCTION [dbo].[fnGetDistance](LatBegin REAL , LngBegin REAL, LatEnd REAL, LngEnd REA…

使用entrySet遍历Map类集合KV,而不是keySet方式进行遍历

使用entrySet遍历Map类集合KV,而不是keySet方式进行遍历

【Qt开发】Qt Creator在Windows上的调试器安装与配置

Qt Creator在Windows上的调试器安装与配置 如果安装Qt时使用的是Visual Studio的预编译版,那么很有可能就会缺少调试器(Debugger),而使用MSVC的Qt对应的原生调试器是CDB(对应MinGW的Qt使用GDB调试器)。本文…

linux rsync 带密码,Linux配置ssh无密码验证,rsync

1.我先声明主机pangzhiminglinux 192.168.200.129CentOS2 192.168.200.130方法大概是这样:如果想从pangzhiminglinux的普通用户无验证登录到CentOS2的普通用户(单方向的),那么就要在两个主机都建立一个相同名字,相同密码的普通…

Java:Lombok插件用法笔记

1、Lombok是什么东东?官方介绍Lombok项目是一个Java库,它可以自动嵌入你的编辑器和构建工具中,从而减少你的代码量。永远不要再写另一个getter或equals方法,它带有一个注释的你的类有一个功能全面的生成器,自动化你的日…

bzoj2058: [Usaco2010 Nov]Cow Photographs(逆序对)

题目大意:给出n个数的序列,每次可以交换相邻的两个数,问把序列变成编号i在编号i1左边,编号1在编号n右边(一个环)最少需要多少步。如:35421最少交换两次变为34512。 一开始看到这题,只会O(n),后来…

sap实施和开发哪个前景_2021年了!还不知道 SAP顾问的职业前景?

一、先说什么是SAP。百度词条的解释:SAP有两个意思一为“System Applications and Products”的简称,是SAP公司的产品——企业管理解决方案的软件名称。也代指SAP公司。二为SAP开发的ERP(Enterprise-wide Resource Planning)软件名…

Linux找最大最小值的命令,Linux中awk命令正确的求最大值、最小值、平均值、总和...

test.txt文件内容&#xff1a;911352142118求最大值&#xff1a;awk BEGIN {max 0} {if ($10 > max0) max$1} END {print "Max", max} test.txtMax 118求最小值&#xff1a;awk BEGIN {min 65536} {if ($10 < min0) min$1} END {print "Min", min}…

​分布式数据库技术基础:数据分布介绍

1、数据分布的定义数据分布是指在分布式环境中通过合理分布数据&#xff0c;提高数据操作自然并行度&#xff0c;以达到最优的执行效率的目的。在构建分布式数据库系统运行环境时&#xff0c;必须考虑数据如何分布在系统的各个场地上。数据分布主要关注的问题是在分布式数据中&…

uname命令 linux,Linux uname命令详解

Linux uname命令用于显示系统信息。uname可显示电脑以及操作系统的相关信息。语法参数&#xff1a;uname [参数]参数&#xff1a;-a或--all&#xff1a;显示全部的信息&#xff1b;-m或--machine&#xff1a;显示电脑类型&#xff1b;-n或-nodename&#xff1a;显示在网络上的主…

分布式数据库技术基础:数据分片介绍

1、数据分片定义数据分片也成为数据分割&#xff0c;是分布式数据库的特征之一。一般在一个分布式数据库中&#xff0c;全局数据库是由各个局部数据库逻辑组合而成的&#xff0c;反之各个局部数据库是由全局数据库的某种分割逻辑而得的。数据分片得到的各部分元组成为该关系的逻…

分布式数据库技术基础:分布透明性相关知识

1、分布透明性介绍数据分布独立性&#xff1a;主要是指用户或用户程序使用分布式数据库如同使用集中式数据库那样&#xff0c;不必关系全局数据的分布情况。也就是说全局数据的逻辑分片、片段的物理位置分配、各场地数据库的数据模型等情况对用户和用户应用程序是透明的。因此分…

宏基4750网卡驱动linux,宏基4750g网卡驱动下载

宏基4750g网卡驱动是宏基笔记本上网驱动&#xff0c;驱动可以帮助用户体验便捷上网功能&#xff0c;只需要的双击驱动安装就可以完成&#xff0c;网卡驱动是笔记本必备程序&#xff0c;欢迎用户来当易网下载体验&#xff01;驱动介绍Acer宏碁Aspire 4750G笔记本网卡驱动14.4.0.…

python request post 数组_[pve][python]用python3获取pve状态信息

手头的Proxmox VE集群和节点越来越多&#xff0c;需要考虑统一管理了&#xff0c;先定一个小目标——集中状态监控。以前写过检测ceph并用钉钉报警的bash脚本&#xff0c;这次换上洋气的方式&#xff0c;用python来通过pve的api获取其状态信息。首先参考proxmox官方的api(实际上…

分布式数据库管理系统介绍

1、分布式数据库管理系统分类综合型体系结构&#xff1a;主要是指在分布式数据库建立之前&#xff0c;还没有建立独立的集中式数据库管理系统&#xff0c;设计人员根据用户的需求&#xff0c;设计出一个全新的完整的数据库管理系统。联合型体系结构&#xff1a;主要是指每个节点…