I2C SPI UART TCP/UDP AD/DA PWM大总结

I2C SPI UART TCP/UDP AD/DA PWM大总结

  • 1. I2C总线描述
    • 1.1 基础协议内容
      • 1.1.1 通信时序
      • 1.1.2 一般通讯时序
      • 1.1.3 Burst模式
  • 2. SPI总线
    • 2.1 基础协议内容
  • 3. UART
  • 4. TCP/UDP
  • 5. AD/DA
    • 5.1 AD的原理
    • 5.2 DA的原理
  • 6. PWM

1. I2C总线描述

  • I2C的特点:半双工,同步通讯,多主多从

    半双工:意味着数据可以双向传输,但是一个时间段内,只能一个设备写N个设备读,不能两个设备一起写数据

    同步通讯:意味着有时钟线SCL来进行同步

    多主多从:连接到I2C总线上,运行若干个主机,若干从机,其中从机以地址来区分

1.1 基础协议内容

  1. 初始状态:
    2在这里插入图片描述

SCL和SDA会接入上拉电阻,主要作用是防止其他信号干扰和增加驱动能力。

注意此时,SDA和SCL都是高电平,一般情况下,SCL为高电平的时候,视为采集信号的期间,SDA应该保持其状态,如果SDA不保持其状态那就是起始信号或者终止信号了

  1. 起始信号和终止信号

在这里插入图片描述
根据初始状态的定义,也很容易得出起始信号和终止信号

  1. 数据传输
    在这里插入图片描述
    前文说过,一般情况应该是高电平采集,此时数据的摆放时间应该是:

SCL为低的时候放置数据

而SCL为高的时候,不应该让SDA变化,以便主机/从机采集信号

  1. 应答信号

主要是让接收端告诉发送端,接收端是否收到了数据(总不能主机一直沉迷于自我吧,万一受到外部环境的影响,发送端发出去了,但是接收端没有收到呢)。此时接收端会告诉发送端自己是不是收到了数据。

做法:每传输一个字节,后面跟随一个应答位。通过将 SDA 线拉低,来允许接收端回应发送端。ACK 为 一个低电平信号,当时钟信号为高时, SDA 保持低电平则表明接收端已成功接收到发送端的数据。
在这里插入图片描述

1.1.1 通信时序

1.1.2 一般通讯时序

在这里插入图片描述
也很好理解,因为要区分从机,所以要发送从机地址+告诉从机自己是读还是写+从机回答一下+开始数据传输

1.1.3 Burst模式

burst模式其实就是连续模式,连续写或者读,主要提高一下传输效率,不需要每次都发送从机地址
在这里插入图片描述

2. SPI总线

这里不一一细说,主要说一下 SPI和I2C的对比。

  • SPI的特点
    全双工:有两个数据线,可以一个时间内实现既可以读也可以写

SS信号线判断选择哪个从机:没有跟I2C一样有地址的概念,其区分不同从机主要通过SS信号线去选择

主从架构:一般是一个主机,若干从机(SS信号线的存在)

2.1 基础协议内容

在这里插入图片描述

跟I2C没有太大差异,注意下面几个:

  1. 有两根数据线–MOSI MISO,可以实现全双工
  2. 有NSS数据线,用于区分从机,一般有多少个从机就有多少个NSS信号线,想要选择某个从机,就拉低对应连接到从机的信号线就行了
  3. SPI是边缘采集,I2C是高低电平采集
  4. SPI是没有应答信号的,一般从设备会使用额外的状态寄存器或标志位来指示操作成功或错误条件
  5. I2C的clk空闲为高,SPI可以配置为高或者低(时钟极性CPOL = 0为低, = 1为高)

注意我图中是上升沿采集,实际上也可以下降沿采集,想改下降沿采集,就改变一下时钟相位(CPHA)。

结合时钟相位和时钟极性,就可以有四种配置:
在这里插入图片描述

3. UART

UART就比较特殊点了,它是异步通信(无CLK进行同步,有CLK的就是USART),全双工,有两根数据线,一根是RX一根是TX。

由于没有CLK线同步信号,需要依靠时间的概念去定义起始还是终止信号。具体是:

  • 起始信号:数据传输线通常保持高电压电平。若要开始数据传输,发送UART 会将传输线从高电平拉到低电平并保持1 个时钟周期。
  • 终止信号:为了表示数据包结束,发送 UART 将数据传输线从低电压驱动到高电压并保持1 到 2 位时间。

数据传输根据波特率计算时间去发送就行了(所以UART对时间的概念很强,波特率必须要双方一致),为了检测数据是否正确被介绍,也有一个奇偶检验位。

协议图示如下:
在这里插入图片描述

4. TCP/UDP

这块的知识还是很大的,就说点日常开发能经常遇到的,详细如下图:
在这里插入图片描述

  • TCP和UDP最大区别:TCP有连接,是可靠的,UDP无连接,不可靠,但是效率高。
  • TCP通讯需要双方建立连接,才把数据发送过去,而UDP则不需要,输入IP地址和端口,就可以发送。

在开发中,尤其是需要注意,需要更改子网掩码,一般在win系统上使用自定义的IP地址和子网:
在这里插入图片描述
子网掩码:为了区分主机号和网络号提出的概念(因为一个主机可能携带N个网口),在上图中,IP地址&子网掩码 = 主机地址,IP地址&~子网掩码 = 网络地址。一定要确保到电脑和板子的主机地址是一致的,不然数据就不能正常发送到对端

子网掩码一般有A、B、C类,A类8位主机地址,B类16位,C类24位(对应子网掩码就是255.0.0.0、255.255.0.0、255.255.255.0)

在开发中,需要提前知道设备那边的子网是什么,或者改变设备的子网跟主机子网相同。

5. AD/DA

I2C SPI UART这块是属于数字信号之间的通讯,如果是模拟信号的采集或者输出就是需要依赖AD和DA了。

数字信号一般是0/1,而模拟信号则是例如电压 电流这种信号,其实不可以用0/1表示,因为数字和模拟信号通讯需要借助AD/DA

AD:模拟信号转数字信号,例如测量电压
DA:数字信号转模拟信号,例如音频文件播放

实际工作中,SOC内部会带有AD/DA的片内外设,根据芯片手册配置使用便可,本文说一下AD/DA的原理。

5.1 AD的原理

以计数法为例,原理如下:
在这里插入图片描述
V1是待测的电压,V0是比较器的输出电压,两者会进入比较器,直到结果V0大于V1(注意是大于,不是等于,这里会引入精度的概念),此时的计数值是D0~D7,可以表示此时的电压数值的水平。

因此AD有两个重要的概念,

  1. 分辨率:对应上图的D0D7,如果再细分D0D17,那么测量结果就会更准确。也就是对微小的变化响应能力比较好。
  2. 精度:由于AD的工作原理,不能100%表示当前的测量电压,肯定会有误差,这个误差大小就是精度了。

5.2 DA的原理

以T型电阻网络为例,原理如下:
在这里插入图片描述
Vref电压输入,在软件设定了4bit的数值后,作用于S0~S4,就可以改变输出的电压了。

6. PWM

概念:利用微处理器的数字输出来对模拟电路进行控制的一种技术。

简单来讲,数字输出虽然只能表示0/1,但是只要控制0和1的比例就可以实现模拟电路,假如数字输出1的电压是5V,数字0V。那么当处理器输出的是全0则外部测量的电压是0V,输出全1则外部测量电压是5V,如果0/1各一半则是输出2.5V,如此只要控制0/1的比例就可以控制电压的输出了。这个比例有个专业的名词:占空比。如下图可以形象表示占空比的作用:
在这里插入图片描述

因此PWM的本质是在一定的频率下,通过不同的占空比 即可得到不同的输出模拟电压。

占空比的概念
:是一个脉冲周期内,高电平的时间与整个周期时间的比例
单位: % (0%-100%)
表示方式:20%
在这里插入图片描述
有时候我们也经常用PWM来做DA,一般外加一个放大器,来增强PWM的输出。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

起保停电路工作原理

一、电路组成 起保停电路由电源保护设备(空气开关)、交流接触器、启动按钮、停止按钮和用电设备组成。 起保停电路的组成部分通常可分为四个部分: 保护部分:(空气开关)在电流或电压超出一定范围时自动切断…

计网期末复习指南:物理层(物理层的任务、香农公式、常用信道复用技术)

前言:本系列文章旨在通过TCP/IP协议簇自下而上的梳理大致的知识点,从计算机网络体系结构出发到应用层,每一个协议层通过一篇文章进行总结,本系列正在持续更新中... 计网期末复习指南(一):计算机…

SpringBoot学习小结之RocketMQ

文章目录 前言一、架构设计1.1 架构图1.2 消息1.3 工作流程 二、部署2.1 单机2.2 集群 三、Springboot Producter3.1 准备3.2 pom依赖、yml 配置3.3 普通消息3.4 顺序、批量、延迟消息3.5 事务消息 四、Springboot Consumer4.1 配置4.2 普通Push消费4.3 回复4.4 集群和广播4.5 …

兆原数通基于Apache SeaTunnel的探索实践

随着大数据技术的不断发展,数据同步工具在企业中的应用变得愈发重要。为了满足复杂多样的业务需求,找到一款高效、灵活的数据同步工具变得尤为关键。 在这篇文章中,我们将分享兆原数通研发经理李洪军对Apache SeaTunnel的选择、应用及经验。这…

蓝桥杯物联网竞赛_STM32L071KBU6_关于size of函数产生的BUG

首先现象是我在用LORA发送信息的时候,左边显示长度是8而右边接收到的数据长度却是4 我以为是OLED显示屏坏了,又或者是我想搞创新用了const char* 类型强制转换数据的原因,结果发现都不是 void Function_SendMsg( unsigned char* data){unsi…

【代码随想录】动态规划经典题

前言 更详细的在大佬的代码随想录 (programmercarl.com) 本系列仅是简洁版笔记,为了之后方便观看 做题步骤 含义公式初始化顺序检查 确定dp数组以及下标的含义递推公式dp数组如何初始化遍历顺序打印dp数组(看哪里有问题) 斐波那契数 c…

高性能推理框架漫谈

传统模型分布式推理框架 Tensorflow servingPytorch ServingTriton Server 大语言模型的推理框架 其中, VLLM 后端接入了Ray 框架, 作为调度请求的分发处理;除此之外,还包括Nvidia 最新推出的TensorRT-LLM, 增加了对…

若依 ruoyi-vue 用户账号前后端参数校验密码 手机号 邮箱

前端 <el-dialog :title"title" :visible.sync"open" width"800px" append-to-body><el-form ref"form" :model"form" :rules"rules" label-width"120px"><el-row><el-col :span…

IOT技术怎么落地?以宝马,施耐德为例

物联网技术 物联网&#xff08;IoT&#xff09;技术正逐渐成为数字化工厂转型的核心驱动力。本文将通过实际案例&#xff0c;探讨IoT技术如何促进制造业的数字化转型&#xff0c;提高生产效率&#xff0c;降低成本&#xff0c;并提升产品质量。 1. 物联网技术简介 物联网技术通…

记录一次Netty的WSS异常

概述 业务场景 应用通过 WSS 客户端连接三方接口。在高并发压测时&#xff0c;出现了请求服务器写入失败的异常&#xff0c;该异常是偶发&#xff0c;出现的概率不到千分之一&#xff0c;异常如下图所示。 问题概述 注意&#xff1a; 因为握手是通过 http 协议进行的。所以…

SpringBoot整合WebSocket实现聊天室

1.简单的实现了聊天室功能&#xff0c;注意页面刷新后聊天记录不会保存&#xff0c;后端没有做消息的持久化 2.后端用户的识别只简单使用Session用户的身份 0.依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-…

firewalld 防火墙

firewalld概述 Linux系统防火墙从CentOS7开始的默认防火墙工作在网络层&#xff0c;属于包过滤防火墙 Firewalld和iptables的关系 netfilter 位于Linux内核中的包过滤功能体系称为Linux防火墙的“内核态” firewalld Centos默认的管理防火墙规则的工具称为防火墙的“用…

高中数学:平面向量-题型总结及解题思路梳理

一、知识点及解题思路梳理 高中&#xff0c;2/3的向量题目是坐标向量题&#xff0c;1/3是几何向量题。但是&#xff0c;这1/3的几何向量题可以转换成坐标向量题。 二、练习 例题1 几何型向量题 例题2

QML的Image 路径问题(source)

四种路径格式 在 QML 中&#xff0c;当你使用 Image 元素的 source 属性来指定一个图片的路径时&#xff0c;有几种不同的方式可以指定这个路径&#xff0c;每种方式都有其特定的用途和上下文。 相对路径&#xff1a; QML 文件和一个名为 close.png 的图片在同一目录下&#x…

比较两列数据

点其中一个数据 删掉S&#xff0c;回车 大的标红

基于SpringBoot+Vue+Mysql的实验室低值易耗品管理系统

博主介绍&#xff1a; 大家好&#xff0c;本人精通Java、Python、C#、C、C编程语言&#xff0c;同时也熟练掌握微信小程序、Php和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我有丰富的成品Java、Python、C#毕设项目经验&#xff0c;能够为学生提供各类…

基于springboot的毕业设计系统的开发源码

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的毕业设计系统的开发。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; 毕业设计系统能够实现…

Git Core Lecture

1、Git 简介 官方介绍&#xff1a;Git is a fast distributed revision control system (Git 是一个快速的分布式版本控制系统) 2、Git Core Command 2.1 git init git 工程初始化&#xff0c;会在工作区 (working directory) 根目录中创建.git 目录 # 创建目录 $ mkdir git-i…

智能合约语言(eDSL)—— 并行化方案 2

这个并行算法最初其实是在aptos上实现的&#xff0c;aptos上使用的是move虚拟机&#xff0c;后来我把它移植到我们链上了&#xff0c;但是wasm虚拟机。还是费了不少事情。 目前evm并行也比较火&#xff0c;像monad&#xff0c;sei等。经过调研发现&#xff0c;其实evm的并行&am…

Python 获取当前IP地址(爬虫代理)

Python 获取当前IP地址&#xff08;爬虫代理&#xff09; 在Python中&#xff0c;获取当前的公网IP地址通常涉及到发送一个请求到外部服务&#xff0c;因为本地IP地址通常只在你的私有网络内部是可见的&#xff0c;而公网IP地址是由你的ISP&#xff08;互联网服务提供商&#x…