嵌入式养成计划-52----ARM--开发板介绍--相关硬件基础内容介绍--GPIO讲解

news2024/12/24 3:36:55

一百三十一、开发板介绍

131.1 核心板介绍

在这里插入图片描述

131.2 拓展板

在这里插入图片描述

一百三十二、相关硬件基础内容介绍

132.1 PCB

PCB( Printed Circuit Board),中文名称为印制电路板,又称印刷线路板,
是重要的电子部件,是电子元器件的支撑体,是电子元器件电气相互连接的载体。
由于它是采用电子印刷术制作的,故被称为“印刷”电路板。

在这里插入图片描述

132.2 电路板丝印

  • 可以通过不同元器件的丝印标号在电路原理图中对应的硬件原理图
    电路板丝印是用丝网bai印刷技术来制作印刷电路板。
    丝印指得是丝印层,画pcb的时候是分层的,其中包含文字的那一层,用来标注元件或者添加其他信息,这一层叫丝印层。
    
    通过丝网印刷方式将元件外形、序号以及其他说明性文字印制在元件面或焊锡面上,
    以方便电路板生产过程的插件(包括表面封装元件的贴片)以及日后产品的维修操作。
    
  • 不同的电路元件的丝印图:
    Ux	:	常作为开发板上芯片的标号
    Rx	:	电阻
    Cx	:	电容
    Dx	:	二极管
    Qx	:	三极管
    
  • 标准器件的丝印的编号:
    U? --> 芯片  C? --> 电容   R? --> 电阻  L? --> 电感
    D? --> 二极管  Q? --> 三极管 J? --> 接插件 CON? --> 接插件
    
  • 非标准器件的丝印编号:器件的编号的名字可以自定义
    FAN1 --> 风扇
    LD1  --> LED1灯
    KEY1 --> 按键1
    
  • 网络标号
    在原理图上,器件引脚上边红色的字,就是网络标号,
    网络标号相同的两个引脚说明具有相同的电器连接属性,
    即在PCB板上两个引脚通过导线进行连接。
    
    网络标号(net label)是一个电气连接点,一般由字母或数字组成,
    具有相同网络标号的电气连接线、管脚、及网络是连接在一起的
    

一百三十三、GPIO讲解

133.1 GPIO概念

GPIO,英文全称为General-Purpose IO ports,也就是通用IO口。
在嵌入式系统中常常有数量众多,但是结构却比较简单的外部设备/电路,对这些设备/电路,有的需要CPU为之提供控制手段,有的则需要被CPU用作输入信号。
而且,许多这样的设备/电路只要求一位,即只要有开/关两种状态就够了,
比如:
	控制某个LED灯亮与灭;或者通过获取某个管脚的电平属性来达到判断外围设备的状态。
	对这些设备/电路的控制,使用传统的串行口或并行口都不合适。
	所以在微控制器芯片上一般都会提供一个“通用可编程IO接口”,即GPIO。 

133.2 LED灯电路原理图分析

133.2.1 在开发板上找到LED1的丝印

  • 通过查看资源拓展板,发现LED1的丝印为LD1

133.2.2 根据LED1丝印找到LED1在拓展板上的原理图

在这里插入图片描述

这个LED1电路原理图种有一个3.3v的电源,右边接地,
在LED1发光二极管左边接了一个电阻,用于分压限流,保护电路,右边接到一个三极管的集电极,三级管的基极网络标号为LED1

在这里插入图片描述

133.2.3 根据网络标号找转接板电路原理图

在这里插入图片描述
在这里插入图片描述

133.2.4 分析核心板电路原理图

在这里插入图片描述
在这里插入图片描述
通过分析,发现led1接的三极管的基极最终连接在SOC(stm32mp157aaa)的PE10管脚。

133.3 LED1工作原理分析

133.3.1 LED1工作原理

在这里插入图片描述

根据电路原理图分析,想要让LED1亮,只需要有电流流经发光二极管即可,需要形成闭合回路,
即需要三极管的集电极和发射极导通,这里需要三极管基极控制。

133.3.2 三极管分析

在这里插入图片描述

  • 三极管一般有两种应用场景:
    1.可以在电路里设计放大电路
    2.可以充当开关
    三极管分为NPN和PNP
    NPN:
    	当基极有一个高电平的输入时,集电极和发射极导通
    	当基极有一个低电平的输入时,集电极和发射极截止
    PNP:
    	当基极有一个高电平的输入时,集电极和发射极截止
    	当基极有一个低电平的输入时,集电极和发射极导通
        
    	所以在LED1电路中,只需要三极管的基极有一个高电平的输入,
    	集电极和发射极就能导通,电流就能够顺利流经发光二极管,发光二极管就能正常工作
    	而三极管的基极接在SOC的PE10管脚,所以只要PE10管脚输出高电平,LED1就可以亮
    

133.4 软件编程控制硬件原理

133.4.1 SOC对于GPIO控制的工作框图

在这里插入图片描述

133.4.2 软件编程控制硬件的原理

在芯片的生产厂商生产出芯片之后,会在内存空间中固化一段内存,这段内存占用了0-4G的内存寻址空间,对于这段内存中有一段内存专门用于进行硬件外设的控制,想要让外设进行工作,只需要向外设对应的这片内存中写0或者写1即可。这段空间是是属于外设的特殊功能寄存器组织

  • 软件编程控制硬件的思想:
    通过编程操作特殊功能寄存器,向特殊功能寄存器中写入特定的数据,就可以间接控制外设进行工作
    
  • 通用寄存器(R0-R15 CPSR)
    1.存在于CPU内部
    2.cpu想要读写数据,不需要寻址,只需要基于寄存器编号操作即可
    3.由ARM公司设计
    
  • 特殊功能寄存器:
    1.存在于SOC内部(内存中)
    2.操作这些寄存器需要使用内存读写指令,也需要这些内存的地址
    3.特殊功能寄存器由芯片厂商来实现
    4.特殊功能寄存器负责完成外设功能的实现
    

在这里插入图片描述

133.5 GPIO相关数据手册分析

133.5.1 GPIO章节

  • GPIO功能描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • GPIO输出功能框图分析
    GPIO输出可以通过,两种模式实现

    • 推挽输出
    • 开漏输出+上拉/下拉电阻
  • mos管特性介绍
    在这里插入图片描述

    • 推挽输出
      由两个互补的mos管相互配合完成高低电平的输出,推挽输出既可以输出高电平,也可以输出低电平
      在这里插入图片描述
    • 开漏输出
      在输出框图种只有一个Nmos管起作用,所以只能输出低电平,想要输出高电平必须外接上拉电阻
      或者
      在输出框图种只有一个Pmos管起作用,所以只能输出高电平,想要输出低电平必须外接下拉电阻
      在这里插入图片描述
  • GPIO相关寄存器介绍
    在这里插入图片描述

    • GPIOX_MODER寄存器
      GPIO模式选择寄存器,一组GPIO有16个管脚,这个寄存器两位管理一个管脚功能
      在这里插入图片描述
    • GPIOx_OTYPER
      用于设置GPIO的输出方式

    在这里插入图片描述

    • GPIOx_OSPEEDR
      用于设置GPIO端口的输出速度
      在这里插入图片描述
    • GPIOx_PUPDR
      设置上拉下拉电阻
      在这里插入图片描述
    • GPIOx_ODR
      GPIO数据输出寄存器
      在这里插入图片描述
    • GPIOx_BSRR
      管脚置位/复位寄存器
      在这里插入图片描述
      在这里插入图片描述
    • GPIOX_BRR
      在这里插入图片描述
  • GPIOE基地址的确定
    在这里插入图片描述

    GPIOE_MODER->0X50006000
    GPIOE_OTYPER->0X50006004
    GPIOE_OSPEEDR->0X50006008
    GPIOE_PUPDR->0X5000600C
    GPIOE_ODR->0X50006014
    

133.5.2 RCC章节

在这里插入图片描述

后面就根据这些编写汇编代码了

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

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

相关文章

WPS的JS宏基础(一)

基础知识 1、简单的第一个宏 //注意function只能全部用小写 function demo(){alert("你好!") }2、录制宏生成工资条 function 使用录制宏自动生成代码以JS宏为例()//使用相对引用 {Selection.Copy(undefined);ActiveCell.Offset(5, 0).Range("A1:M4").I…

【C++】new和delete深度解析

文章目录 一、new/delete是什么?1.new2.delete 二、new/delete怎么用?1.new2.delete3.new[]4.[]delete 三、new/delete为什么?1.为什么有operator new/operator delete?2.为什么要匹配使用new和delete? new/delete测试环境:visu…

使用Pytorch的一些小细节(一)

文章目录 前言数据结构-张量max函数索引函数赋值函数拼接函数 前言 由于不经常动手写代码,所以对于python语言中的常见数据结构的用法也不是很熟悉,对于pytorch中的数据结构就更加不熟悉了。之前的代码基础是基于C语言的,属性都是自己定义&a…

vue3使用element plus时遇到的问题

1.el-form中input无法输入 问题描述:在el-form中的el-input中输入数字或字母时出现卡顿,输入不进去的现象 问题原因:el-form的ref和model的名称写成了一样的单词 问题解决:两个不能一样 2.input去除边框 问题描述:…

【python海洋专题三十九】海洋指数画法--折线图样式三--不同颜色的线条

【python海洋专题三十九】海洋指数画法–折线图样式三–不同颜色的线条 数据:AMO_index 图像展示: 图片 往期推荐 图片 【python海洋专题一】查看数据nc文件的属性并输出属性到txt文件 【python海洋专题二】读取水深nc文件并水深地形图 【python海洋专题三】图像修饰之画…

文心一言 VS 讯飞星火 VS chatgpt (132)-- 算法导论11.2 4题

四、用go语言,说明在散列表内部,如何通过将所有未占用的槽位链接成一个自由链表,来分配和释放元素所占的存储空间。假定一个槽位可以存储一个标志、一个元素加上一个或两个指针。所有的字典和自由链表操作均应具有 O(1)的期望运行时间。该自由…

单元测试工具-Junit

文章目录 一. 认识Junit二. Junit中常用的注解1. Test2. Disabled3. BeforeAll & AfterAll4. BeforeEach & AfterEach 三. ParameterizedTest参数化1. 单参数2. 多参数2.1. CSV 获取参数2.2. 方法获取参数 四. Order控制测试用例的执行顺序五. 断言六. 测试套件1. 通过…

node插件MongoDB(三)—— 库mongoose 的使用和数据类型(一)

前言 提示:使用mongoose 的前提是你安装了node和 MongoDB。 mongoose 官网文档:http://mongoosejs.net/docs/index.html 文章目录 前言一、安装二、基本使用1. 打开bin目录的mongod.exe文件2. 基本使用的代码(连接mongodb 服务)3.…

【C++优先队列使用】问题总结

说明&#xff1a; 文章内容为关于priority_queue的使用总结&#xff0c;在C中要包含头文件<queue>文章内容为个人的学习整理&#xff0c;如有错误&#xff0c;欢迎指正。 文章目录 1. 优先队列默认是大根堆2. 关于优先队列和sort的比较逻辑2.1 sort的比较逻辑2.2 优先队…

【学术综述】-如何写出一篇好综述-写好综述要注意的问题

文章目录 1.前置1.1 SSD 的结构1.2 FTL的架构和作用 2 动机-why&#xff1f;3 做了什么【做了哪些方面的survey】&#xff1f;4 背景知识【上下文】5 研究的问题6 每个问题对应的解决方案 从昨天晚上【2023.11.09 22:00】到今天22:29的&#xff0c;花了一天的时间在读这篇surve…

gcc [linux]

目录 背景知识 gcc如何完成 格式 预处理&#xff08;进行宏替换&#xff09; 编译&#xff08;生成汇编&#xff09; 汇编&#xff08;生成机器可执行码&#xff09; 连接&#xff08;生成可执行文件或库文件&#xff09; 函数库 静态库 静态链接优势 动态库 动态链…

Ubuntu配置Yolov8环境并训练自己的数据集

文章目录 一、环境配置与功能测试1.1 安装1.2 目标检测1.3 实例分割1.4 分类1.5 姿态检测 二、训练数据标注三、数据集训练方法3.1 命令训练3.2 代码训练 前言&#xff1a;需要先安装CUDA和Anaconda&#xff0c;它们的安装参考我这篇文章&#xff1a;Ubuntu配置深度学习环境&am…

局域网下搭建SVN服务器

文章目录 1. 下载SVN服务器(VisualSVN Server)2. 安装SVN服务器(VisualSVN Server)3. 下载并安装TortoiseSVN4. 搭建SVN服务器 1. 下载SVN服务器(VisualSVN Server) 下载地址 2. 安装SVN服务器(VisualSVN Server) 默认安装即可 Location&#xff1a;VisualSVN Server的安装…

SpringBoot前后端分离整合cas(客户端)

SpringBoot前后端分离整合cas&#xff08;客户端&#xff09; cas认证详细流程&#xff1a; 前后端分离&#xff1a;项目前端使用nginx启动&#xff0c;后端是springBoot服务&#xff1b; nginx可以统一管理Cookie&#xff0c;避免出现跨域问题。 添加依赖 <dependency&g…

探索未来,开启无限可能:打造智慧应用,亚马逊云科技大语言模型助您一臂之力

文章目录 什么是大模型&#xff1f;大模型训练方法亚马逊云科技推出生成式AI新工具 —— aws toolkit使用教程 总结 什么是大模型&#xff1f; 近期&#xff0c;生成式大模型是人工智能领域的研究热点。这些生成式大模型&#xff0c;诸如文心一言、文心一格、ChatGPT、Stable …

strcat()用法

描述 头文件&#xff1a;<string.h>char *strcat&#xff08;char *dest&#xff0c; const char *src&#xff09;功能&#xff1a;将src字符串加到dest上&#xff0c;并返回指向dest字符串的指针。 举例 #include<stdio.h> #include<string.h> int mai…

使用非递归的方式实现归并排序

使用非递归的方式实现归并排序 话不多说&#xff0c;直接上代码&#xff1a; public class MergySort {public static void main(String[] args) {int[] nums {38, 27, 43, 3, 9, 82, 10};int[] sortedArray MergySort.mergySort(nums);// 输出排序后的数组for (int num : …

神仙打架!腾讯云阿里云谁更棋高一着?

现在&#xff0c;腾讯云和阿里云都在打价格战&#xff0c;推出了一系列的优惠政策。其中&#xff0c;腾讯云服务器只需要88元&#xff0c;而阿里云服务器也只需要99元。这么便宜的价格&#xff0c;是不是让你心动不已呢&#xff1f; 腾讯云的88元服务器&#xff1a;https://te…

CG Magic分享如何解决Vray渲染器使用不了的问题?

大家在使用Vray渲染器时&#xff0c;经常会有网友反馈说&#xff0c;为什么Vray渲染器使用不了的情况&#xff1f; vray渲染器是安装中出了问题嘛&#xff0c;还是什么原因呢&#xff1f;导致vray渲染器渲染不了。 那么&#xff0c;vray渲染器怎么安装才能正常使用呢&#xff…

java try catch 异常后还会继续执行吗

1、有 try-catch 语句块&#xff0c;并且 throw 在 catch 语句块里&#xff0c;那么 try 语句块中引发异常&#xff08;报错&#xff09;的那一行代码的后续代码都不执行并且 catch 语句块后的代码也都不执行&#xff08;遇到 finally 除外&#xff09;。&#xff08;见情形一和…