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

ARM裸机开发(GPIO标准库开发)

一、使用的硬件开发板

开发板名称(硬件平台):FS-MP1A (STM32MP157AAA开发板套件)
主控制器:STM32MP157AAA3 = Cortex-A7 * 2 + Cortex-M4 ———— 异构核
CPU主频:Cortex-A7最高650MHz Cortex-M4最高209MHz
硬盘:eMMC(4G)  TF卡(32G)
DDR3:512MB
网卡:千兆网卡
屏幕:5寸、7寸、HDMI屏幕
摄像头:OV5640

1、核心板

2、拓展板

二、硬件术语

1、原理图

原理图/电路图用于绘制并呈现各个电气元件的硬件连接

2、PCB板

PCB板的中文名字是印制电路板
PCB板用于集成各种硬件外设并综合连接

3、芯片手册

4、丝印

丝印就是存在于PCB板上的白色字体
丝印是用于标志存在于PCB板上的各个电气元件的唯一标识,每个电气元件的丝印是唯一的PCB板硬件的电路图存在于电路图.pdf文档中,所以,可以直接查看电路图.pdf文档,他就是PCB板的硬件连接
在电路图中,蓝色字体代表的就是丝印,和PCB板上的白色字体是同一个东西不同电气元件的丝印标识:电阻       -----    R电容       -----    C二极管     -----    D发光二极管 -----    LD三极管     -----    Q接插件     -----    J集成IC芯片 -----    U

5、网络编号

在电路图中,红色字体就是网络编号
网络编号用于标志某个引脚或者某个引脚的功能存在于电路图中的网络编号都是两两对应的

6、二极管

二极管的特点:单向导通性
二极管的作用:保护电路,防止电流方向击穿电路

7、三极管

三极管:基极、集电极、发射极
三级管的特性:放大特性(模拟电路)、开关特性(数字电路)
三极管的分类:NPN三极管、PNP三极管模拟信号:连续变化的数值
数字信号:由0和1组成的电信号,0代表低电平信号,1代表高电平信号
当前FS-MP1A硬件平台是基于数字电路设计,也就是数据传输时,只能使用0和1组成的数字电信号进行数据传输

三、电路分析

分析电路图主要做两件事:1、分析当前硬件的有效电路的导通和截断情况2、找到控制当前外设的引脚(连接在主控芯片上的引脚)查找外设的引脚:实际外设(IO拓展板)——> 接插件(IO拓展板)——> 排线 ——> 接插件(核心板)——> 主控芯片(核心板)以查找LD1 —— LED1引脚为例:1、在PCB板上找到需要控制的实际外设的丝印:LD12、在IO资源拓展板原理图中找到LD1对应的电路,分析当前电路的导通/截断情况,得到人为可控制的引脚:LED13、在IO资源拓展板原理图中的接插件上,寻找和LED1网络编号亮亮对应的引脚:接插件上的第38号引脚LED14、在接插件原理图中,找到拓展板接插件第38号引脚LED1/PE10,被连接到,核心板接插件上的第4号引脚PE10上5、在核心板原理图中的第14页接插件上,可以找到:第4号引脚PE106、在核心板原理图中的第5页STM32MP157A主控芯片上,可以找到:PE10引脚
总结:PE10 ——> LED1 ——> 控制LD1的有效电路是否导通

四、分析芯片手册

1、框图分析

2、MP157芯片内部框图

3、物理地址隐射表

4、RCC章节

5、GPIO章节

        打开数据手册,看目录可以找到专门将GPIO的章节,也就是第13章节

1)GPIO介绍

GPIO口的八种工作模式:
输入模式	1. 浮空输入(Floating Input)	FI	无内部上拉 / 下拉,电平由外部电路决定,易受干扰2. 上拉输入(Pull-Up Input)	    PU	内部接拉电阻到 VDD,无外部信号时默认输出高电平3. 下拉输入(Pull-Down Input)	PD	内部接拉电阻到 GND,无外部信号时默认输出低电平4. 模拟输入(Analog Input)	    AI	引脚直接连接 ADC,用于采集模拟电压信号,不进行数字电平检测
输出模式	5. 推挽输出(Push-Pull Output)	PP	可输出高 / 低电平,驱动能力强,适合直接驱动 LED、继电器等6. 开漏输出(Open-Drain Output)	OD	仅能输出低电平,高电平需外部上拉电阻,适合电平转换、总线通信(如 I²C)7. 复用推挽输出(Alternate Push-Pull)	AF_PP	引脚功能复用为外设(如 UART_TX、SPI_MOSI),输出结构为推挽8. 复用开漏输出(Alternate Open-Drain)	AF_OD	引脚功能复用为外设(如 I²C_SDA/SCL),输出结构为开漏

2)上拉电阻

电路的悬空状态(高阻态):当前电路的阻值无限大,并不清楚当前电路处于高电平状态还是低电平状态
上拉电阻就是由一个电阻和电源相连
悬空状态的电路,存在不清楚是高电平还是低电平的问题,当外接上拉电阻以后,可以稳定当前电路处于高电平状态

3)下拉电阻

下拉电阻就是一个电阻与GND相连接
当一个电路处于悬空状态时,外接一个下拉电阻,可以时当前电路处于稳定的低电平状态,用于保护电路

4)推挽输出

使用推挽输出时
GPIO外设控制器中的N-MOS管和P-MOS管都可以正常工作
可以正常的输出高电平信号和低电平信号

5)开漏输出

使用开漏输出时
GPIO外设控制器中的P-MOS管不工作,N-MOS管正常工作
无法输出高电平信号,可以输出低电平信号如果一定要用开漏输出模式输出高电平,可以外接上拉电阻
这样在GPIO口悬空时会被上拉电阻拉到高电平

6)GPIO内部框图输出分析

7)GPIO内部框图输入分析

8)配置使能GPIO的寄存器

根据上图中,数据手册的描述,我们可以得知用于硬件初始化的寄存器有:
GPIOx_MODER寄存器    用于选择GPIO的工作模式(输入、输出、复用、模拟)
GPIOx_OTYPER寄存器   用于选择GPIO的输出模式(推挽、开漏)
GPIOx_OSPEEDR寄存器  用于选择GPIO输出速率(低速、中速、高速、超高速)
GPIOx_PUPDR寄存器    用于选择GPIO是否外接上拉/下拉电阻

(1)GPIOx_MODER(工作模式)

(2)GPIOx_OTYPER(输出模式)

(3)GPIOx_OSPEEDR(输出速率)

(4)GPIOx_PUPDR(上拉/下拉电阻)

9)存储GPIO读写值的寄存器

根据上图中,数据手册的描述,我们可以得知可以存储读GPIO写值的寄存器有:
GPIOx_IDR寄存器 ———— 这是一个只读寄存器 ———— 用于存储被输入的(读取到的)数据
GPIOx_ORD寄存器 ———— 这是一个读写寄存器 ———— 用于存储要输出的数据

http://www.dtcms.com/a/364045.html

相关文章:

  • Java搭建高效后端,Vue打造友好前端,联合构建电子采购管理系统,实现采购流程电子化、自动化,涵盖采购全周期管理,功能完备,附详细可运行源码
  • 提高卷积神经网络模型的一些应用
  • 复刻 Python 实现的小智语音客户端项目py-xiaozhi日记
  • AI助力开发:JetBrains官方DeepSeek插件Continue一站式上手!
  • 为什么研发文档的变更缺乏审批和追溯
  • 2025 大学生职业准备清单:从数据到财会,这些核心证书值得考
  • 毕业项目推荐:70-基于yolov8/yolov5/yolo11的苹果成熟度检测识别系统(Python+卷积神经网络)
  • Spring 循环依赖问题
  • 【代码随想录day 22】 力扣 40.组合总和II
  • 威科夫与强化学习状态
  • Spring Security 如何使用@PreAuthorize注解
  • srm信息系统数字化采购(程序代码部署程序包源码Java)
  • 实验3-传输层协议分析
  • [Java]PTA:jmu-Java-01入门-取数字浮点数
  • CentOS7安装Nginx服务——为你的网站配置https协议和自定义服务端口
  • js 获取字符串第一个字符
  • 《Visual Abstraction: A Plug-and-Play Approach for Text-Visual Retrieval》
  • 从 “容器保姆” 到 “云原生王者”:K8s 全方位指南
  • UCIE Specification详解(十三)
  • EPLAN 分散式端子:提升原理图设计效率的实用功能
  • 【C++】深入解析C++嵌套依赖类型与typename关键字
  • Jenkins Pipeline 语法
  • 【机器人概念设计软件操作手册】建筑与环境建模
  • 【服务器部署】CentOS 7/8 离线部署 Harbor v2.10.3 超详细攻略
  • docker desktop拉取镜像失败解决方案
  • ArkUI核心功能组件使用
  • pycharm无法添加本地conda解释器/命令行激活conda时出现很多无关内容
  • 【python】python进阶——pip命令
  • 单调栈与单调队列
  • 《从零搭建二叉树体系:从节点定义到子树判断的实战指南(含源码可直接运行)》