多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

嵌入式中IO、GPIO、专用IO

嵌入式中IO、GPIO、专用IO 在平日工作中总是听到“IO口”咋样咋样GPIO咋样咋样专用IO咋样咋样那究竟三者是什么总的来说专用IO和GPIO都是是IO的一个子集。IOInput/Output 输入/输出是所有输入输出方式GPIO、串口、SPI等对交互通道的统称。GPIOGeneral Purpose Input/Output通用型输入输出是IO范畴下最基础、最灵活配置的通用引脚仅指无固化功能的物理引脚专用IOSpecial Purpose Input/Output 是芯片上被固化了特定硬件功能的引脚只能用于实现对应的专属功能。下面我将从定义、包含关系、GPIO和专用IO如何选用三个角度进行论述一、定义IO指嵌入式系统与外部世界进行数据、信号交互的所有通道和方式。是一个宏观的范畴。只要能实现“输入”外部信号进系统或“输出”系统信号输出到外部的机制都属于IO不特指某一种硬件。GPIO是指嵌入式芯片上的具体硬件引脚是IO最基础、最常用的一种实现形式。它可以通过软件灵活配置为输入或输出没有被固化为特定的功能。GPIO接口就是单片机上的输入输出接口可以作为输出高低电平也可以进行读取外部的高低电平。一般情况下当单片机工作电压为5V时高电平为5V输入/输出,低电平为0V输出/输入。专用IO是嵌入式芯片引脚的一种类型这类引脚在硬件层面被绑定到芯片内部的特定功能模块egUART控制器、SPI控制器、ADC模块只能用于实现该模块对应的功能。部分芯片支持“引脚复用”但是本质还是切换到另一类专用功能并非纯通用GPIO二、包含关系通过下图来表达IO和GPIO直接关系并举例常用的有哪些在应用中IO只是概念涵盖所有输入输出方式可以是泛指常描述系统的交互方式在描述IO时可能同时操作GPIOLED专用IO串口发数据GPIO本质是具体的硬件引脚物理实体表示是可支持灵活配置的通用引脚常用来控制简单的外设LED、按键、蜂鸣器等。如复杂的功能使用则会造成代码操作频繁且CPU可能被占用或时序混乱使整个系统变得脆弱专用IO性能高高速/精准、稳定性强、开发成本低直接使用库函数适用需要标准化协议、高速传输、精准时序或模拟信号处理的场景。三、在实际项目中GPIO和专用IO如何选择首先根据外设情况和功能需求判断不同的功能需求直接决定能不能使用GPIO或专用IO需求推荐选择原因简单电平控制/检测GPIO只需高低电平即可实现GPIO足够且成本低eg按键、LED亮灭、继电器开关、简单传感器光敏电阻电平信号高速/同步数据传输专用IOSPI/I2C/UARTGPIO模拟SPI/I2C虽然可行但是速率低、占用CPU资源多且同步性差专用IO由硬件控制器驱动、速率高、稳定性强eg屏幕、传感器、存储芯片的数据传输精准时序/频率控制专用IOPWM/定时器GPIO模拟PWM靠软件延时精度低、易受其他代码干扰专用IO由硬件生成占空比/频率精准电机调速、LED调光、舵机控制模拟信号采集/输出专用IOADC/DACGPIO只能识别数字高低电平无法处理模拟信号专用IO是硬件模数/数模转换通道eg温度传感器、电压检测、音频输出通信协议标准化专用IOUART/SPI/I2C/CAN标准化协议串口调试、I2C传感器通信用专用IO兼容性好、开发效率高无需自己写复杂的模拟协议代码硬件资源不足/临时替代GPIO模拟专用IO如芯片没有多余的UART口但需要临时接一个低速串口设备可先用GPIO模拟 仅适合低速、非核心场景对于资源来说有闲置专用IO时优先用无则在低速/非核心场景下用GPIO模拟。通俗的说专用IO是“专业选手”负责核心、高性能的交互任务GPIO是“业余选手”负责简单、低要求的电平操作。换言之项目中只要涉及高速通信、精准时序、模拟信号处理优先选择专用IO仅简单电平控制/检测时用GPIO即可。综上所述当提及“操作IO口”可能是指任何输入输出操作说“配置GPIO”则明确是操作通用型引脚说专用IO则是被固化的特定硬件。
返回列表