高效实战及电赛训练(4)- 数字系统的控制信息输入

电子森林 2020-09-07 00:00

上节讲了用MCU构成的数字系统的MCU选用及资源利用。关于MCU的编程就不再赘述,就跟不同的人每天要做的事情不同一样,千差万别,靠自己去按照逻辑流程去写就是。


MCU作为控制器,主要的作用是“控制”,而控制的依据,也就是来源,就是信息的输入,没有输入也就不知道该控制啥、如何控制。就如人,没有外界的任何刺激,无缘无故地做动作是不可能的。因此“信息的输入”是因,“控制”的动作是果。


MCU的CPU(中央处理单元,类我们的大脑)跟外界打交道是通过各种“外设接口”来实现的(类我们的神经系统)。下面的这张图简单示意了CPU同外设接口的几种常见方式,无论你用哪款通用的MCU,无外乎这些(一些高端专用的MCU还支持CAN、MIPI、以太网等)。

所谓外设接口,在器件上就表现为Pin(管脚),现在的趋势是:

  • 并行总线越来越少用,占用管脚多、封装大、如果用并行总线进行器件和器件连接造成双倍的管脚数量、板卡面积的浪费以及设计复杂度,如果你的PCB设计能力不够的话,信号传输速率高了会出现性能问题,除非迫不得已使用DDR之类的器件,一般的场合用SPI、SDIO这种也能满足要求了;

  • 同步串行的SPI和I2C大行其道,SPI速度高(一般时钟可以到50MHz),驱动个320*240的LCD甚至做数据采集足够了;I2C连接简单,两根线上可以挂一串外设,尤其是在物联网领域传感器基本都是用I2C连接的(也有SPI兼有的),因为其需要的数据率一般不会不高;SPI和I2C的区别我专门写过文章做了介绍,点击上面的链接即可;

  • 管脚复用,如论你用STM32还是NXP的LPC,28个管脚的MCU支持的总线可多了 - SPI、I2C、UART等都有,甚至还不只一组,如何实现的?就是通过内部的开关矩阵来灵活配置的,设计硬件的时候你要认真阅读数据手册,明确哪些信号是固定的,哪些信号是灵活配置的,以及可以被配置的功能;

  • ADC一般也被集成进来,因为很多场合都需要检测外部的模拟信号,弄一个12bit、1-2Msps的串行ADC(多个输入切换共用内部的一个ADC转换器)在器件内部,跟外设的接口基本就齐全了。如果你需要更高速的ADC来采集外面的数据,那就要通过并行总线或者通过外部的FPGA进行一下处理。


MCU的输入/输出管脚一般都被称为GPIO - General Purpose Input/Output,顾名思义,也就是这些管脚可以灵活地被用于输入或者输出管脚,作为输入管脚,它可以感知外面的信号的变化,如果是开关信号,则可以感知是高电平1(一般为70%Vcc~Vcc之间)还是低电平0(一般为GND ~0.3Vcc之间),如果是模拟信号,则可以通过内置的ADC或比较器来测量外部信号的电压;作为输出管脚,它可以输出1 - 高电平、0 - 低电平来控制外部的开关、指示LED等。


不要小瞧独立做战的一根GPIO,它能入、能出,能感知外部的波形变化,更能通过其电平的变化传输信息、控制外设,比如“PWM”。这方面的应用我专门介绍过。


所有的电子产品系统最基础的两个功能,如果你做电赛的话几乎所有的自控题目中都会要实现的:

  • 输入控制 - 一般为用一个按键(push button)通过一根I/O来连接MCU,多个控制输入可以用多根I/O线,当然还可以是拨码开关(Switch)或传感器的输出。

  • 显示状态或信息 - LED(亮、灭或按一定模式变化)、数码管(多个LED组成的,显示数值)、OLED(文字、图案、波形)、LCD(文字、图案、波形)。

看起来很简单,但我建议同学们一定要苦练这一部分,这是基本功,不仅会用,而且要知道如何用好,如何在不同的平台上用好,比如你在8051上会了,可以在STM32上也很容易写出来,即便不调用系统自带的库函数,自己去写也能写出来。你在MCU上能用,在FPGA上也能用Verilog写出来,通过对比二者的实现方式的不同来体会一下。


像SPI、I2C、UART这种常用的总线,MCU一般都会有现成的硬件功能,通过调用它们的库就可以轻松使用,你可以尝试这根据这些总线的时序用GPIO来模拟实现一下,理解一下这些总线的构成、不同、优缺点、局限性等。尤其是通过FPGA来实现一下,如果能全部写出来会感觉非常的酸爽。


还要学会灵活地应用这些管脚,根据具体的需要适当地变通,下面我们看一个案例 - 按键的输入:

常规的法如下图:一个按键对应于一个管脚。

4个输入按键需要4根I/O

再多几个按键输入呢?比如下面的这个4*4键盘:


用最直接的方式需要16根I/O,用矩阵扫描的方式也要用8根I/O才能搞定


再看下面的这两个产品:


你会发现它们都只用了一根信号管脚(另外两个信号是Vcc和GND),支持16/8个按键的输入!一下子节省了好多管脚资源,惊不惊喜?


这种方式的实现就是利用了MCU内部自带的ADC,数字信号只有0、1两种状态,而ADC则可以通过量化的位数来区分外部的2的n次方种不同的电压区间,比如8位的ADC可以区分256个不同的电压区间,用来区分16个按键组合出来的不同电压区间小菜一碟。


下面这个图就是用现成的8腿16键矩阵键盘构成的电路,只要一根ADC管脚就可以了,后面的C1实现了消抖的功能,都不需要软件进行按键的消抖处理了。

如果你手头的按键不是这种4*4的矩阵键盘,而是8个分立的push button,就可以采用下面的电路方式,当然更多的按键按照同理也可以轻松实现:

用8位的ADC量化后每个按键对应的数值区间,有些非线性,给程序带来了点麻烦。


可以修正一下电阻的值,让其更线性,按键增加到12个:


把计算出来的电阻值调整为能够方便买到的标准值,线性度依然很好:


这种灵活的变通解决了处理器上管脚较少的问题,当然也是一种比较好的训练,可以顺便体会一下ADC的工作原理,同时有一定的软件编程工作量,属于软硬配合实现一定的功能,很好,建议大家尝试一下,下面附赠两个代码示例,一个是Copy下面的连接到浏览器:

 http://www.nerdkits.com/forum/thread/1956/


另一个是点击左下角的“阅读原文”,跳转到的网址就是今天文章中引用的是电路。


正如文章中所说,这种灵活变通的方式毕竟是模拟方式的,把只有0、1的泾渭分明的世界变成了多级灰度,自然抵抗噪声的能力就会降低,因此在高可靠性的应用场景最好不用。


但,这对于理解好电子系统的“神经系统”是很有帮助的。


硬禾小帮手 - 硬件工程师的设计助手

硬禾学堂 - 硬件工程师的在线学习平台

电子森林 讲述电子工程师需要掌握的重要技能: PCB设计、FPGA应用、模拟信号链路、电源管理等等;不断刷新的行业新技术 - 树莓派、ESP32、Arduino等开源系统;随时代演进的热点应用 - 物联网、无人驾驶、人工智能....
评论
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-11 17:58 117浏览
  • 在智能化技术快速发展当下,图像数据的采集与处理逐渐成为自动驾驶、工业等领域的一项关键技术。高质量的图像数据采集与算法集成测试都是确保系统性能和可靠性的关键。随着技术的不断进步,对于图像数据的采集、处理和分析的需求日益增长,这不仅要求我们拥有高性能的相机硬件,还要求我们能够高效地集成和测试各种算法。我们探索了一种多源相机数据采集与算法集成测试方案,能够满足不同应用场景下对图像采集和算法测试的多样化需求,确保数据的准确性和算法的有效性。一、相机组成相机一般由镜头(Lens),图像传感器(Image
    康谋 2024-12-12 09:45 123浏览
  • 首先在gitee上打个广告:ad5d2f3b647444a88b6f7f9555fd681f.mp4 · 丙丁先生/香河英茂工作室中国 - Gitee.com丙丁先生 (mr-bingding) - Gitee.com2024年对我来说是充满挑战和机遇的一年。在这一年里,我不仅进行了多个开发板的测评,还尝试了多种不同的项目和技术。今天,我想分享一下这一年的故事,希望能给大家带来一些启发和乐趣。 年初的时候,我开始对各种开发板进行测评。从STM32WBA55CG到瑞萨、平头哥和平海的开发板,我都
    丙丁先生 2024-12-11 20:14 106浏览
  • RK3506 是瑞芯微推出的MPU产品,芯片制程为22nm,定位于轻量级、低成本解决方案。该MPU具有低功耗、外设接口丰富、实时性高的特点,适合用多种工商业场景。本文将基于RK3506的设计特点,为大家分析其应用场景。RK3506核心板主要分为三个型号,各型号间的区别如下图:​图 1  RK3506核心板处理器型号场景1:显示HMIRK3506核心板显示接口支持RGB、MIPI、QSPI输出,且支持2D图形加速,轻松运行QT、LVGL等GUI,最快3S内开
    万象奥科 2024-12-11 15:42 124浏览
  • 全球智能电视时代来临这年头若是消费者想随意地从各个通路中选购电视时,不难发现目前市场上的产品都已是具有智能联网功能的智能电视了,可以宣告智能电视的普及时代已到临!Google从2021年开始大力推广Google TV(即原Android TV的升级版),其他各大品牌商也都跟进推出搭载Google TV操作系统的机种,除了Google TV外,LG、Samsung、Panasonic等大厂牌也开发出自家的智能电视平台,可以看出各家业者都一致地看好这块大饼。智能电视的Wi-Fi连线怎么消失了?智能电
    百佳泰测试实验室 2024-12-12 17:33 126浏览
  • 近日,搭载紫光展锐W517芯片平台的INMO GO2由影目科技正式推出。作为全球首款专为商务场景设计的智能翻译眼镜,INMO GO2 以“快、准、稳”三大核心优势,突破传统翻译产品局限,为全球商务人士带来高效、自然、稳定的跨语言交流体验。 INMO GO2内置的W517芯片,是紫光展锐4G旗舰级智能穿戴平台,采用四核处理器,具有高性能、低功耗的优势,内置超微高集成技术,采用先进工艺,计算能力相比同档位竞品提升4倍,强大的性能提供更加多样化的应用场景。【视频见P盘链接】 依托“
    紫光展锐 2024-12-11 11:50 97浏览
  • 铁氧体芯片是一种基于铁氧体磁性材料制成的芯片,在通信、传感器、储能等领域有着广泛的应用。铁氧体磁性材料能够通过外加磁场调控其导电性质和反射性质,因此在信号处理和传感器技术方面有着独特的优势。以下是对半导体划片机在铁氧体划切领域应用的详细阐述: 一、半导体划片机的工作原理与特点半导体划片机是一种使用刀片或通过激光等方式高精度切割被加工物的装置,是半导体后道封测中晶圆切割和WLP切割环节的关键设备。它结合了水气电、空气静压高速主轴、精密机械传动、传感器及自动化控制等先进技术,具有高精度、高
    博捷芯划片机 2024-12-12 09:16 143浏览
  • 一、SAE J1939协议概述SAE J1939协议是由美国汽车工程师协会(SAE,Society of Automotive Engineers)定义的一种用于重型车辆和工业设备中的通信协议,主要应用于车辆和设备之间的实时数据交换。J1939基于CAN(Controller Area Network)总线技术,使用29bit的扩展标识符和扩展数据帧,CAN通信速率为250Kbps,用于车载电子控制单元(ECU)之间的通信和控制。小北同学在之前也对J1939协议做过扫盲科普【科普系列】SAE J
    北汇信息 2024-12-11 15:45 146浏览
  • 时源芯微——RE超标整机定位与解决详细流程一、 初步测量与问题确认使用专业的电磁辐射测量设备,对整机的辐射发射进行精确测量。确认是否存在RE超标问题,并记录超标频段和幅度。二、电缆检查与处理若存在信号电缆:步骤一:拔掉所有信号电缆,仅保留电源线,再次测量整机的辐射发射。若测量合格:判定问题出在信号电缆上,可能是电缆的共模电流导致。逐一连接信号电缆,每次连接后测量,定位具体哪根电缆或接口导致超标。对问题电缆进行处理,如加共模扼流圈、滤波器,或优化电缆布局和屏蔽。重新连接所有电缆,再次测量
    时源芯微 2024-12-11 17:11 145浏览
  • 应用环境与极具挑战性的测试需求在服务器制造领域里,系统整合测试(System Integration Test;SIT)是确保产品质量和性能的关键步骤。随着服务器系统的复杂性不断提升,包括:多种硬件组件、操作系统、虚拟化平台以及各种应用程序和服务的整合,服务器制造商面临着更有挑战性的测试需求。这些挑战主要体现在以下五个方面:1. 硬件和软件的高度整合:现代服务器通常包括多个处理器、内存模块、储存设备和网络接口。这些硬件组件必须与操作系统及应用软件无缝整合。SIT测试可以帮助制造商确保这些不同组件
    百佳泰测试实验室 2024-12-12 17:45 137浏览
  • 本文介绍瑞芯微RK3588主板/开发板Android12系统下,APK签名文件生成方法。触觉智能EVB3588开发板演示,搭载了瑞芯微RK3588芯片,该开发板是核心板加底板设计,音视频接口、通信接口等各类接口一应俱全,可帮助企业提高产品开发效率,缩短上市时间,降低成本和设计风险。工具准备下载Keytool-ImportKeyPair工具在源码:build/target/product/security/系统初始签名文件目录中,将以下三个文件拷贝出来:platform.pem;platform.
    Industio_触觉智能 2024-12-12 10:27 122浏览
  • 天问Block和Mixly是两个不同的编程工具,分别在单片机开发和教育编程领域有各自的应用。以下是对它们的详细比较: 基本定义 天问Block:天问Block是一个基于区块链技术的数字身份验证和数据交换平台。它的目标是为用户提供一个安全、去中心化、可信任的数字身份验证和数据交换解决方案。 Mixly:Mixly是一款由北京师范大学教育学部创客教育实验室开发的图形化编程软件,旨在为初学者提供一个易于学习和使用的Arduino编程环境。 主要功能 天问Block:支持STC全系列8位单片机,32位
    丙丁先生 2024-12-11 13:15 87浏览
  • 习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-12 10:13 83浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦