mcu使用感受(MCU的硬核科普)

mcu使用感受(MCU的硬核科普)(1)

目录

介绍

1.什么是微控制器(MCU)?

2.微控制器(MCU)的历史

3.单片机的分类及应用

4.中国MCU技术及知名厂商

5.单片机的基本功能

6.学习方法——使用单片机

7.MCU产品未来改进的六大维度

8.单片机编程

9.单片机编程工程师总结

10.如何开发单片机

11.解决 MCU Crystal 问题的 5 个技巧

12.芯片操作总结

13.常问问题

介绍

控制器( MCU ) 是建立在单个金属氧化物半导体 (MOS) 集成电路 (IC) 芯片上的小型计算机。微控制器由 CPU(处理器内核)、存储器和可编程输入/输出外设组成。在芯片上,通常包括少量RAM以及铁电 RAM、NOR 闪存或 OTP ROM。与个人计算机或其他通用应用程序中使用的微处理器相比,微控制器是为嵌入式应用程序设计的,由许多分立的芯片组成。本文将深入研究 MCU。

1.什么是微控制器(MCU)?

微控制器单元(MCU)适当降低了CPU的频率和规格,集成了内存、计数器、USB、A/D转换、UART、 PLCDMA等外围接口。同时,甚至将液晶驱动电路集成在单个芯片上,形成芯片级计算机,可以针对不同的应用进行不同的组合控制,如手机、PC外设、遥控器、汽车电子、工业步进电机、机器手臂等的控制,都可以在MCU中看到。

mcu使用感受(MCU的硬核科普)(2)

图1 MCU组件

2.微控制器(MCU)的历史

微控制器单元 的历史很短,但发展迅速。它的产生和发展与微处理器(CPU)的产生和发展大致同步。自1971年美国英特尔公司首次推出4位微处理器以来,其演进大致可分为五个阶段。以下是英特尔MCU的发展概况。

1971-1976

MCU开发初期

1971年11月,英特尔推出Intel 4004,这是一款集成度为2000个晶体管/芯片的4位微处理器,配备RAM、ROM和移位寄存器,是第一款MCS-4微处理器。推出了 Intel 8008 8 位微处理器,随后推出了来自不同公司的其他 8 位微处理器。

1976-1980

低性能MCU级

MCS-48系列由 Intel 公司于 1976年推出,采用单片结构,集成了一个 8 位 CPU。一个8位并行I/O 接口、一个8位定时器/计数器、RAM和半导体芯片上的ROM。它的寻址范围有限(不超过4 KB),没有串行I/O, RAM和ROM容量有限,中断系统简单,但其功能可以满足一般工控和智能仪表的需要和米。

1980~1983

高性能MCU级

本阶段推出的高性能 8 位微控制器通常包括串行端口、多级中断处理系统和多个 16 位定时器/计数器。增加了片内RAM和ROM的容量,寻址范围可达64 KB。A/D 转换接口也可用于单个芯片。

1983~1980年代后期

16位微控制器级。

1983年,英特尔推出高性能16位微控制器MCS-96 系列。由于采用了最新的制造工艺,芯片集成度高达 120,000 个晶体管/芯片。

1990 年代

CPU在集成度、功能、速度、可靠性、应用领域等各个方向都向更高水平发展。

3.单片机的分类及应用

MCU根据存储器类型分为两种:无片内ROM和有片内ROM的,无片内ROM的芯片必须外接EPROM(一般为8031);具有片上ROM的芯片分为片上EPROM(典型为87C51)、MASK片上掩膜ROM(典型为8051)、片上Flash(典型为89C51)等类型。

MCU根据其预期用途分为两种类型:通用型和专用型。根据数据总线的宽度和可同时处理的数据字节数分为4位、8位、16位和32位MCU。

mcu使用感受(MCU的硬核科普)(3)

图2 MCU产品类别

目前,中国应用最广泛的MCU市场是消费电子领域,其次是工业领域和汽车电子市场。消费电子产品包括家用电器、电视、游戏机以及音频和视频系统。工业领域包括智能家居、自动化、医疗应用以及新能源发电和配电。汽车领域包括汽车动力总成和安全控制系统。

工业单片机

工业MCU产品主要用于电机控制、仪器仪表、低压配电、电动工具、工业机器人等应用场景中的电机控制运行、数据采集控制等功能。

mcu使用感受(MCU的硬核科普)(4)

图 3 电动车充电器

随着工业设备复杂性的增加,MCU 设备的数量也在增加。考虑工业机器人:单个工业机器人至少使用十个MCU产品。

家电MCU

MCU广泛应用于家用电器,主要用于实现系统控制、电机控制、面板显示控制等功能。

家电市场主要分为小家电和大家电,小家电包括厨房电器(微波炉、电磁炉、豆浆机等)、家用电器(吸尘器、电风扇、电暖器等)。 )、个人生活小家电(电动牙刷、吹风机等),​大家用电主要为空调、冰箱、洗衣机等白色家电。

mcu使用感受(MCU的硬核科普)(5)

图 4 感应加热炊具应用程序框图

目前,32位MCU因其更高的规格和性能以及不断降低的成本成为市场主流,并广泛应用于汽车电子领域。工控/医疗等领域;但仍有大量的应用场景需要简单的控制,而低价值的MCU具有成本优势,因此继续占据着很大的市场。

位数

应用

4

计算器、汽车仪表、汽车防盗器、寻呼机、无线电话、CD机、液晶动态控制器、儿童玩具、秤、充电器、胎压计、温度计、遥控器等

8

电器、电流表、电机控制器、电动玩具机、寻呼机、传真机、电话机、键盘和USB等

16

手机、数码相机和录像机等

32

智能 家居、物联网、电机变频控制、安防监控、指纹识别、触摸按键、Modem、GPS、STB、工作站、ISDN电话、激光打印机、彩色传真机等

64

高级工作站、多媒体交互系统、高级电视游戏仪器、高级终端等。

根据 IC Insights 的数据,2019 年全球MCU市场规模约为 164 亿美元,到 2023 年可能达到 200 亿美元左右。

2019年中国MCU市场规模约为256亿元,约占全球市场的26%,2015-2019年复合增长率为9%。

从全球市场来看,汽车电路占全球MCU市场的33%。根据IC Insights数据,2023年车用MCU市场空间将达到81亿美元,整体增速相当可观;目前,32位MCU因其更高的规格和性能以及不断降低的成本成为市场主流,并广泛应用于汽车电子领域。工控/医疗等领域;但仍有大量的应用场景需要简单的控制,而低价值的MCU具有成本优势,因此继续占据着很大的市场。

mcu使用感受(MCU的硬核科普)(6)

图 5 MCU 市场结构

从格局来看,2020年全球车用MCU市场份额前五名分别是瑞萨、恩智浦、英飞凌、德州仪器微芯,合计占比87%。

4.中国MCU技术及知名厂商

MCU市场仍以海外龙头为主,中国优质厂商在细分领域逐步取得突破,在中国本土化加速的背景下,份额有望快速提升。

预计全球MCU市场将进一步增长,2019年全球MCU市场规模达到164亿美元,2023年达到200亿美元。

需求端,汽车电动化改善、物联网 渗透加速、家电智能变频需求增加、可穿戴设备快速迭代、工控稳步增长,继续带动MCU行业快速增长。(以MCU为例,2020-2023年全球市场复合增长率为7.7%,预计到2023年市场空间为81亿美元)

供给端,2020年受疫情影响,MCU行业持续供不应求。英飞凌、恩智浦。而ST,以及其他海外MCU大厂,出现了几倍到几十倍的价格,交货期超过50周;预计持续短缺将至少持续到 2021 年底和 2022 年第一季度。

电路壁垒方面,MCU下游领域对汽车电路的要求最高,其次是工业和家电电路,消费电子相对要求略低,根据MCU产品环境温度、良率、服务等寿命等参数。

从行业竞争格局来看,中国MCU厂商市场占有率较低,短期受益于库存短缺导致的加速更新换代,长期来看仍有较大提升空间:

全球MCU市场较为集中,微芯、ST MICROELECTRONICS、瑞萨、TI、NXP、英飞凌等厂商占据80%以上的市场份额;中国MCU市场规模约为250亿元,国内MCU厂商总市场份额不足12%,主要集中在消费市场,具有充足的扩展空间。

缺货导致中国MCU厂商步伐加快,在汽车、工业、消费类电路中,中国MCU认证步伐不断加快。

瑞萨电子——全球第一家汽车MCU制造商

瑞萨电子成立于 2003 年,由日立半导体部门和三菱电机半导体部门合并而成。其主要业务涵盖汽车、工业、通讯等领域。瑞萨是全球第一家汽车MCU制造商,2020年占汽车MCU市场的30%。

瑞萨MCU拥有完整的产品线,涵盖EV/HEV、动力总成、电动汽车、车载仪表盘、车载网络、底盘控制、ADAS等应用领域。

微芯科技-8位MCU主要特点,收购Atmel补充32位MCU实力

微芯科技公司(Microchip)成立于1989年,微芯 科技是全球领先的单芯片和模拟半导体供应商。公司主营业务为单片机、存储器产品、模拟接口、混合信息产品、技术授权等。

产品主要应用于嵌入式控制系统和物联网相关行业,包括数据处理、医疗互联网 (IoT)、智慧城市、工业4.0、智能医疗等。主要客户包括英特尔、戴尔洛克希德马丁、惠普、波音, 等等。

STST-ARM架构MCU王者

ST成立于1987年,产品主要应用于汽车产品、电脑周边、通讯系统、消费类产品、工业自动化控制系统等方面。其主要客户包括苹果、黑莓、博世、思科、Conti、惠普、诺基亚、小畑、三星和西部数据。

MCU车用级产品占公司收入的32.13%。St 拥有当前 MCU 市场 8.5% 的份额,是细分 32 位 MCU 市场的领导者。

ST深耕汽车半导体领域多年,公司拥有完整的产业链,产品具有极高的性价比,在车规级MCU占据主导地位。客户包括日产、奥迪、上汽、特斯拉等多家企业。

NXP——全球领先的汽车MCU制造商

恩智浦半导体成立于2006年,前身为飞利浦半导体事业部。恩智浦主营MCU、MPU等产品,可广泛应用于汽车电子、工业控制、智慧城市、智能家居、可穿戴产品等领域。其基于S32汽车平台的MCU/MPU在安全性和效率上优势明显,已被全球主流主机厂采用。

恩智浦自主研发的业界首款跨界MCU:I.MX RT系列。此类产品以其高集成度、性价比和安全性得到了众多互联网平台(如亚马逊)的认可。

恩智浦于 2015 年收购飞思卡尔(由摩托罗拉创立),使其在汽车行业的影响力更深。2020年,其47%的收入来自车载MCU。目前,公司占全球汽车MCU产业的27.8%,位居全球第二。恩智浦为智能汽车提供完整的半导体解决方案,包括汽车娱乐系统、高级驾驶辅助系统 (ADAS)。

华富电子-中国最大的家电MCU制造商

Sino Wealth Electronic Ltd.是一家MCU集成电路设计公司,主要产品包括8位Flash MCU、8位OTP/Mask MCU、16位 DSP 、4位OTP/Mask MCU,广泛应用于家用电器、汽车、工控、安防等领域;

在小家电领域,公司的竞争对手主要是来自韩国的ABOV和来自台湾的Holtek。在白色家电领域,公司的竞争对手主要来自欧美,包括瑞萨、NEC、TI、STM等。

5.单片机的基本功能

mcu使用感受(MCU的硬核科普)(7)

内部功能图

对于大多数MCU来说,以下功能是最常见和最基本的。不同单片机的描述方法可能不同,但本质是一样的。

1. Timer : Timer的种类虽然很多,但可以分为两大类。第一种是 具有固定时间间隔的Timer ,也就是说它的定时是由系统设定的,不能由用户程序控制。系统仅提供几种不同类型的定时器。给用户程序一个固定的时间间隔,如32Hz、16Hz、8Hz等。由于这种定时器在 4 位 MCU 中比较常见,可以用来实现时钟、定时等相关功能。

另一种是可编程定时器。这种定时器的计时可以由用户程序控制。控制方式包括时钟源的选择、预分频数的选择、预置数的设置等。大多数MCU同时具备这三种,也有的可能具备其中一种或两种。这种Timer应用非常灵活,实际使用也是千变万化的。最常见的应用之一是使用它来实现 PWM 输出。

由于可以自由选择时钟源,因此此类 Timer 一般与 Event Counter 结合使用。

2. IO口:任何MCU都有一定数量的IO口。没有 IO 口,MCU 将失去与外界通信的通道。根据IO口的可配置情况,可分为以下几种:

纯输入或纯输出:这种类型的IO口由MCU硬件设计决定,只能输入或输出,不能通过软件实时设置。

3 、直接读写IO口:例如MCS-51的IO口就 属于这种IO口。执行读IO端口命令时,为输入端口;当执行写 IO 端口命令时,它自动成为一个输出端口。

程序编程设置输入输出方向:该类IO口的输入或输出由程序根据实际需要设置,应用更灵活,可实现一些总线级应用,如12C总线、各种LCD、LED Driver控制总线等。

使用IO口的时候一定要牢记这一点:对于输入口,必须有一个清电平信号,保证不能悬空(这个可以通过加上拉或下拉电阻来实现) ; 而对于输出端口,输出状态电平必须考虑到其外部连接,应保证Standby或静态时没有source current或sink current。

外部中断:外部中断是大多数 MCU 的基本功能。它们通常用于实时信号生成、数据采样和状态检测。上升沿、下降沿、电平触发都是中断方式。在大多数情况下,外部中断是通过输入端口处理的。如果是IO口,只有设置为输入口时才会启用中断功能;如果设置为输出端口,外部中断功能会自动关闭(ATMEL的ATiny系列有一些例外,输出端口也可以触发中断功能)。外部中断的应用如下:

外触发信号检测:一种是基于实时性要求,如可控硅控制、突发信号检测等,另一种是基于省电。

信号频率测量::为确保不丢失信号,外部中断是最佳选择。

解码数据:为了降低遥控应用领域的设计成本,经常需要使用软件对各种编码数据进行解码,例如曼彻斯特编码和PWM 编码。

按键检测和系统唤醒:为了使 MCU 进入休眠状态,必须通过外部中断将其唤醒。最基本的形式是一个按钮,而层次的变化是由按钮的动作引起的。

4 、通信接口:MCU提供的通信接口一般有SPI接口、UART。I2C 接口等,描述如下:

SPI接口:这类接口是大多数MCU提供的最基本的通信方式。它的数据传输由一个同步时钟控制。信号包括SDI(串行数据输入)、SDO(串行数据输出)、SCLK(串行时钟)和Ready信号;在某些情况下,可能没有 Ready 信号;这类接口可以工作在Master模式或者Slave模式,通俗的说就是看谁提供时钟信号,提供时钟的一方是Master,对方是Slaver。

UART(Universal Asynchronous Receive Transmit):属于最基本的异步传输接口。它的信号线只有两条Rx和Tx线。基本数据格式为:Start Bit Data Bit(7-bits/8-bits) Parity Bit(Even, Odd or None) Stop Bit(1~2Bit)。一位数据所占用的时间称为波特率。

对于大多数单片机,数据位长度、数据校验方式(奇校验、偶校验或无校验)、停止位长度和波特率都可以通过程序编程灵活设置。当然。这类接口最常见的方式是与PC的串口通信。

I2C接口:I2C是飞利浦开发的数据传输协议。它还使用两个信号来实现:SDAT(串行数据输入和输出)和SCLK(串行时钟)。最大的好处是可以在这条总线上挂接多个设备,并且可以通过地址来识别和访问它们;I2C总线最大的优点之一就是通过IO口使用软件实现非常方便,其传输的数据速率完全由SCLK控制。为了控制,它可以快也可以慢,不像 UART 接口,它有严格的速率要求。

5 、看门狗:看门狗是大部分单片机的基本配置,只能让程序复位不能关闭(有些是在程序烧录时设置的,比如Microchip PIC 系列单片机),而有些单片机是由一个特定的方法,无论它是否打开。比如三星的KS57系列,只要程序访问Watchdog寄存器,就会自动开启,不能再次关闭。一般来说,看门狗的复位时间可以通过程序来设置。Watchdog最基本的应用是为MCU因意外故障而死机提供自恢复能力。

6.学习方法——使用单片机

任何MCU的基本原理和功能都是相似的。唯一不同的是其外围功能模块和指令系统的配置和数量。

对于指令系统来说,虽然形式上看似不同,但只是符号不同,其所代表的意义、要完成的功能、寻址方式都大同小异。

了解一个单片机,首先要知道的是它的ROM空间、RAM空间、IO口数量、定时器数量和计时方式、提供的外围功能模块(Peripheral Circuit)、中断源、工作电压、电源消费等

了解了这些 MCU 的特性后,下一步就是将所选 MCU 的功能与实际项目开发所需的功能进行对比,明确哪些资源目前需要,哪些没有在本项目中使用。

对于项目中需要用到但所选单片机没有提供的功能,需要仔细了解单片机的相关信息,采用间接的方法来实现。比如开发的项目需要和PC的COM口通信,如果选择的MCU没有提供UART口,可以通过外部中断来实现。

对于项目开发所需的资源,您需要仔细理解和阅读Manua*,而对于不需要的功能模块,您可以忽略或浏览。对于单片机学习来说,应用是关键,也是主要目的。

对于第一次使用这款单片机的初学者或设计人员来说,可能会遇到很多关于单片机功能的模棱两可的描述。对于这类问题,有两种解决方法,一种是编写专门的验证程序,理解数据中描述的功能;其他的暂时可以忽略。调试时留待修改完善。前一种方法适合时间比较松散的项目和初学者,后一种方法适合有一定单片机开发经验或者项目进度比较紧迫的人。

不要特别花时间学习指挥系统。指令系统只是一个逻辑描述符号。编程时,只能根据程序的逻辑要求查看相关指令。随着您的编程技能提高,您将更加精通指令系统。

7.MCU产品未来改进的六大维度
  • 计算性能更强:MCU主频迈向500Mhz,MPU增加更多处理器内核;
  • 附加无线连接功能:集成了更多射频模块。
  • 低功耗,高能效比:集成模拟芯片,低功耗模拟外设
  • 继续支持硬件加速器:算法和工具的高度集成
  • 安全:提高抗干扰能力和安全性
  • 高性价比:降低成本
8.单片机编程

MCU和 PC的编程有很大不同。尽管基于 C 语言的 MCU 开发工具越来越流行,但对于高效程序代码和喜欢使用汇编的设计人员来说,汇编语言仍然是最简洁、最高效的编程语言。

mcu使用感受(MCU的硬核科普)(8)

构建您自己的微控制器编程器的电路图

MCU编程的基本框架大致相同,分为初始化部分(MCU编程和 PC 编程最大的区别)、主程序循环体、中断处理程序。如下所示:

1.初始化:所有单片机程序设计中最基本也是最重要的一步就是初始化,一般包括以下几个部分:

  • 屏蔽所有中断并将堆栈指针设置为 通常,初始化部分不希望发生任何中断。
  • 清空系统内存并显示内存:虽然并不总是需要,但为了可靠性和一致性,建议养成良好的编程习惯,尤其是避免意外错误。
  • IO口初始化:根据项目的应用需求设置相关IO口的输入输出方式。设置输入端口的上拉或下拉电阻,以及输出端口的初始电阻。
  • 中断设置:为项目需要的所有中断源启用和设置中断触发条件,关闭不需要的不使用的中断。
  • 其他功能模块的初始化:对于所有需要使用的MCU外围功能模块,必须根据项目的应用需求进行相应的设置。例如,UART 通信需要设置波特率、数据长度、验证模式和停止位长度,Programmer Timer 需要设置时钟源。频率和重新加载数据等。
  • 参数初始化:在完成MCU硬件和资源的初始化之后,下面是程序中用到的一些变量和数据的初始化。这部分初始化需要根据具体项目和程序的整体安排进行设计。对于一些使用EEPROM存储预制件数量的应用,建议在初始化时将相关数据复制到MCU的RAM中,以提高数据访问速度,降低系统功耗(原则上,访问外部 EEPROM 会增加电源的功耗)。

2.主程序循环体:

  • 大多数单片机都是长时间连续运行的,所以它们的主程序体基本上都是循环设计的。对于具有多种工作模式的应用程序,可能有多个循环体通过状态标志相互转换。对于主程序体,一般安排以下模块:
  • 计算程序:计算程序一般比较耗时,因此强烈反对在任何中断中进行处理,尤其是乘法和除法运算。
  • 处理实时性要求低或无实时性要求的程序;
  • 显示传输程序:主要针对外接 LED 和 LCD Driver 的应用。

3.中断处理程序:

中断程序主要用于处理实时性要求较高的任务和事件,如外部突发信号的检测、按键的检测与处理、定时计数、LED显示屏扫描等。

一般情况下,中断程序应尽量保持代码简洁。对于不需要实时处理的功能,可以在中断中设置触发标志,然后主程序执行具体的事务——这一点非常重要,尤其是对于低功耗、低速的MCU,有必要确保及时响应所有中断。

4. 各种任务体有多种MCU处理方式。

比如对于低速、低功耗的MCU(Fosc=32768Hz)应用,考虑到此类项目是手持设备,使用普通LCD,对按键的响应和显示响应的实时性要求很高,所以一般定时中断是用于处理按钮动作和数据显示;对于高速MCU,如Fosc>1MHz的应用,由于此时MCU有足够的时间执行主程序循环体,只能在相应的程序中设置各种触发标志时中断,所有任务在主程序体中执行。

5、在单片机编程中要特别注意:

避免在中断和主体中访问或设置相同的变量或数据的情况。有效的预防方法是将此类数据的处理安排在一个模块中,通过判断触发标志来决定是否执行数据的相关操作;在其他主体(主要是中断)中,仅在需要处理数据的地方设置了触发标志。这确保了数据执行是可预测的和唯一的。

9.单片机编程工程师总结
  1. 要养成总结的好习惯,总结不仅是对自己学习的总结,也是对学习过程的回顾和深化,也是为了避免出现二次错误。
  2. 在编写程序之前,我们应该对项目有一个扎实的了解,这样我们才能从一个扎实的想法和一个通用的框架开始。考虑布局和最有意义的是至关重要的。确定应该先完成哪个模块,模块的具体步骤,每个函数如何命名,与其他模块的关系。拿一张纸,写下重大进展。
  3. 对于C语言模块化编程,我们应该先划分每个模块,一个模块编程,确定一个顺序,然后在前一个模块成功的基础上再编写下一个模块。说到头文件,在你写完模块之后再写模块的头文件。
  4. 不要忽视这样一个事实,即程序必须不合理地理解其起源并找到解决方案。在寻找来源时,应该是中肯的;您可以在网上搜索相关资料或向他人咨询。例如,另一个项目的主要功能被纳入该项目。一些函数被多次命名。逐步分析原因,也根据实验现象。定义端口时,选择了错误的接口。当您无法解决问题时,有时休息一下是件好事。事情可能会出错,无论它们看起来多么简单

代码利用效率、抗干扰、MCU可靠性等问题继续困扰着MCU应用开发。

10.如何开发单片机

1

如何减少程序错误

以下是系统运行期间应考虑的总体管理参数,以减少程序错误。

物理参数:这些主要是系统输入参数,包括激励参数、采集和处理操作参数以及处理结束时的结果参数。

资源参数:这些主要是系统的电路、设备和功能单元的资源,例如内存容量、存储单元长度和堆叠深度。

这些应用参数经常被表述为一些单片机和功能单元的应用条件。术语“工艺参数”是指在系统运行过程中有序变化的参数。

2

如何提高C语言编程代码的效率

用C语言设计单片机是单片机发展和应用的必然趋势。如果您使用 C 进行编程,最好熟悉您正在使用的 C 编译器以实现最高效率。先测试一下每次C语言编译对应的汇编语言语句行数,这样就可以清楚的知道效率了。以后编程时,使用编译效率最高的语句。每个C编译器都会有一定的差异,所以编译效率也会不同。一个优秀的嵌入式系统C编译器的代码长度和执行时间仅比用汇编语言编写的相同功能程度长5-20%。

C语言可以用于复杂和时间紧迫的项目,但前提是您对MCU系统的C语言和C编译器非常熟悉,并且特别注意C编译器系统的数据类型和算法可以支持。虽然 C 是最常用的高级语言,但 C 语言编译系统因 MCU 制造商的差异而有所不同,特别是在一些特殊功能模块的操作上。这样一来,如果不了解这些特性,调试就会很麻烦,导致执行效率比汇编语言低。

3

如何解决单片机抗干扰问题

防止干扰最有效的方法是去除干扰源,切断干扰路径,但这往往很难做到,因此只能得出MCU抗干扰能力不足的结论。在提高硬件系统抗干扰能力的同时,软件抗干扰由于其设计灵活、能够节省硬件资源、可靠性高而受到越来越多的关注。

至于程序跑飞,其实也可以利用软件陷阱和看门狗把程序拉回复位状态,所以单片机软件抗干扰是处理复位状态的重中之重。

大多数情况下,MCU都会有一些符号寄存器,可以用来判断复位的原因;或者,您可以自己将一些令牌埋在 RAM 中。通过判断这些标志,可以在每次程序复位中确定不同的复位原因。您也可以使用不同的标志直接跳转到相应的程序。以这种方式,程序将无限期地运行,用户将不会意识到它已被重置。

4

如何测试MCU系统的可靠性

当一个单片机系统设计完成后,不同的单片机系统产品会有不同的测试项目和方法,但有些是必须测试的:

  • l 测试单片机软件功能的完整性
  • l 通电断电测试
  • 老化测试
  • l ESD、 EFT等测试

有时,我们还可以模拟人类使用中可能发生的损坏。例如,MCU系统的接触口故意与人体或服装面料摩擦,从而测试抗静电能力。用大功率电钻靠近MCU系统工作,测试抗电磁干扰能力。

综上所述,单片机已经成为计算机开发应用的一个重要方面。

过去必须通过模拟电路或数字电路才能实现的大部分功能,现在可以通过使用单片机的软件方式来实现。这种以软件代替硬件的控制技术也称为微控制技术,是对传统控制技术的一次革命。

另外,在开发应用的过程中,一定要掌握技巧,提高效率,以利于其更广泛的应用。

11.解决 MCU Crystal 问题的 5 个技巧

mcu使用感受(MCU的硬核科普)(9)

单片机晶体振荡器

晶振不能起振的常见原因
  • PCB接线错误;
  • 微控制器质量问题;
  • 晶振质量问题;
  • 负载电容或匹配电容与晶振不匹配或电容质量不正确;
  • PCB板受潮,导致阻抗不匹配,无法振动;
  • 晶振电路过长;
  • 水晶脚之间有一条线;
  • 外围电路的影响。

建议您逐一排除故障,具体如下:

1

排除电路错误的可能性,以便您比较相应类型单片机的推荐电路。

2

排除周边元器件不良的可能;因为外围元件无非就是电阻和电容。

3

排除使用晶体振荡器作为停止振荡器的可能性,因为您不会只使用一个或两个晶体振荡器进行试验。

4

尝试更换晶振两端的电容;也许晶体振荡器会开始振动;请参考晶振电容尺寸说明。

5

在PCB的布线中,晶振电路的布线要尽量短,尽量靠近IC,不要在晶振脚之间。

12.芯片操作总结

芯片的操作主要是对芯片中寄存器的操作。芯片中的寄存器都有自己唯一的地址映射到内存上,也就是对应地址的操作。学习芯片,首先看时序图,然后了解对应的寄存器,了解如何操作,定义需要的端口(程序可以识别),编写和读取操作程序。

mcu使用感受(MCU的硬核科普)(10)

芯片操作的横截面视图

数据如何写入芯片,如何读出,以及通过哪个端口输入或读取。

通过总线连接芯片时,首先要了解总线的协议。与I2c总线相连的芯片由总线控制。

1

一个74HC595点阵用于列选择,另外两个用于颜色选择。晶格相当于一组二极管。

只有当一端切换到高电平,另一端切换到低电平时,二极管才会亮起。只是选择不同的一端,鲜艳的不同颜色。

定时器工作模式选择:定时器T1设置在高四位,定时器T0设置在低四位。然后每个模式的最后两个字符设置工作模式。使用中断时注意,进入中断后,reset要复位。

2

串口收发器:波特率一般设置在模式2(自动重新加载初始值),因为不同的设备有不同的数据处理能力,设置波特率主要是为了照顾低速设备和相互之间的通信。中断标志位应由软件清零。设置串口中断时,无论是发送还是接收都可以进入中断功能,所以要注意设置中断功能。(自感一般设置一个功能,为上位机或下位机)。

如果你发送中断,你必须在第一时间弄清楚如何进入中断,所以你发送一次,然后你就可以进入中断。一次只能发送一个字节,只有将 TI 设置为 1 后才能发送下一个字节。

3

pcf8591ad转换,有四个输入通道,读取PC F8591,哪个通道,读取的是那个通道的输入电压,转换后数据存入芯片,再读取。读取写入芯片的地址,子写入设备地址(0x40|通道号)然后读取数据。

4

da转换是先将设备地址写入芯片,再写入子地址(0x40),再写入要转换的数字量。设备地址芯片信息介绍。

5

对于液晶显示,写数据显示,他会一直显示,不继续刷新,要改,只能重新输入。

6

对于DS1302时钟芯片,在写数据时,在第8个时钟的下降沿读出第一个数据,然后准备下一次输出。注意程序的编写,还要注意返回值的位置。

7

在 Ds1302 中,先指定寄存器,然后再写入数据。芯片数据上的寄存器表示地址。

8

初始化最好写,以防以后忘记。读或写时,第一个操作是最低价或最高价,可以根据时序图来判断。

9

对于红外收发,接收,他是根据两个下降沿之间的时间长短来判断高电平还是低电平,写一个程序,先用定时器确定时间长短,保存,然后转成二进制(程序写的看多了,很好)。

10

步进电机:主要用作开关,步进电机扭矩随着转速的增加而减小。主要用于机床上零件加工的自动进给。也可用于高精度控制场所。

步进电机是一种将电脉冲信号转换为角位移或直线位移的开环控制元件步进电机。在过载的情况下,电机的转速、停止位置只取决于脉冲信号的频率和脉冲数,不受负载变化的影响,当步进驱动器接收到脉冲信号时,按照设定的步进电机驱动步进电机。方向固定的角度,称为“步距角”,它的旋转是根据固定的角度逐步进行的。可以通过控制脉冲个数来控制角位移,从而实现精确定位。同时可以通过控制脉冲频率来控制电机的转速和加速度,达到调速的目的。

11

伺服电机:伺服电机是指控制伺服系统中机械部件运行的发动机。是辅助电动机的间接传动装置。伺服电机可以控制速度,位置精度非常准确,电压信号可以转换成转矩和速度来驱动控制对象。伺服电机转子转速由输入信号控制,并能快速响应,在自动控制系统中,用作执行元件,具有机电时间常数小、线性度高、启动电压高等特点,可以将接收到的电信号转换成电机轴的角位移或角速度输出。它分为直流和交流伺服电机。其主要特点是当信号电压为零时,无转动现象,转速随转矩的增大而均匀下降。

12

汉字概述:为了在显示器或打印机上输出汉字,根据图形符号将汉字设计成点阵图,得到相应的点阵码(字形)。

汉字在计算机中表示的统一编码称为内码(如国码),内码是唯一的(相当于字符的id号)。为方便汉字输入而形成的汉字编码为输入码,属于汉字的外码。输入码随编码方式而异,种类繁多。为显示和打印汉字而形成的汉字码就是汉字码,计算机通过汉字码在字库中找到汉字码并实现其转换。

机器码:根据国标码,每个汉字都有一定的二进制码,但是这个码在电脑内部处理时会和ASCII码冲突。为了解决这个问题,每个GB码的第一个字节都加1。由于ASCII码只使用7位,所以第一个数字上的“1”可以作为识别汉字码的符号。计算机处理第一位“1”的代码时,会被解释为汉字的信息,处理第一位“0”的代码时,会被解释为ASCII码。经过这样的处理,国家代码(内部代码)就是机器的内部代码。

如果把这个“嘴”字图形“。” 用“0”代替,可以很形象的得到“嘴”字形:0000H 0004H 3FFAH 2004H2004H 2004H2004H 2004H2004H 2004H2004H 2004H 3FFAH 2004H 0000H 0000H。电脑输出“嘴”,找到表示字符首地址,根据“嘴”机器码计算后,找到一个“嘴”字形码,然后根据字形码(to)在二进制字符生成器中,在转,扫描控制屏幕,二进制空的“0”所在的地方,是“1”扫出窗口的地方,就得到了嘴巴的字符图。

汉字按照国标码的顺序排列,以二进制文件的形式存储在内存中,构成汉字字库,又称汉字字库,简称汉字库

13

12864液晶:每个显示点对应一个二进制数,1表示开,0表示关。存储这种点阵信息的 RAM 称为显示数据存储器。显示图形或汉字就是将相应的点阵信息写入相应的存储单元。

当水平地址 = 0FH 时,会被复位为 00H,但不会自动将垂直地址加一。因此,在一行写入多条数据时,程序需要判断垂直地址是否需要复位

14

GDRAM:绘图显示RAM提供128×8字节的内存空间。更改绘图 RAM 时,依次写入横纵坐标值,然后将两个字节的数据写入绘图 RAM。地址计数器(AC)会自动增加水平地址(X 地址)并在水平地址为 0XFH 时复位为 00H。垂直地址不会自动加1。在写入绘图RAM期间必须关闭绘图显示,

对于 C,定义的变量会自动分配空间,其地址是变量的名称。通过这个名字可以在内存中招募数据,通过一次操作就可以得到新的数据。在汇编中,程序员需要定义存储空间并将数据发送到累加器中进行操作,并且程序员需要对每一步进行操作。在 C 中,这是由编译器完成的。

13.常问问题1、单片机的主要功能是什么?

微控制器是一种压缩的微型计算机 ,用于控制办公机器、机器人、家用电器、机动车辆和许多其他小工具中的嵌入式系统的功能。微控制器由内存、外围设备和最重要的处理器等组件组成。

2. 什么是微控制器的例子?

8 位微控制器的示例是 Intel 8031/8051、PIC1x 和 Motorola MC68HC11 系列。与 8 位相比,16 位微控制器具有更高的精度和性能。

3. 微控制器的元素是什么?

因此,单片机还必须满足 输入、计算、存储、输出、控制五个基本要素。这些被称为微控制器的五个元素。

4. 哪个是最好的微处理器或微控制器?

如果您需要访问大量非常快的内存,那么 微处理器 可能是您的最佳选择。微控制器已经嵌入了存储器,因此存储器的选择比微处理器少。大多数微控制器可用的最大闪存容量通常约为 2MB。

5. BIOS和CMOS有什么区别?

BIOS 是启动计算机的程序,CMOS 是 BIOS 存储启动计算机所需的日期、时间和系统配置详细信息的位置 。... CMOS 是一种内存技术,但大多数人使用该术语来指代存储用于启动的可变数据的芯片。

6. CMOS 是 RAM 还是 ROM?

RAM 和 ROM 是产品,但互补金属氧化物半导体 (CMOS) 是它们内置的工艺。CMOS 使用两种不同类型的晶体管来实现更低的整体功耗。

7. 什么是 RTC 电池?

实时时钟( RTC) 电池为内部时钟/日历和维护系统配置设置供电。当机器长时间关闭(大约一到四个月)时,可能会发生此错误,这是由于 RTC 电池耗尽的结果。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页