【基础篇】1.3 IO分配(一)

写在前面

STM32的IO分配遵循先分配特定外设 IO,再分配通用 IO,最后微调的原则。我们根据项目需求来对MCU 的 IO口进行分配,以连接不同的外设,从而实现整体功能。比如:GPIO、IIC、SPI、SDIO、FSMC、USB、中断等。

接下来,我们分类看下都有哪些IO。

一,特定外设

1.1 I2C

I2C(Inter-Integrated Circuit)是一种串行通信协议,用于连接微控制器、传感器、存储器等低速设备。在I2C通信中,主设备和从设备通过两条线(SDA和SCL)进行数据传输,因此IO口在I2C通信中扮演着重要的角色。

IIC 一般用到 2 根线: IIC_SCL IIC_SDA。
  1. IIC_SCL:这是I2C总线上的时钟信号线,由主设备控制。主设备使用这个信号来同步数据传输,即在传输数据时,每个数据位都在SCL信号的边沿上进行传输。
  2. IIC_SDA:这是I2C总线上的数据信号线,用于在主设备和从设备之间传输数据。当主设备需要向从设备传输数据时,它将数据写入SDA线,并在SCL信号的边沿上进行传输。从设备在接收数据时,也是通过SDA线接收数据。

I2C IO口需要满足以下要求:

  1. 双向传输:I2C通信需要双向数据传输,因此IO口需要支持输入和输出功能。
  2. 开漏输出:为了保证多个设备可以连接到同一条I2C总线上,IO口需要采用开漏输出模式。这种模式下,输出端口可以输出低电平信号,但不能输出高电平信号,因此需要外部上拉电阻将信号线拉高到高电平状态。
  3. 输入上拉:为了保证输入信号的稳定性,IO口需要采用输入上拉模式。这种模式下,输入端口通过上拉电阻连接到正电源,以保证在没有信号输入时,输入端口处于高电平状态。
  4. 噪声抑制:I2C通信对噪声比较敏感,因此IO口需要采取一些措施来抑制噪声,如添加滤波器、降低工作频率等。

1.2 SPI

SPI(Serial Peripheral Interface)是一种串行外设接口规范,用于嵌入式系统。它定义了主设备和从设备(或外设)之间通信的方式。SPI通信协议使用的4根线分别是:片选线(CS/SS, Slave Select/Chip Select)、时钟线(SCK, Serial Clock)、串行输出数据线(MOSI/SDO, Master Out Slave In/Serial Data Output)、以及串行输入数据线(MISO/SDI, Master In Slave Out/Serial Data Input)

片选线用于选择需要进行通信的从设备;时钟线为SPI通信提供时钟;串行输出数据线用于主设备向从设备发送数据;串行输入数据线用于从设备向主设备发送数据。

  1. 基本结构:SPI通信通常涉及一个主设备(Master)和一个或多个从设备(Slave)。主设备负责初始化通信,而从设备响应主设备的请求。

  2. 信号线

    • MISO(Master In Slave Out):从设备到主设备的数据线。
    • MOSI(Master Out Slave In):主设备到从设备的数据线。
    • SCK(Serial Clock):由主设备产生的时钟信号,用于同步数据传输。
    • CS/SSCS/SS, Slave Select/Chip Select):由主设备控制,用于选择和与特定的从设备进行通信。
  3. 通信方式:SPI是全双工通信,这意味着数据可以在两个方向上同时传输(通过MISO和MOSI)。数据的传输与时钟信号(SCK)同步。

  4. 协议特点

    • 简单性:SPI协议相对简单,不需要复杂的初始化或配置。
    • 高速:由于使用了较少的信号线,并且是全双工通信,SPI通常比I2C更快。
    • 灵活性:SPI没有严格的通信速率或数据格式要求,这使得它非常灵活,可以适应各种应用需求。
  5. 应用:SPI常用于嵌入式系统中,如微控制器、传感器、存储器和其他外设之间的通信。由于其高速和灵活性,它在许多应用中都是首选的通信协议。

1.3 TIM

TIM指的是定时器(Timer)。它在STM32微控制器中扮演重要角色,用于各种定时、计数和PWM生成等任务,从而满足各种嵌入式应用的需求。
根据项目需要可选择 TIM_CH1/2/3/4/ETR/1N/2N/3N/BKIN 等,详细如下:
  1. TIM_CH1/2/3/4:这些指的是定时器的通道。STM32的通用定时器和高级定时器通常有4个通道(CH1至CH4),每个通道都可以独立配置和操作,用于输入捕获、输出比较、PWM生成等功能。
  2. ETR:External Trigger(外部触发)。此功能允许定时器由外部信号触发,从而实现与外部事件的同步。
  3. 1N/2N/3N:这些通常与互补输出相关。在某些PWM应用中,可能需要非重叠的PWM信号。这些“N”通道提供了与原始通道(如CH1、CH2、CH3)互补的输出,确保两个信号不会同时高电平,从而防止短路。
  4. BKIN:Break Input(刹车输入)。这是一个特殊的功能,允许通过外部信号来“刹车”或停止定时器的操作。这在某些电机控制应用中非常有用,例如需要快速停止PWM输出的情况。

1.4 USART/UART

USART是通用同步/异步串行接收/发送器。它是一个全双工通用同步/异步串行收发模块,该接口是一个高度灵活的串行通信设备。USART有 USART_TX/RX/CTS/RTS/CK 信号。

UART是通用异步收发器。它是一种通用的串行、异步通信总线,该总线有两条数据线,可以实现全双工的发送和接收。而UART仅有UART_TX/RX两个信号。

一般用到 2 根线: U(S)ART_TX U(S)ART_RX。

1.5 USB

USB,全称为通用串行总线(Universal Serial Bus),是一种串口总线标准,也是一种输入输出接口的技术规范。它被广泛应用于个人电脑和移动设备等信息通讯产品,并扩展至摄影器材、数字电视(机顶盒)、游戏机等其它相关领域。USB接口支持即插即用和热插拔功能,可以自动检测和安装外设,实现真正的即插即用。

USB使用差分传输模式,有两条数据 线: USB_DP 和 USB_DM。USB_DP是USB数据正信号线(USB-DP线,简写为D+); USB_DM是USB数据负信号线(USB-DM线,简写为D-)。

1.6 CAN

CAN外设通常指的是具有CAN通信功能的硬件设备,如CAN控制器或CAN收发器等。这些外设通常被用于实现CAN总线通信,以在设备之间传输数据。

而CAN_RX和CAN_TX则是CAN通信中的两个重要信号线。CAN_RX用于接收来自CAN总线的数据,而CAN_TX则用于向CAN总线发送数据。这两个信号线在物理层面上连接了CAN控制器和CAN总线,实现了数据的传输和接收。

在CAN通信中,数据是以帧的形式进行传输的。当CAN控制器需要发送数据时,它会将数据打包成帧,并通过CAN_TX信号线发送到CAN总线上。其他设备在CAN_RX信号线上接收到这个帧后,会对其进行解码并处理其中的数据。

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

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

相关文章

【python】Debian安装miniconda、spyder、tushare

1. miniconda 安装 — 动手学深度学习 2.0.0 documentation中有安装Miniconda的一些说明。 Miniconda — miniconda documentation是Miniconda网站,里面也有安装说明。 Debian安装按照linux安装即可: mkdir -p ~/miniconda3 wget https://repo.anaco…

macbookpro 2024怎么恢复出厂设置

可能你的MacBook曾经是高性能的代表,但是现在它正慢慢地逝去了自己的光芒?随着逐年的使用以及文件的添加和程序的安装,你的MacBook可能会开始变得迟缓卡顿,或者失却了以往的光彩。如果你发现你的Mac开始出现这些严重问题&#xff…

英语综合教程1第三版的一些题

unit1 unit2 unit3 unit4 unit5 unit6

C++基础-this指针详解

本文详细讲解C++this指针 定义 this 是 C++ 中的一个关键字,一个特殊的指针,它指向当前对象地址(换句话说,其值为 &object),通过它可以访问当前对象的所有成员。 类定义好后我们就可以通过类来创建多个实例对象,每个对象都有各自的实例属性(实例变量),但是非内…

【电子器件】三级管参数

以下信息可能比较针对三极管的手册信息来罗列出来。 全部参数 反向击穿电压 V C B O {V}_{CBO} VCBO​集电极-基极电压, V C E O {V}_{CEO} VCEO​集电极-发射极电压, V E B O {V}_{EBO} VEBO​发射极-基极电压 集电极连续电流 I C {I}_{C} IC​ 集电…

3.1 内容管理模块 - 工程搭建、课程查询、配置Swagger、数据字典

文章目录 内容管理模块一、基础工程搭建1.1 需求分析1.2 业务流程1.3 数据模型1.4 创建模块工程1.4.1 介绍1.4.2 xuecheng-plus-content 聚合工程1.4.3 模块演示 二、课程查询准备2.1 需求分析2.1.1 业务流程2.1.2 数据模型 2.2 生成PO类2.2.1 新增Maven配置2.2.2 课程基本信息…

CSS的盒子模型(重点)

网页布局的三大核心:盒子模型、浮动、定位 网页布局的过程: 1. 先准备好相关的网页元素,网页元素基本都是盒子 Box 。 2. 利用 CSS 设置好盒子样式,然后摆放到相应位置。 3. 往盒子里面装内容.网页布局的核心本质: 就…

python+appium自动化常见操作

1、点击、输入操作 #点击 driver.find_element(id,com.lemon.lemonban:id/navigation_my).click() #输入 driver.find_element(id,com.lemon.lemonban:id/et_password).send_keys(abc)2、隐形等待 driver.implicitly_wait(10)3、显性等待 #显性等待 locator (xpath,xpath) wai…

技术分享 | Appium 用例录制

下载及安装 下载地址: github.com/appium/appi… 下载对应系统的 Appium 版本,安装完成之后,点击 “Start Server”,就启动了 Appium Server。 在启动成功页面点击右上角的放大镜,进入到创建 Session 页面。配置好 …

Python基础学习—Pandas数据分析实战剖析【文末送书-09】

文章目录 一.Pandas数据分析1.1 Pandas的主要应用包括:1.2 Pandas核心数据结构1.3 安装和导入Pandas 二.Pandas数据分析实战:用Python进行数据分析1. 数据集介绍2. 数据加载与初步观察3. 数据清洗4. 数据分析4.1 销售趋势分析4.2 热门商品分析 三.Pandas…

将开源免费进行到底,ThreadX开源电脑端GUIBuilder图形开发工具GUIX Studio

上个月微软刚刚宣布将ThreadX RTOS全家桶贡献给Eclipse基金会,免费供大家商用,宽松的MIT授权方式,就差这个GUIX Studio没有开源了,而且Windows还经常检索不到,并且也不提供离线包。 1、软件包有点大,700MB…

力扣第一题-两数之和[简单]

题目描述 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任…

【Python百宝箱】Python律动:探索声纹识别与语音合成的Python奇迹

语音的魔法方程:Python引领语音领域的创新探索 前言 在数字化时代,语音处理技术的快速发展为人机交互、安全认证、虚拟现实等领域带来了无限可能。本文深入探讨了声纹识别和语音合成的整合,以及Python在声学领域中的关键角色。通过详细介绍…

分布式事务--分布式事务理论基础

1.本地事务 本地事务,也就是传统的单机事务。在传统数据库事务中,必须要满足四个原则: 2.分布式事务 分布式事务,就是指不是在单个服务或单个数据库架构下,产生的事务,例如: 跨数据源的分布式…

《人工智能导论》知识思维导图梳理【第6章节】

文章目录 第六章 知识图谱1 知识图谱概述2 知识图谱相关概念3 知识图谱的逻辑结构4 知识图谱的数据存储5 知识图谱的构建过程6 例题 markdown内容的分享 第六章 知识图谱 1 知识图谱概述 2 知识图谱相关概念 3 知识图谱的逻辑结构 4 知识图谱的数据存储 5 知识图谱的构建过程 6…

【LeetCode: 2415. 反转二叉树的奇数层 | BFS + DFS】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…

超过 1450 个 pfSense 服务器因错误链而遭受 RCE 攻击

在线暴露的大约 1450 个 pfSense 实例容易受到命令注入和跨站点脚本漏洞的攻击,这些漏洞如果链接起来,可能使攻击者能够在设备上执行远程代码。 pfSense 是一款流行的开源防火墙和路由器软件,允许广泛的定制和部署灵活性。 它是一种经济高效…

python 如何快速注释几行代码

在 Python 中,可以使用 # 符号来注释单行代码,也可以使用三重引号 """ 或单引号 来注释多行代码。但如果要注释掉多行代码,手动的添加注释符号可能会比较麻烦。以下是一些快速注释多行代码的方法: 方法一&#x…

在js中浮点数精度丢失问题及使用bignumber处理高精度小数的数学运算

一、精度丢失: 正常计算:0.1 0.2 0.3 js计算:0.1 0.2 0.30000000000000004 正常计算:1 - 0.9 0.1 js计算:1 - 0.9 0.09999999999999998 正常计算:0.0532 * 100 5.32 js计算:0.0532 * …

中国剩余定理

中国剩余定理 一、问题的引入 一个整数除以3余2、除以5余3、除以7余2,求这个整数?答案:23 所谓中国剩余定理基本思想:知道一个整数对于几个不同的模数的余数,那么可以推断出该整数对于这些模数的最小非负整数解。 …