嵌入式基础 硬件接口汇总

news2024/11/16 0:45:39

在此收集整理嵌入式通信中常见的接口协议,它们具有一定的通用性,在今后的开发中会反复遇到。
包括但不限于以下类别(逐步完善中…):

  • GPIO
  • UART
  • SPI
  • I2C
  • USB
  • Ethernet
  • NAND Flash类
  • SDRAM类(ram-like)
  • LCD
  • MIPI

分析方法:

  • 看原理图:看开发板处理器如何和芯片引脚对接
  • 接口协议:数据怎么传输?引脚如何配合?
  • 设置时序:每个信号高低电平的时间都有要求,不能过慢也不能过快

GPIO

1. 基本介绍

GPIO,全称General-Purpose Input/Output,即通用输入/输出接口,是嵌入式系统中一种常见的接口类型。它允许微控制器(MCU)或微处理器(MPU)与外部设备进行数字信号的交互。GPIO端口通常由一系列可配置的引脚组成,每个引脚都可以独立设置为输入或输出模式,并且可以根据需要进行编程。

  • 可配置性:
    GPIO引脚的功能可以通过软件配置,既可以作为输入接收外部信号,也可以作为输出发送信号。输出模式下,可以设定为推挽输出或开漏输出,以适应不同的负载类型。输入模式下,可以配置为上拉、下拉或浮空状态。
  • 工作模式:
    STM32等微控制器的GPIO具有多种工作模式,包括但不限于输入浮空、输入上拉、输入下拉、推挽输出、开漏输出、模拟输入等。
    某些GPIO还可以配置为复用功能,例如作为时钟信号、中断信号或与其他外设(如USART、SPI、I²C等)共享的信号线。
  • 寄存器控制:
    GPIO的操作通过一组寄存器进行,包括数据方向寄存器(设置引脚的方向)、数据输出寄存器(设置输出引脚的值)、数据输入寄存器(读取输入引脚的值)等。还可能有中断使能寄存器、配置寄存器等,用于控制中断和引脚的其他特性。
  • 应用:
    控制LED、继电器、按键等简单外设。读取传感器的状态,如光敏电阻、温度传感器等。用于设备间的基本通信,如通过GPIO实现简单的串行通信或同步脉冲信号。实现复杂的系统级功能,如通过GPIO配置产生PWM波形控制电机速度。
  • 优点:
    GPIO提供了灵活的接口,使得开发者能够根据项目需求调整硬件配置。小封装,占用空间小,易于集成。成本效益高,因为GPIO端口通常内置于微控制器中,不需要额外的外设。
  • 注意事项:
    在使用GPIO时,需要注意驱动能力,确保所连接的外设不会超过GPIO的最大电流限制。对于输入引脚,应考虑噪声抑制和保护措施,避免外部干扰导致错误的信号读取。

2. 硬件连接

GPIO

  • 单端IO引脚,上拉或者下拉

3. 软件协议

需要了解GPIO的寄存器布局和地址。通过对特定寄存器的读写配置,即可完成对GPIO引脚的配置以及数据的输入输出。

4. 参考资料

GPIO




UART

1. 基本介绍

UART,全称Universal Asynchronous Receiver/Transmitter,是一种用于串行通信的标准协议,通常用于微控制器和其他设备之间的数据传输。UART的主要功能是将并行数据转换为串行数据,以便通过单一通信线路(加上一个地线)进行传输,然后在接收端再将串行数据转换回并行数据。

  • 异步通信:UART采用异步方式工作,这意味着发送方和接收方不需要共享时钟信号。数据的传输速率(波特率)在通信开始前由双方预先设定好,从而保证数据的正确接收。
  • 数据格式:UART数据传输的格式通常包含一个起始位(start bit)、5至8位的数据位(data bits)、一个或多个停止位(stop bits)以及可选的奇偶校验位(parity bit)。起始位用于表示一个字符的开始,停止位用于表示一个字符的结束。
  • 波特率:波特率定义了数据传输的速度,单位是位每秒(bps)。常见的波特率有9600bps、19200bps、115200bps等。
  • 硬件接口:UART通信通常使用两条线路,分别是TX(发送)和RX(接收),在某些情况下,可能还会有一条用于硬件流控制的线路,如RTS(请求发送)和CTS(清除发送)。
  • 设备间通信:通常使用串口转USB连接微控制器与个人电脑,进行程序下载、调试或数据采集。在嵌入式系统中,UART可以用于连接不同类型的设备,如传感器、执行器、显示器等。

2. 硬件连接

  • 示意图1
    UART1

  • 示意图2
    UART2

  • RX

  • TX

3. 软件协议

UART_DATA
UART通信双方需要约定通信COM端口、波特率、数据位、检验位、停止位数等。只能人为事先约定好。
比如:波特率115200bps、数据位8bit、无校验、停止位1bit

4. 参考资料

UART通信协议及其工作原理




I2C

1. 基本介绍

I2C,全称Inter-Integrated Circuit,是一种两线式串行总线协议,由NXP半导体公司(前身为飞利浦半导体)开发,用于连接低速的微控制器和各种外围设备,如EEPROM、A/D转换器、D/A转换器、I/O扩展卡、实时时钟、传感器等。

  • 两线制:I2C总线使用两条信号线:SDA(Serial Data Line,串行数据线)和SCL(Serial Clock Line,串行时钟线)。
  • 半双工通信:数据在SDA线上是单向的,但方向可以改变,因此被称为半双工。这意味着设备要么发送数据,要么接收数据,不能同时进行。
  • 主从架构:I2C总线允许多个设备共享同一总线,但在任何时候只能有一个主设备。主设备负责初始化数据传输并提供时钟信号。从设备响应主设备的请求。
  • 寻址机制:每个I2C设备都有一个唯一的7位或10位地址,这使得主设备能够选择特定的从设备进行通信。7位地址允许最多128个不同的设备,而10位地址可以支持更多的设备。
  • 仲裁机制:当多个主设备试图同时控制总线时,I2C总线具有内置的仲裁机制,以避免数据冲突。如果两个或更多的主设备同时启动总线,那么具有较低地址的主设备将获得总线控制权。
  • 可扩展性:理论上,I2C总线可以连接无限数量的设备,但实际中受到总线电容和电流限制的约束。
  • 低功耗:I2C总线的低信号电平和简单的布线要求使其成为低功耗应用的理想选择。
  • 标准速度:I2C总线有几种速度模式,包括标准模式(最高100 kbps)、快速模式(最高400 kbps)、高速模式(最高3.4 Mbps)和超快速模式(高于3.4 Mbps,具体取决于设备)。
  • 简单性:I2C总线的简单性和低成本使其成为许多嵌入式系统和微控制器应用中常见的通信标准。

2. 硬件连接

I2C

  • SDA:Serial Data Line,串行数据线。上拉电阻,控制总线电压电流
  • SCL:Serial Clock Line,串行时钟线。上拉电阻,控制总线电压电流

3. 软件协议

  • 整体时序:
    I2C_data
  1. 空闲状态:SDA、SCL均为高电平
  2. 开始信号:SDA首先跳变为低电平,表示有数据传输开始,SCL跟着开始跳变为低电平
  3. 结束信号:SDA首先跳变为高电平,表示有数据传输结束,SCL跟着开始跳变为高电平
  4. 主机写操作:START + 从机地址(7bit)+ R/W_n(1bit,“0”)+ ACK(1bit)+ Data(8bit)+ ACK(1bit)+ STOP,其中每个ACK由从机占据总线提供。
  5. 主机读操作:START + 从机地址(7bit)+ R/W_n(1bit,“1”)+ ACK(1bit)+ Data(8bit)+ ACK(1bit)+ STOP,其中第一个ACK由从机占据总线提供,之后的每个ACK由主机占据总线提供。
  6. 具体Data是什么含义,根据芯片手册而定

4. 参考资料

基础通信协议之 IIC (I2C) 详细讲解




SPI

1. 基本介绍

SPI,全称为Serial Peripheral Interface(串行外设接口),是一种高速、全双工、同步的串行通信总线,主要用于短距离的芯片间通信。SPI最初由Motorola(摩托罗拉)在20世纪80年代中期定义,现在已经被广泛采用,特别是在嵌入式系统中。

  • 全双工通信:SPI能够在两个方向上同时传输数据,即发送和接收可以同时进行,这使得数据交换更高效。
  • 同步串行:SPI通信是同步的,意味着数据的传输受一个共同的时钟信号控制,这个时钟信号通常由主设备提供。
  • 四线接口:SPI接口通常使用四根线,包括:
    MISO(Master In Slave Out,主设备接收数据)
    MOSI(Master Out Slave In,主设备发送数据)
    SCK(Serial Clock,串行时钟)
    SS/CS(Slave Select/Chip Select,从设备选择信号)
  • 主从架构:SPI通信总是有一个主设备和一个或多个从设备。主设备控制通信的开始和结束,以及时钟信号的生成,而从设备则响应主设备的指令。
  • 可配置的数据帧大小:SPI支持可变长度的数据帧,从8位到16位甚至更多,这取决于具体的应用需求和设备的能力。
  • 简单易用:SPI接口的简单性使得它在需要短距离、高速数据传输的应用中非常受欢迎,例如在微控制器与外围设备如ADC(模数转换器)、DAC(数模转换器)、EEPROM(电可擦除可编程只读存储器)、闪存、传感器和其他IC芯片之间的通信。
  • 扩展性:虽然SPI是基于点对点的通信,但是通过使用多个CS/SS信号,可以实现一个主设备与多个从设备之间的通信。

2. 硬件连接

  • 示意图1
    SPI1

  • 示意图2
    在这里插入图片描述

  • SCK:时钟信号,主设备发出

  • MOSI:主出从入

  • MISO:主入从出

  • SS_n:片选,使能

3. 软件协议

通过CPOL、CPHA来设置SPI工作模式
CPOL:0,SCK空闲时为低电平;1,SCK空闲时为高电平
CPHA:0,第一个跳变沿开始采样;1,第二个跳变沿开始采样
SPI_TQ

SPI_code

4. 参考资料

SPI原理超详细讲解
SPI接口通信协议详解




NAND Flash类

1. 基本介绍

2. 硬件连接

3. 软件协议

4. 参考资料




SDRAM类(ram-like)

1. 基本介绍

2. 硬件连接

3. 软件协议

4. 参考资料




LCD RGB888

1. 基本介绍

LCD,全称Liquid Crystal Display,的RGB888接口是一种用于传输图像数据到LCD面板的并行数字接口。RGB888接口之所以得名,是因为它使用了RGB(红、绿、蓝)三种颜色通道,每个通道使用8位来表示颜色强度,从而形成了24位颜色深度。

  • 24位颜色深度:RGB888接口使用24位来表示每像素的颜色信息,这意味着每个像素的颜色可以由R、G、B三个8位的二进制数来确定。这种格式可以表示16,777,216种颜色(2^8 * 2^8 * 2^8),也就是通常所说的真彩色。
  • 并行传输:与串行接口不同,RGB888接口使用并行的方式传输数据,这意味着红、绿、蓝三个颜色通道的数据是同时传输的。这种并行传输可以提供更高的数据吞吐量,适合高分辨率和高刷新率的LCD屏幕。
  • 控制信号:除了RGB数据线之外,RGB888接口还包含一些必要的控制信号,如:
    Hsync(水平同步):用于指示一行像素数据的开始和结束。
    Vsync(垂直同步):用于指示一帧(屏幕刷新周期)的开始和结束。
    Pixel Clock(像素时钟):用于同步数据传输速率,确保数据正确地与屏幕上的像素位置对应。
    可能还包括其他信号,如数据使能(DE)等,用于进一步控制数据的有效性。
  • 数据线:对于RGB888,通常会有至少24根数据线(8根红色、8根绿色和8根蓝色),再加上控制信号线,构成了整个接口。

2. 硬件连接

  • 示意图1
    TFTLCD
  • 示意图2
    LCD2

其中最核心的引脚有:

  • R[7:0]:8bit,传输一个像素的红色分量数据
  • G[7:0]:8bit,传输一个像素的绿色分量数据
  • B[8:0]:8bit,传输一个像素的蓝色分量数据
  • HSYNC:水平同步信号,行同步
  • VSYNC:垂直同步信号,场同步
  • CLK:时钟信号

3. 软件协议

  • 整体时序图:
    LCDRGB888_TQ
    时序说明:
  • 像素时钟 (DCLK):
    这是最重要的时钟信号,用于同步像素数据的传输。每个像素数据包(24位)会在这个时钟的上升沿或下降沿被采样。
  • 水平同步信号 (HSYNC):
    HSync是一个脉冲信号,用于标识一行像素数据的开始。当HSync有效时(通常是低电平),表示一行的开始,LCD控制器应准备好接收新一行的数据。
  • 垂直同步信号 (VSYNC):
    类似于HSync,但用于标识一帧的开始。当VSync有效时,表示新的一帧开始,LCD控制器应准备好接收新一帧的数据。
  • 数据使能信号 (Data Enable, DE):
    DE信号用于指示当前传输的像素数据是有效的。在DE有效期间,像素时钟下的数据将被LCD控制器接受并处理。
  • 数据传输:
    在DE信号有效期间,RGB数据在像素时钟的同步下按顺序传输。例如,对于RGB888,每一组24位数据代表一个像素的颜色值,其中8位用于红色(R),8位用于绿色(G),8位用于蓝色(B)。
  • 前后沿空白期 (Front Porch 和 Back Porch):
    在HSync和VSync信号之间,有前空白期和后空白期。前空白期是在HSync或VSync信号开始之前的一段时间,而后空白期是在HSync或VSync信号结束之后到下一行为或帧开始之前的一段时间。这些空白期用于信号的稳定和LCD控制器的准备。
  • 行间隔 (Line Interval):
    这是从一行的HSync信号结束到下一行的HSync信号开始的时间。它包括了有效像素数据传输时间加上前后空白期的时间。
  • 帧间隔 (Frame Interval):
    这是从一帧的VSync信号结束到下一帧的VSync信号开始的时间。它包括了有效行数据传输时间加上前后空白期的时间。
    具体时间设置需要参看开发板处理器芯片手册以及LCD芯片手册的要求。

4. 参考资料

FPGA 25 RGB888(兼容RGB565) 屏幕驱动设计




MIPI

1. 基本介绍

2. 硬件连接

3. 软件协议

4. 参考资料




USB

1. 基本介绍

2. 硬件连接

3. 软件协议

4. 参考资料




Ethernet

1. 基本介绍

2. 硬件连接

3. 软件协议

4. 参考资料




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

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

相关文章

机器学习——随机森林(学习笔记)

目录 一、基础认识 1. 集成算法介绍 2. 集成算法种类 二、sklearn中的随机森林 1. ensemble.RandomForestClassifier (随机森林分类) (1)基本参数 (2)基本属性 (3)基本接口 …

【Linux】centos7安装PHP7.4报错:libzip版本过低

问题描述 configure: error: Package requirements (libzip > 0.11 libzip ! 1.3.1 libzip ! 1.7.0) were not met: checking for libzip > 0.11 libzip ! 1.3.1 libzip ! 1.7.0... no configure: error: Package requirements (libzip > 0.11 libzip ! 1.3.1 libzi…

DAMA学习笔记(五)-数据存储和操作

1.引言 数据存储与操作包括对存储数据的设计、实施和支持,最大化实现数据资源的价值,贯穿于数据创建/获取到处置的整个生命周期。 数据存储与操作包含两个子活动(图6-1)。 图6-1 语境关系图:数据存储与操作 (1) 数据库…

分布式系统—Ceph块存储系统(RBD接口)

目录 一、服务端操作 1 创建一个名为 rbd-xy101 的专门用于 RBD 的存储池 2 将存储池转换为 RBD 模式 3 初始化存储池 4 创建镜像 5 管理镜像 6.Linux客户端使用 在管理节点创建并授权一个用户可访问指定的 RBD 存储池 ​编辑修改RBD镜像特性,CentOS7默认情…

英特尔CPU研发团队繁忙的一天

早晨:准备与启动 7:00 AM - 起床与准备 研发团队的工程师们早早起床,快速洗漱并享用健康的早餐。部分工程师会进行晨间锻炼,保持头脑清醒和身体活力。 8:00 AM - 到达办公室 工程师们来到位于硅谷的英特尔总部,进入研发中心。…

Open-TeleVision——通过VR沉浸式感受人形机器人视野的远程操作

前言 7.3日,我司大模型机器人(具身智能)线下营群里的一学员发了《Open-TeleVision: Teleoperation with Immersive Active Visual Feedback》这篇论文的链接,我当时快速看了一遍,还是有价值的一个工作(其有受mobile aloha工作的启发)&#x…

MT6816磁编码IC在工控机器人中的应用

在现代工业自动化领域,高精度的位置检测和控制技术对于机器人系统的稳定运行至关重要。MT6816磁编码IC作为一款先进的磁传感器解决方案,以其卓越的性能和稳定性,在工控机器人中得到了广泛的应用。本文将详细探讨MT6816磁编码IC在工控机器人中…

git常用命令及git分支

git常用命令及git分支 git常用命令设置用户签名初始化本地库查看本地库状态将文件添加到暂存区提交到本地库查看历史记录版本穿梭 git分支什么是分支分支的好处分支的操作查看分支创建分支切换分支删除分支合并分支合并冲突 git常用命令 设置用户签名 //设置用户签名 git con…

Golang:数据科学领域中的高性能并发编程新星

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 文章内容 📒📝 并发性能的卓越表现📝 系统级工具的便捷性📝 语言设计的简洁性📝 强类型系统的严格性📝 版本兼容性的稳定性📝 内置工具的全面性⚓️ 相关链接 ⚓️📖 介绍 📖 在数据科学和机器学习的广阔天地…

音视频开发—使用FFmpeg从纯H264码流中提取图片 C语言实现

文章目录 1.H264码流文件解码流程关键流程详细解码流程详细步骤解析 2.JPEG编码流程详细编码流程详细步骤解析 3.完整示例代码4.效果展示 从纯H.264码流中提取图片的过程包括解码和JPEG编码两个主要步骤,以下是详细阐述 1.H264码流文件解码流程 关键流程 查找编解…

微信小程序---分包加载

一、分包加载 1. 什么是分包加载 什么是分包加载 ❓ 小程序的代码通常是由许多页面、组件以及资源等组成,随着小程序功能的增加,代码量也会逐渐增加,体积过大就会导致用户打开速度变慢,影响用户的使用体验。 分包加载是一种小…

线性代数|机器学习-P23梯度下降

文章目录 1. 梯度下降[线搜索方法]1.1 线搜索方法,运用一阶导数信息1.2 经典牛顿方法,运用二阶导数信息 2. hessian矩阵和凸函数2.1 实对称矩阵函数求导2.2. 线性函数求导 3. 无约束条件下的最值问题4. 正则化4.1 定义4.2 性质 5. 回溯线性搜索法 1. 梯度…

nodejs模板引擎(一)

在 Node.js 中使用模板引擎可以让您更轻松地生成动态 HTML 页面,通过将静态模板与动态数据结合,您可以创建可维护且易于扩展的 Web 应用程序。以下是一个使用 Express 框架和 EJS 模板引擎的基本示例: 安装必要的依赖: 首先&#…

(四)stm32之通信协议

一.串口通信 1、全双工、半双工、单工 单工:只能一个人传输,只能向一个方向传输 半双工:只能一个人传输,可以多个方向传输 全双工:多方传输,多个方向传输 2、同步通信、一步通信 异步通信:双方时钟可以不同步,发送的信息封装(加上起始位、停止位)实现同步,效率低,…

生成式AI推动药物发现革命:加速开发,降低成本

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Ubuntu 22.04.4 LTS (linux) Auditd 安全审计rm命令 记录操作

1 audit增加rm 规则 #sudo vim /etc/audit/rules.d/audit.rules -w /bin/rm -p x -k delfile #重新启动服务 sudo systemctl restart auditd #查看规则 sudo auditctl -l -w /bin/rm -p x -k delfile 2 测试规则 touch test.txt rm test.tx 3 查看日志 sudo ausear…

LDAPWordlistHarvester:基于LDAP数据的字典生成工具

关于LDAPWordlistHarvester LDAPWordlistHarvester是一款功能强大的字典列表生成工具,该工具可以根据LDAP中的详细信息生成字典列表文件,广大研究人员随后可以利用生成的字典文件测试目标域账号的非随机密码安全性。 工具特征 1、支持根据LDAP中的详细信…

liunx笔记1

线程池的基本概念是,在应用程序启动时创建一定数量的线程,并将它们保存在线程池中。当需要执行任务时,从线程池中获取一个空闲的线程,将任务分配给该线程执行。当任务执行完毕后,线程将返回到线程池,可以被…

【RNN练习】天气预测

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 一、环境及数据准备 1. 我的环境 语言环境:Python3.11.9编译器:Jupyter notebook深度学习框架:TensorFlow 2.15.0 2. 导…

手机和电脑通过TCP传输

一.工具 手机端:网络调试精灵 电脑端:野火网络调试助手 在开始通信之前,千万要查看一下电脑的防火墙是否关闭,否则可能会无法通信 在开始通信之前,千万要查看一下电脑的防火墙是否关闭,否则可能会无法通信…