IIC UART SPI通信协议介绍

2023-11-20

UART

        通用一部收发器,是一种通用的串行、异步通信总线该总线有两条数据线,可以实现全双工的发送和接收,在嵌入式系统中常用于主机与辅助设备之间的通信

波特率

        波特率用于描述UART通信时的通信速度,单位为bps(bit per second)即每秒钟传送的bit的数量  他就是每秒钟传送的二进制位的个数

        如果我们发送01 或者0011 会发现他们是一样的,这得就需要波特率来确定发送了几位,接收方确定几个零或者几个1就是通过波特率

        注意:双方的波特率必须一样

UART帧格式(UART传送原理)

        串口发送的时候会先发送一个起始位 表示数据的开始,然后在发送数据位,数据位发完发送校验位,主要是检测发送数据的正确性,然后发送停止位表示这次数据已经发送结束了,上述位整个通信的过程,要想发送多个字节不断的重复这个过程

注意空闲位:串口线在不使用的时候要弄成高电平

           起始位:起始位的作用主要是告诉对方我要发送数据了区别于空闲位

           数据位:在串口协议里面规定先发低位再发高位

           校验位:主要用奇偶校验 他只能是检验是否产生错误 但是不能修改 可有可无 有的话通信速度会慢一些因为多了一位

                奇校验:数据位高电平个数总数位奇数

                偶校验:数据位高电平个数总数位偶数

           停止位:固定为高电平  表示通信的结束

UART:有两个数据线 是交叉连接 还有一根GND接地

RS232

        编程的时候没有任何区别只是在电器层面进行区分 纯硬件的东西

        RS232协议是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家、计算机终端生产厂家共同制定的用于串行通讯的标准;

        该标准规定采用一个标准的连接器,标准中对连接器的每个引脚的作用加以规定,还对信号的电平加以规定

接口

        该标准规定采用一个25引脚的DB-25连接器,标准中对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定;后来IBM的PC机将RS232简化成了DB-9连接器,后来称为事实标准;现在工业控制的RS-232接口一般只能使用RXD、TXD、GND三条线;

信号

        该标准规定逻辑’1‘的电平为-5V到-15V,逻辑’0‘的电平为+5V到+15V,选用该电气标准的目的在于提高抗干扰能力,增大通信距离。其传输距离一般可以达到15m

电平转化

        虽然很多处理器中都会集成UART控制器,但处理器产生的信号一般都是TTL信号并不是符合RS232标准的信号,所以一般我们还需要在处理器外部去添加电路对信号的电平进行转换

        一般芯片发出来的是TTL电平,我们想要增加他的传输距离就要转成RS232电平  我们就把芯片的电平发送给电平转换芯片(max232)中 电平转换芯片把TTL信号转换成232信号

RS232存在的问题

1、接口的信号电平值较高,已损坏接口电路的芯片,又因为与TTL 不兼容,所以需要使用电平转换芯片才能与TTL电路连接

2、通信速度较低

3、易产生共模干扰,抗噪声干扰性弱

4、传输距离较短(15m)

RS485

        该标准由电信行业协会和电子工业联盟定义;使用该标准的通信网络能在远距离条件下以及电子噪声大的环境下有效传输信号该标准允许连接多个收发器,即具有多站能力,这样可以利用单一的RS285接口方便地建立起一个设备网络

        

信号

        RS485标准规定采用差分信号进行数据传输,两线间的电压差为+2V到+6V表示逻辑’1‘,两线间的电压插为-2V到-6V表示逻辑’0‘;使用差分信号能有效地减少噪声信号的干扰,延长通信距离,RS485的通信距离可以达到1500m;RS485接口信号的电平比RS232降低了,所以不易损坏接口电路的芯片,且该电平与TTL电平兼容,可方便地与TTL电路连接、

接口

        RS485采用两线制,这种接线方式为总线式拓扑结构,在同一总线上可以同时存在多个节点;

        因为采用两线制,数据的发送和接收都要使用这对差分信号线,发送和接收不能同时进行,所以只能采用半双工的方式工作编程时也需要加以处理

电平转换

        虽然很多处理器中都会集成UART控制器,但处理器产生的信号一般都是TTL信号并不是符合RS485标准信号,所以一般我们还需要在处理器外部去添加电路将TTL信号转换成差分信号;

注意:

        对于这种主从机制可以去参考IIC协议,IIC与485有什么区别。IIC一开始就规定好了主机和从机的职责,以及通信过程,但是485协议里面没有规定,你可以好几个器件都挂载到总线上,但是怎么通信485没有规定,这个得自己写程序来管理这件事,所以写程序可以参考IIC机制

RS485的优势

1.接口的信号电平值较低,不易损坏接口电路的芯片,且与TTL兼容,可方便地与TTL电路连接

2.通信速度快

3.抗噪声干扰性强

4.传输距离较远(1500m)

5.可实现多节点组网

232与485

        232与485是在串口的基础上再电器这个层次对信号的一个标准化,UART只是规定发送的时许,但是他没有规定高电平是几V低电平是几V,也没有规定接口是什么样 ,而232或者485就规定了我这个接口就长这样,有几根线,每根线是干嘛的

        UART是规定我发谁谁先发的问题,而232和485是你选择什么样的路线走

IIC总线

        IIC总线是Philips公司在八十年代初推出的一种串行、半双工 主要用于近距离、低俗的芯片之间的通信;IIC总线有两根双向的信号线 一根数据线SDA用于收发数据,一根时钟线SCL用于通信双方时钟的同步;IIC总线硬件结构简单,成本较低,因此在各个领域得到了广泛应用。

        主要是用于同一块板子上面两个IIC之间的通信 两个总线空闲时时高电平 发数据SCL低电平 收数据SCL高电平

        用的时候只需要把芯片的SCL接到总线的SCL 芯片的SDA接到总线的SDA  然后两个芯片就可以通过IIC来进行通信了

        IIC总线是一种多主机的总线,连接在IIC总线上的器件分为主机和从机,主机有权发起和结束一次通信,而从机只能被主机呼唤;(多主机就是指多个芯片都可以称为主机,是一个分时的,每一个时间段只有一个主机)

        当总线上有多个主机同时启动总线时,IIC也具备冲突检测和仲裁的功能来防止错误产生了每个连接到IIC总线上的器件都有一个唯一的地址(7bit)(地址的目的就是区分不同的主机从机),且每个器件都可以作为主机也可以作为从机(同一时刻只能有一个主机,那是因为同一个时间点只能有一个主机用一个总线),总线上的器件增加和删除不影响其他器件正常工作;

        IC总线在通信时总线上发送数据的器件为发送器,接收数据的器件为接收器

IIC总线的通信过程

1.主机发送起始信号启用总线

2.主机发送一个字节的数据指明从机地址和后续字节的传送方向

3.被寻址的从机发送应答信号回应主机

 4.发送器发送一个字节的数据

5.接收器发送应答信号回应发送器

6.   (循环步骤4、5)

n.通信完成后主机发送停止信号释放总线

举例:假设主机为单片机A 单片机B 后面的四个为从机,单片机于0x3的从机通信

1.单片机A发送一个起始信号表示一次通信的开始,其他主机也会收到这个信号,在这一段时间单片机B就不会启用总线,因为总线正在使用。其他从机也收到这个信号就知道有主机发起通信了。

2.然后单片机A往总线上发送了一个字节的数据,这个字节里面写了要通信从机的地址,地址写在高七位,最后一位确定是主机发给从机还是从机发送给主机 0 主-》从  1从-》主

3.应答信号的作用告诉主机我存在. 发送过程中不允许改变通信方向,就是在一开始发送方向就确定了

n.

IIC总线的取地方式

IIC总线上的传送数据是广义,既包括地址,又包括真正的数据

主机在发送起始信号后必须先发送一个字节的数据,该数据的高7位表示从机地址,最低位表示后去的传送方向,‘0’表示主机发送数据,‘1’表示主机接收数据;总线上所有的从机接收到该字节数据后都将这7位地址与自己的地址进行比较,如果相同,则认为自己被主机寻址然后再根据第8位将主机定为发送器或接收器

 SPI总线

        spi是串行外设接口的缩写,SPI是一种高速的、全双工、同步的串行通信总线;SPI采用主从问答的方式工作,一般有一个主设备和一个或者多个从设备;SPI需要至少4根线(多个从机时主机要超过四根线),分别是MISO(主设备输入从设备输出)、MOSI(主设备输出从设备输入)、SCL(时钟)、CS(chip select片选 可能会有多条当有多个从机的时候)SPI使用引脚较少且分布方便,所以越来越多的芯片集成了这种通信协议;

寻址方式

当主设备要和某个从设备进行通信时,主设备需要先向对应的从设备的片选线上发送使能信号(高低阿婆或者低电平,根据从机而定如果是CS上面加个‘-’那就是低电平使能,CS高电平使能)表示选中该从设备

通信过程

SPI总线再进行数据传送时,先传送高位,后传送低位;数据线为高电平表示逻辑‘1’,低电平表示逻辑‘0’;一个字节传输完成后无需应答即可开始下一个字节的传送;SPI总线采用同步方式工作,时钟线在上升沿或下降沿时大宋其像数据线上发送数据,在紧接着的下降沿或上升沿时接收器从数据线上读取数据,完成以为数据传送,八个时钟周期即可以完成一个字节数据的传送;

注意:SPI没有起始信号,停止信号 应答,只有数据

异步通信就是靠测时间来判断处于高位还是低位

同步通信是通过时钟线,当时钟线为低电平发送器去放一位数据 当时钟线为高电平,接收器去读这一位数据

一个时钟周期两个沿下降沿发数据 上升沿读数据

MSB 最高位 LSB最低为

极性和相位

 极性和相位

        SPI总线有四种不同的工作模式,取决于极性(CPOL)和相位(CPHL)这两个因素

        CPOL表示CSCLK空闲时的状态

                CPOL=0,空闲时SCLK为低电平

                CPOL=1,空闲时SCLK为高电平

        CPHA表示采样时刻  是上升沿采集还是下降沿采集

                CPHA=0,每个周期的第一个时钟沿采样

                CPHA=1,每个周期的第二个时钟沿采样

模式 CPOL CPHA 采样时刻 空闲时SCK电平

0 0 0 奇数 低

1 0 1 偶数 低

2 1 0 奇数 高

3 1 1 偶数 高

在SPI操作中,最重要的两项设置就是时钟极性(CPOL)和时钟相位(CPHA)这两项即是主从设备间数据采样的约定方式

        需要说明的是,对于一个特定的从设备来说,一般在出厂的时候就会将器设计为某种特定的工作模式;我们在使用该设备时就必须保证主设备的工作模式和从设备保持一致,否则是无法进行通信的;所以一般我们需要对主设备的CPOL和CPHA进行配置; 

IIC和SPI的异同

相同点

1.均采用串行、同步的方式

2.均采用TTL电平,传输距离和应用场景类似    主要是在板子内部进行通信

3.均采用主从方式工作

不同点

1.IIC为半双工,SPI为全双工

2.IIC有应答机制,SPI无应答机制

3.IIC通过向总线广播从机地址来寻址,SPI通过对应从机发送使能信号 IIC节省空间资源 SPI传输速度快

4.IIC的时钟极性和时钟相位固定,SPI的时钟极性和时钟相位可调

          

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

IIC UART SPI通信协议介绍 的相关文章

  • 思腾合力赞助CCF YOCSEF太原第十一届学术委员会第三次全体会议

    2024年1月6日 由思腾合力赞助的 CCF YOCSEF太原第十一届学术委员会第三次全体会议暨AC换届选举活动 在山西大学举办 华北区教育行业负责人宋肖敏出席本次会议 会议汇聚了众多学术界和企业界的精英 共同探讨人工智能和计算机科学的未来
  • 【计算机开题报告】 网上茶叶销售平台设计与开发

    一 选题依据 简述国内外研究现状 生产需求状况 说明选题目的 意义 列出主要参考文献 1 研究背景 随着社会经济的迅速发展和科学技术的全面进步 以计算机与网络技术为基础的信息系统正处于蓬勃发展的时期 随着经济文化水平的提高 近年来 随着科学
  • 网络安全现状:揭秘白帽黑客的真实收入

    前言 作为一个网络安全行业五年打工仔 今天就来看看黑客的收入和方向怎么样 一个黑客年薪是多少呢 外界普遍认为黑客是高收入群体 那么你想过黑客是怎么获得收入的吗 黑客分为白帽黑客和黑帽黑客 处于黑白两道的黑客会的技术都有些相似 但是却是对立的
  • 学习STM32正点原子好吗?

    今日话题 学习STM32正点原子好吗 正点原子的教程内容简单明了 代码也清晰直接 使初学者能够轻松理解其功能和使用方法 尤其对于需要快速完成大学作业等任务的大学生来说 可以直接借鉴并稍作修改 便可满足需求 正点原子提供的资料通俗易懂 适合用
  • 会stm32有机会进大公司吗?

    今日话题 会stm32有机会进大公司吗 我本科期间参与了飞思卡尔和电赛等比赛 使用过多种单片机 但渐渐发现单片机只是其中的一小部分 不要过分迷恋所谓的单片机基础和技巧 更值得深入研究的是C语言 如果你对此感兴趣 我愿意无偿分享一个资源包 其
  • 【一份老网工珍藏多年的网络配置笔记,很重要!】

    01 交换机 路由器的几种配置模式及模式转换 1 用户模式 登录到交换机 路由器 时会自动进入用户模式 提示符为 switchname gt 在该模式下只能够查看相关信息 对 IOS的运行不产生任何影响 2 特权模式 用户模式下 键入 en
  • 成为一个黑客,就按照这个路线来!

    前几天一个同学在聊天中提到毕业后想要从事网络安全方向的工作 虽然他本身也是学计算机的 但是又怕心有余而力不足 因为 从事网络安全方面的工作向来起点都比较高 大学里少有开设这类课程的 在学校能够学到的知识比较有限 网上的关于这方面课程的质量又
  • 网络空间安全女生就业,怎么学?

    我实验室的学长们基本都是以红队和复现为主 如果学校好点可能还有更多的选择 如果想在这个方向深入下去 推荐流程是先打两年CTF 把大概的技术方向摸一摸 大一的话 如果学校还不错 那就优先建议打好基础 包括C语言 Python一类 建议把CTF
  • 掌握内网渗透之道,成为实战高手,看《内网渗透实战攻略》就够了

    文末送书 文末送书 今天推荐一本网络安全领域优质书籍 内网渗透实战攻略 文章目录 前言 如何阅读本书 目录 文末送书 前言 当今 网络系统面临着越来越严峻的安全挑战 在众多的安全挑战中 一种有组织 有特定目标 长时间持续的新型网络攻击日益猖
  • 【CTF必看】从零开始的CTF学习路线(超详细),让你从小白进阶成大神!

    最近很多朋友在后台私信我 问应该怎么入门CTF 个人认为入门CTF之前大家应该先了解到底 什么是CTF 而你 学CTF的目的又到底是什么 其次便是最好具备相应的编程能力 若是完全不具备这些能力极有可能直接被劝退 毕竟比赛的时候动不动写个脚本
  • 前端必备的 web 安全知识手记

    前言 安全这种东西就是不发生则已 一发生则惊人 作为前端 平时对这方面的知识没啥研究 最近了解了下 特此沉淀 文章内容包括以下几个典型的 web 安全知识点 XSS CSRF 点击劫持 SQL 注入和上传问题等 下文以小王代指攻击者 话不多
  • WEB前端常见受攻击方式及解决办法总结

    一个网址建立后 如果不注意安全问题 就很容易被人攻击 下面讨论一下集中漏洞情况和放置攻击的方法 一 SQL注入 所谓的SQL注入 就是通过把SQL命令插入到web表单提交或输入域名或页面请求的查询字符串 最终达到欺骗服务器执行恶意的SQL命
  • 2024年金三银四网络安全考试试题

    2023年金三银四网络安全考试试题 1 关于数据使用说法错误的是 A 在知识分享 案例中如涉及客户网络数据 应取敏感化 不得直接使用 B 在公开场合 公共媒体等谈论 传播或发布客户网络中的数据 需获得客户书面授权或取敏感化 公开渠道获得的除
  • 嵌入式开发--STM32G4系列片上FLASH的读写

    这个玩意吧 说起来很简单 就是几行代码的事 但楞是折腾了我大半天时间才搞定 原因后面说 先看代码吧 读操作 读操作很简单 以32位方式读取的时候是这样的 data IO uint32 t 0x0800F000 需要注意的是 当以32位方式读
  • Python爬虫实战:IP代理池助你突破限制,高效采集数据

    当今互联网环境中 为了应对反爬虫 匿名访问或绕过某些地域限制等需求 IP代理池成为了一种常用的解决方案 IP代理池是一个包含多个可用代理IP地址的集合 可以通过该代理池随机选择可用IP地址来进行网络请求 IP代理池是一组可用的代理IP地址
  • 基于java的物业管理系统设计与实现

    基于java的物业管理系统设计与实现 I 引言 A 研究背景和动机 物业管理系统是指对物业进行管理和服务的系统 该系统需要具备对物业信息 人员信息 财务信息等进行管理的能力 基于Java的物业管理系统设计与实现的研究背景和动机主要体现在以下
  • 揭秘网络世界的幕后密码——Wireshark网络协议分析软件

    在我们日常生活中 计算机和互联网已经成为不可或缺的一部分 然而 很少有人真正了解网络背后复杂的工作原理和通信协议 幸运的是 有一款强大而实用的软件 Wireshark 可以帮助我们深入了解网络世界的幕后密码 Wireshark是一款免费的网
  • 网络安全基础知识面试题库

    1 基于路由器的攻击手段 1 1 源IP地址欺骗式攻击 入侵者从外部传输一个伪装成来自内部主机的数据包 数据包的IP是 内网的合法IP 对策 丢弃所有来自路由器外端口 却使用内部源地址的数据包 1 2 源路由攻击 入侵者让数据包循着一个不可
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 【安全】简单解析统一身份认证:介绍、原理和实现方法

    深入解析统一身份认证 介绍 原理和实现方法 导语 统一身份认证是什么 统一身份认证的原理 统一身份认证的实现 结语 导语 随着互联网的发展和各种在线服务的普及 用户在不同的应用和平台上需要进行多次身份验证 为了简化用户的登录和减少重复操作

随机推荐

  • 【ES实战】ES中关于segment的小结

    文章目录 ES中关于segment的小结 ES中segment相关的原理 在Lucene中的产生segment的过程 Lucene commit过程 ES为了实现近实时可查询做了哪些 缩短数据可被搜索的等待时长 增加数据的可靠性 优化seg
  • mysql更新一张表的字段来自另一张表的某个字段

    UPDATE tba a LEFT JOIN tbb b on a id b id set a xxx b xxxx where a id b id
  • 对于opencv摄像头调用与现实方向相反的问题怎么解决?

    可以对原始图像进行水平翻转 使用opencv自带的flip函数 例如 读取图像帧 ret frame cap read 水平翻转图像 frame cv2 flip frame 1 这样就可以了 后面的参数1代表水平翻转图像 而0代表垂直翻转
  • node.js与elasticsearch交互

    参考elasticsearch 以下简称es 官方javascript的API https www elastic co guide en elasticsearch client javascript api 6 x api refere
  • Sqli-Labs靶场(6--10)题详解

    目录 六 Less 6 GET Double Injection Double Quotes string GET 双重注入 双引号 字符串 七 Less 7 GET Dump into outfile string GET 导出文件 字符
  • Altium designer自动布线设置GND或其他网络不布线的方法

    1 在导航栏里面找到设计栏 找到类选项打开2 在Net Classes选项下 右击鼠标 找到添加类选项 会创建一个New Class 3 设置好需要布线的网络 以及不需要布线的网络 如下图 4 找到自动布线菜单栏下的网络类 点击进去如下图
  • Android下自定义的jar库文件编译和调用

    主要为了解决如下问题 项目中使用了Android未公开的API 在Eclipse下会有红叉显示 不同的项目抽出相同部分的代码共用 必需的前提条件 需要有Android源代码 编译的库文件主要是封装未公开API或者共用代码 工程1 Java库
  • h5单页面埋点问题(undefine)

    需求 商城页面里调用第三方资源埋点 代码实现 主要解决资源未加载就被调用问题 备注 把调用函数作为参数传进去 控制保证在资源加载完成后调用 let COLLECTURL http collect trc com index js 动态创建j
  • java的特点

    一 简单易学 1 java的风格类似于c 因而许多c c程序员初次接触java语言时会感到熟悉 从某种意义来说c 语言是从c语言继承而来 java语言是c 语言的一个变种 因此 学过c或c 的程序员可以更快速的掌握java编程技术 附图 编
  • 【mysql timeStamp默认值0000-00-00 00:00:00 报错:Invalid default value for ‘end_time’】

    mysql timeStamp默认值0000 00 00 00 00 00 报错 Invalid default value for end time 运行其中的sql文件时报错 nvalid default value for end t
  • python猜拳游戏编程代码_用python实现“猜拳"游戏

    原标题 用python实现 猜拳 游戏 用python实现 猜拳 游戏 先来练习一道用python编写的小程序 这道题是用for in 循环实现输入10个数并求和 这里用到了append 方法 append 方法 是一个很重要的方法 它是向
  • 计算机翻译的汉字,计算机系外文翻译(中英对照3000汉字左右).doc

    文档介绍 毕业设计 论文 外文资料翻译系别计算机信息与技术系专业计算机科学与技术班级姓名学号外文出处附件1 原文 2 putingMainarticle puter wasrecordedin1613 referringtoapersonw
  • 拓扑排序,广度优先

    使用一个队列来进行广度优先搜索 初始时 所有入度为 0 的节点都被放入队列中 它们就是可以作为拓扑排序最前面的节点 并且它们之间的相对顺序是无关紧要的 在广度优先搜索的每一步中 取出队首的节点 u 将 u 放入答案中 移除 u 的所有出边
  • hample滤波器的原理及其Python实现

    hample滤波器 1 作用及原理 2 Python实现 1 作用及原理 功能 检测并删除异常值 用一个一维向量 x x 1
  • 利用云原生数仓 Databend 构建 MySQL 的归档分析服务

    MySQL 常用 OLTP 业务环境 一般会使用比较好的硬件资源来提供对外服务 现在 MySQL 数据对外提供的数据动不动好几个 T 也是正常的 在很多业务中 数据有较强的生命周期 在线一段时间后 可能就是失去业务意义 如 某个业务下线 业
  • C语言通讯录

    主要知识 结构体 枚举 指针 递归 冒泡排序等 文章目录 一 前言 1 菜单 2 结构体创建 3 初始化通讯录 4 增加联系人 4 删除联系人 5 修改联系人信息 6 搜索联系人 7 显示联系人 8 联系人排序 三 代码展示 contect
  • 单片机FLASH操作

    FLASH 操作 查看程序已经占用的FLASH的扇区 剩余的扇区就是可以操作而不会使程序发生错乱的区域 找到listing文件夹下面的 map文件 搜索Memory Map of the image 查看占用的内存 起始地址是 0x8000
  • kafka数据丢包原因及解决方案

    数据丢失是一件非常严重的事情事 针对数据丢失的问题我们需要有明确的思路来确定问题所在 针对这段时间的总结 我个人面对kafka 数据丢失问题的解决思路如下 是否真正的存在数据丢失问题 比如有很多时候可能是其他同事操作了测试环境 所以首先确保
  • VGGNet网络详解与模型搭建

    文章目录 1 模型介绍 2 模型结构 3 模型特性 4 Pytorch模型搭建代码 1 模型介绍 VGGNet是由牛津大学视觉几何小组 Visual Geometry Group VGG 提出的一种深层卷积网络结构 他们以7 32 的错误率
  • IIC UART SPI通信协议介绍

    UART 通用一部收发器 是一种通用的串行 异步通信总线该总线有两条数据线 可以实现全双工的发送和接收 在嵌入式系统中常用于主机与辅助设备之间的通信 波特率 波特率用于描述UART通信时的通信速度 单位为bps bit per second