当前位置: 首页 > news >正文

I2C和SPI总线以及通信

通讯属性 概括

  • Serial/parallel 串行/并行
  • Synchronous/asynchronous 同步/异步
  • Point-to-point / bus 点对点 总线
  • Half-duplex/full-duplex 半双工/全双工
  • Master-slave/ equal partners 主从/对等
  • single-ending / differential 单端/差分

点对点和总线

  • 点对点通讯
    只有两个通讯点 only two comunication partners
    没有地址请求 no addressing required
  • 总线通讯
    若干个通信点 several communication partners
    地址请求 addressing required

同步(Synchronous)和异步(Asynchronous)

  • 同步
    时钟接收者和时钟发送者共享一个时钟。 Clock of receiver is linker to clock of sender
    快速通信。Fast communication
  • 异步
    约定好通信速率 进行通讯。independent clocks for sender and receiver
    Receiver knows the transmission speed in advance
    Requires packet frame with start/stop bit
    Normally an over-samping scheme is required
    Communication is slower

Half duplex 半双工和Full duplex 全双工

  • 半双工
    只有一个通信通道。需要进行发送和接收的时候占用通道。不用的时候,应当释放信道。你发我听, 我发你听。
  • 全双工
    双方都可以通信。

对等(Equal partners)和 主从(Master-slave)方式

  • 对等
    any node may transmit if medium(媒介) is free。
    Arbitration(仲裁) is required 需要仲裁
  • 主从
    主从设备之间没有对等的权利
    只有主设备可以开始通信。Only master can start a communication.
    Slave get permission to communicate form master.
    e.g. USB鼠标和PC的主从通信。PC作为通信的host,USB作为通信的device。鼠标和PC的通讯时,PC按照一定的频率去读取鼠标的中断方式的通讯信息。

通信信号区分

  • Single-ended 单端信号
    以单线的电平高低判断信号
  • differential 差分信号
    用两根双绞线传递这两个差模(差分)的信号。承载差模信号的数字信号0或者1的判断,是以两根线的信号的差值来判断。

iic简介

IIC(Inter-Integrated Circuit)总线是两线式串行总线,用于连接MCU和外设。由数据线SDA和时钟线SCL构成串行总线,可发送和接受数据。高速IIC总线速率可达400Kbps以上。
I2C总线在传送数据过程中分三种类型信号

信号SCLSDA
开始信号由高变低开始传送数据
结束信号由低变高结束传送数据,可不要
应答信号接收ic向发送ic发出特定的低电平,表示己收到数据

IIC总线时序图
IIC总线时序图

spi简介

SPI(Seial Peripheral interface)串行外围设备接口。SPI(Serial Peripheral Interface) 同步串行通讯方式,适用于短距离通讯。
可用接各种外设和芯片。e.g. ADC/RTC/LCD/ROM/DAC/Sensor。
SPI是一种高速的,全双工、同步的通信总线。
spi是4线同步串行通讯接口。实现SPI的主从设备还要第5根线GND。

SPI的特点

  • 串行接口 Serial Interface
  • 同步 Synchronous
  • 主从配置 Master-slave configuration
  • 数据交换-DMA/PIO Date Exchange
  • 全双工 Full duplex operation(一主)
  • 灵活的时钟极性/相位格式 Flexible clock polarity/phase format
  • 4到16位的可变字节帧
  • 总线竞争保护

spi内部简明图

在这里插入图片描述
从上图看,SPI有4个线通信

引脚描述
MOSI(Master Out Slave In)主出从入,主设备发送到从设备的信号
MISO(Master IN slave OUT)主入从出。从设备发送到主设备的信号
SCKserial clock,由主设备控制产生的SPI工作时钟,每个SCK周期完成一个bit的传输。SCK信号必须干净,有毛刺会带来严重的干扰
SS/CSSlave/Chip Select,从设备选择端,当从设备收到该段为低电平时,设备有效;对于主设备,该端平时为高电平,可以用于在有效传输周期内给出低电平选通。

spi工作方式

spi模块要与外设进行数据交互,需要配置串行同步时钟极性和相位在相同的工作模式。
CPOL时钟极性

CPOL描述
0串行同步时钟的空闲状态为低电平
1串行同步时钟的空闲状态为高电平

CPHA时钟相位可选择2种传输协议

CPHA描述
0在串行同步时钟的第一个跳变沿(上升或下降)数据被采样
1在串行同步时钟的第二个跳变沿(上升或下降)数据被采样

工作流程

SS片选信号拉低(或拉高)–> 主从机双方准备传递信息,MISO MOSI引脚开始把数据准备好 --> 当时钟的第一个边沿出现时(上升沿或下降沿),开始观察各自的输入引脚进行bit采样 --> 当时钟出现第二边沿时,主从机驱动自己的输出引脚准备发送第二个bit。

传输时序

在这里插入图片描述

主模式

  • 控制整个传输过程
    • 通过SS信号选择对应的通信从节点
    • 决定SCK波特率,相位,极性
    • 产生SCK时钟信号
    • 驱动MOSI信号
    • 采用MISO信号
  • CPU通过向SPIx_D写入数据来启动一次传输过程

从模式 Slave mode

  • 响应主节点的信号
    • 当SS信号被选通时才激活
    • 根据预先约定的相位/极性来检测SCK
    • 按照主机的通信速度驱动MISO信号
    • 采样MOSI信号

注意点 Point to notice

  • 通常,SPI是点对点结构的
  • 必须预先约定SCK时钟的相位/极性和数据帧位数
  • 从节点的CPU需要在数据帧开始前 将待发数据准备好并写入SPIx_D
  • SCK信号必须干净不能有毛刺 SCK保证主从机都能接收的范围

相关文章:

I2C和SPI总线以及通信

通讯属性 概括 Serial/parallel 串行/并行Synchronous/asynchronous 同步/异步Point-to-point / bus 点对点 总线Half-duplex/full-duplex 半双工/全双工Master-slave/ equal partners 主从/对等single-ending / differential 单端/差分 点对点和总线 点对点通讯 只有两个通…...

Spring八股文

Bean的生命周期 1.通过反射生成对象 2.填充Bean的属性 3.调用aware接口的invokeAwareMethod方法,对BeanName、BeanFactory、BeanClassLoader对象的属性设值 4.调用BeanPostProcessor的前置处理方法,其中使用较多的是ApplicationContextPostProcessor…...

20 k8sMetric 简介

一. Metric 简介metrics-server 可实现 Kubernetes 的 Resource Metrics API(metrics.k8s.io),通过此 API 可以查询 Pod 与 Node 的部分监控指标,Pod 的监控指标用于 HPA、VPA 与 kubectl top pods -n ns 命令,而 Node…...

面试问了解Linux内存管理吗?10张图给你安排的明明白白

linux内存管理,内存管理好像离我们很远,但这个知识点虽然冷门(估计很多人学完根本就没机会用上)但绝对是基础中的基础,这就像武侠中的内功修炼,学完之后看不到立竿见影的效果,但对你日后的开发工…...

【C++】内联函数inline

文章目录概念使用特性原理概念 C中内联函数的出现解决了C语言宏函数的不足,类似于宏展开,这种在函数调用处直接嵌入函数体的函数称为内联函数,又称内嵌函数或内置函数。 以inline修饰的函数叫做内联函数,编译时C编译器会在调用内…...

C++演讲比赛流程管理系统_黑马

任务 学校演讲比赛,12人,两轮,第一轮淘汰赛,第二轮决赛 选手编号 [ 10001 - 10012 ] 分组比赛 每组6人 10个评委 去除最高分 最低分,求平均分 为该轮成绩 每组淘汰后三名,前三名晋级决赛 决赛 前三名胜出 …...

谈谈低代码的安全问题,一文全给你解决喽

低代码是一种软件开发方法,通过使用图形化用户界面和可视化建模工具,以及自动生成代码的技术,使得开发人员可以更快速地构建和发布应用程序。 作为近些年软件开发市场热门之一,市面上也涌现了许多低代码产品,诸如简道云…...

[数据结构]二叉树OJ(leetcode)

目录 二叉树OJ(leetcode)训练习题:: 1.单值二叉树 2.检查两棵树是否相同 3.二叉树的前序遍历 4.另一棵树的子树 5.二叉树的构建及遍历 6.二叉树的销毁 7.判断二叉树是否是完全二叉树 二叉树OJ(leetcode)训练习题:: 1.单值二叉…...

flutter 输入时插入分隔符

每四位插入一个分隔符import package:flutter/services.dart;class DividerInputFormatter extends TextInputFormatter {final int rear; //第一个分割位数,后面分割位,,数final String pattern; //分割符DividerInputFormatter({this.rear 4, this.pattern });overrideTex…...

静态版通讯录——“C”

各位CSDN的uu你们好呀,之前小雅兰学过了一些结构体、枚举、联合的知识,现在,小雅兰把这些知识实践一下,那么,就让我们进入通讯录的世界吧 实现一个通讯录: 可以存放100个人的信息每个人的信息:名…...

前端基础开发环境搭建工具等

一、基本开发环境(软件)安装1、Vscode(代码编辑器)官网下载网址:https://code.visualstudio.com/2、nvm(node多版本管理器,每个node版本都有对应的npm版本)安装包下载地址&#xff1…...

华为OD机试题【IPv4 地址转换成整数】用 Java 解 | 含解题说明

华为Od必看系列 华为OD机试 全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典本篇题目:IPv4 地址转换成整数 题目 存在…...

[数据结构]排序算法

目录 常用排序算法的实现:: 1.排序的概念及其运用 2.插入排序 3.希尔排序 4.选择排序 5.冒泡排序 6.堆排序 7.快速排序 8.归并排序 9.排序算法复杂度及稳定性分析 10.排序选择题练习 常用排序算法的实现:: 1.排序的概念及其运用…...

不愧是2023年就业最难的一年,还好有车企顶着~

就业龙卷风已经来临,以前都说找不到好的工作就去送外卖,但如今外卖骑手行业都已经接近饱和状态了,而且骑手们的学历也不低,本科学历都快达到了30%了,今年可以说是最难找到工作的一年。 像Android 开发行业原本就属于在…...

C/C++之while(do-while)详细讲解

目录 while循环有两个重要组成部分: while 是一个预测试循环 无限循环 do-while 循环 while循环有两个重要组成部分: 进行 true 值或 false 值判断的表达式;只要表达式为 true 就重复执行的语句或块;图 1 显示了 while 循环的…...

SpringCloud学习笔记(一)认识微服务

一、微服务技术栈 二、单体架构和分布式架构的区别 1、单体架构: 将业务的所有功能集中在一个项目中开发,打成一个包进行部署 优点:架构简单,部署成本低缺点:耦合度高 2、分布式架构: 根据业务功能对系统…...

Unity中使用WebSocket (ws://)的方法

WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。 WebSocket与http 其…...

米哈游春招算法岗-2023.03.19-第一题-交换字符-简单题

交换字符Problem Description 米小游拿到了一个仅由小写字母组成的字符串,她准备进行恰好一次操作:交换两个相邻字母,在操作结束后使得字符串的字典序尽可能大。 请你输出最终生成的字符串。 input 一个仅由小写字母组成的字符串,…...

能把爬虫讲的这么透彻的,没有20年功夫还真不行【0基础也能看懂】

前言 可以说很多人学编程,不玩点爬虫确实少了很多意思,不管是业余、接私活还是职业爬虫,爬虫世界确实挺精彩的。 今天来给大家浅谈一下爬虫,目的是让准备学爬虫或者刚开始起步的小伙伴们,对爬虫有一个更深更全的认知…...

springcloud学习总结

springcloud 构建微服务项目步骤 导入依赖编写配置文件开启这个功能 Enablexxx配置类 于2023年2月24日下午17点38分开始学习于2023年3月17日晚上20点26分学完总结代码地址:https://gitee.com/liang-weihao/StudySpringcloud学习笔记地址:https://www.…...

Xshell远程连接Kali(默认 | 私钥)Note版

前言:xshell远程连接,私钥连接和常规默认连接 任务一 开启ssh服务 service ssh status //查看ssh服务状态 service ssh start //开启ssh服务 update-rc.d ssh enable //开启自启动ssh服务 任务二 修改配置文件 vi /etc/ssh/ssh_config //第一…...

在四层代理中还原真实客户端ngx_stream_realip_module

一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

CMake控制VS2022项目文件分组

我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...

论文笔记——相干体技术在裂缝预测中的应用研究

目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

uniapp 小程序 学习(一)

利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何,是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试,是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

Sklearn 机器学习 缺失值处理 获取填充失值的统计值

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 使用 Scikit-learn 处理缺失值并提取填充统计信息的完整指南 在机器学习项目中,数据清…...

Axure 下拉框联动

实现选省、选完省之后选对应省份下的市区...