I2C和SPI总线以及通信

article/2025/9/18 15:12:42

通讯属性 概括

  • 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保证主从机都能接收的范围

http://chatgpt.dhexx.cn/article/IXPJ6B2q.shtml

相关文章

Linux总线之SPI

文章目录 1.spi总线驱动1.1spi简介1.2spi时序解析1.3spi驱动框架1.4spi设备驱动的API1.5spi驱动的实例1.6m74hc595设备树的填充1.6.1m74hc595操作数码管的原理图1.6.2控制器的设备树1.6.3编写自己的设备树 1.7spi相关的结构体及函数1.8spi驱动的实例21.9让数码管流水显示0-f 1.…

SPI总线协议详解

目录 一.概述 二.特点 1.寻址方式 2.采用主-从模式(Master-Slave) 的控制方式 3.采用同步方式(Synchronous)传输数据 4.极性和相位 三.SPI总线传输的模式 四.SPI和I2C的区别 一.概述 SPI(serial peripheral interface)是一种同步串行通信协议,由一个主设备和…

SPI简介

SPI全称是Serial Perripheral Interface,也就是串行外围设备接口。SPI是Motorola公司推出的一种同步串行接口技术,是一种高速,全双工的同步通信总线。SPI时钟频率相比IIC要高很多,最高可以工作在上百MHZ。 SPI以主从方式工作&…

SPI通信总线基本概念

SPI总线概述 SPI总线介绍 SPI(Serial Peripheral interface):是由Motorola公司开发的串行外围设备接口,是一种高速的,全双工,同步的通信总线。主要应用在 EEPROM,FLASH,实时时钟,AD转换器&…

SPI通信总线

SPI通信总线 注意 常用的内部通信接口:UART、IIC、SPI,大多数是用于芯片之间的通信,特点是速度快,距离比较短 常用的外部通信接口:RS-232,RS-485,CAN,大多用于远距离传输&#xf…

FPGA——SPI总线详解(概念)

目录 SPI简介 SPI4种模式: SPI时序 使用SPI总线实现对flash的控制 flash芯片管脚: flash芯片存储 写使能模块 读状态模块 擦除模块 页读模块 页写模块 SPI简介 SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一…

SPI总线详解笔记

目录 1. 简介 1.1 概述 1.2 特征 1.3 操作模式 2. 外部信号说明 2.1 概述 2.2 信号详细说明 2.2.1 MOSI 2.2.2 MISO 2.2.3 SS 2.2.4 SCK 3. 存储器映射/寄存器定义 3.1 寄存器说明 3.1.1 SPI Control Register 1 3.1.2 SPI Control Register 2 3.1.3 SPI Baud R…

SPI总线规范

SPI是英文Serial Peripheral Interface的缩写,中文意思是串行外围设备接口,SPI是Motorola公司推出的一种同步串行通讯方式,是一种三线同步总线,因其硬件功能很强,与SPI有关的软件就相当简单,使CPU有更多的时…

SPI总线(一):基本原理篇

相关文章: SPI总线(二):驱动分析篇 SPI总线(三):驱动实例 1、什么是SPI? SPI是串行外设接口(Serial Peripheral Interface)的缩写。是 Motorola 公司推出的一 种同步串行接口技术&a…

关于IIC和SPI总线

IICvs SPI 现今,在低端数字通信应用领域,我们随处可见IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身影。原因是这两种通信协议非常适合近距离低速芯片间通信。Philips(for IIC)和Motorola&#xff08…

I2C和SPI总线对比

最近2周一直在调试IIC和SPI总线设备,这里记录一下2种总线,以备后忘。 一 IIC总线 I2C--INTER-IC串行总线的缩写,是PHILIPS公司推出的芯片间串行传输总线。它以1根串行数据线(SDA)和1根串行时钟线(SCL&#…

SPI总线介绍

一、概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmicro) 上面的微处理控制单元 (MCU) 上叫作同步串行端口(Synchronous Serial Port) 的模块(Module)来实现…

I2C总线和SPI总线的异同点

文章目录 1、内部总线、系统总线、外部总线的概念2、总线通信的基本概念3、I2C和SPI的经典物理层结构4、I2C总线与SPI总线的区别5、I2C总线和SPI总线的共同点 1、内部总线、系统总线、外部总线的概念 总线的分类方式是根据离芯片远近等级进行分类的:内部总线是外设…

SPI总线

【1】SPI总线相关的概念 1》SPI接口是Motorola 首先提出的全双工同步串行外围接口,采用主从模式(Master Slave)架构; 2》支持多slave模式应用,一般仅支持单Master。 3》时钟由Master控制,在时钟移位脉冲下…

1、SPI总线详解

概述 SPI(Serial Peripheral interface)串行外围设备接口,是一种高速的,全双工,同步的通信总线。 SPI接口主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理…

SPI协议及其工作原理详解

一、概述. SPI, Serial Perripheral Interface, 串行外围设备接口, 是 Motorola 公司推出的一种同步串行接口技术. SPI 总线在物理上是通过接在外围设备微控制器(PICmicro) 上面的微处理控制单元 (MCU) 上叫作同步串行端口(Synchronous Serial Port) 的模块(Module)来实现的…

SPI总线详解

1. SPI的简介和应用场景 SPI通信协议由摩托罗拉公司于20世纪80年代中期开发而成,SPI是种一个串行设接口,高速,全双工,同步的通信总线,芯片上只占用了四根线,这能大大的节约了芯片的管脚, 应用的…

Log4j2基本使用

文章目录 1. Log4j2入门2. Log4j2配置3. Log4j2异步日志4. Log4j2的性能 Apache Log4j 2是对Log4j的升级版,参考了logback的一些优秀的设计,并且修复了一些问题,因此带 来了一些重大的提升,主要有: 异常处理&#xff…

Logback 对比 Log4j2

Logback 对比 Log4j2 测试分为本地测试端和服务器端,分别对gateway网关进行日志输出的压测 同步日志,不打印日志 logback(150并发,0间隔,循环50次) log4j2(150并发,0间隔,循环50次) 同步日志,打印日志(大小4k,循环输出100次) logback(150并发,0间隔,循环50次) log4j2(150并…

Log4j(四)——Log4j1与Log4j2的区别

前言 几乎每个大型应用程序都包含自己的日志或跟踪API。为了符合这一规则,欧盟SEMPRER项目决定编写自己的跟踪API。这是在1996年初。经过无数次的增强、几个版本和大量的工作之后,API演变成了log4j,这是一个流行的Java日志包。这个包是在Apa…