MCU

近年来,随着工艺与IP的逐渐成熟, 32bit的MCU增长迅速,风头之劲乃至于16bit的MCU基本上被跳过了. 现在说嵌入式MCU,要么就是8bit,要么就是32bit, 16bit的MCU产品型号屈指可数。

那么8bit的MCU的情形又如何,很多嵌入式工程师都有一些误解。下面来简单分析下。

关于8bit MCU的误解
一、8位MCU正在被淘汰-这是最常见的误解,先说事实,根据最新的Gartner的市场报告。8bit的市场营收额和增长额跟32bit的相比都仅仅差几个百分点. 考虑到8bit的单个芯片比32bit芯片要便宜很多的事实, 8bit的出货量其实远高于32bit的。打个直观的比方,现在我们有了高铁,是不是所有传统的普快,特快火车都要立即淘汰呢. 显然事实并非如此,至于原因就太多了.现实情况就是8bit的MCU曾经的应用领域并不能立即用32bit的MCU直接替代.

二、8位处理器缺乏创新-不少人会认为既然现在市场的宠儿是32bit的MCU,厂商们是不是都没有投入研发资源在8bit产品上了。这么想的人可能一想到8bit的MCU,脑海中会浮现40DIP的”经典8051”的形象。事实上芯片厂商们并没有停止创新, SiliconLabs(亦称“芯科科技”)这样的厂商同时有32bit与8bit的产品. 但是在8bit产品线上的创新一直没有停止. 比如CIP-51内核因为采用了一个时钟周期等同于一个指令周期的设计,瞬间将同频率的8051性能提高了12倍。国内的一些半导体厂商也有基于8051或其他8bit内核的创新。

三、8位处理器难以使用C/C++语言编程-如果你了解Arduino的设计原理,这个误解就不攻自破. 当然坦白讲, 8bit的MCU使用高级语言编程确实比32bit的MCU要困难些. 主要障碍就是内存地址的不统一. 比如8051内核的内存地址就分为CODE, data, sfr, idata, xdata. 如果涉及到banking就更复杂了. 8bit的PIC还有硬件Stack这样更加”非主流”的设计. 但是这些障碍都可以通过工具的优化来缓解.

四、8位处理器专为简单应用而生-这个观点倒是有几分真实,但是嵌入式应用本身就是简单应用居多. 嵌入式系统应用的本身特点决定了8bit依然有很多用武之地. 外设,编译器的进化将慢慢拓展8bit处理器的应用范畴.

五、8位处理器不能胜任IoT应用需求-IoT应用不是一个单独的应用,而是一个复合应用. 智能手表,智能音箱,主控制器,网关这种当然需要复杂的处理器来实现. 但是IoT应用还包含大量的传感器节点,执行节点,转换节点. 这种节点用低功耗的8bit处理器来实现更加适合.

六、8位处理器响应慢-这个就是完全的误解了,典型的嵌入式应用中,响应速度主要跟中断响应和唤醒延迟相关. 8bit处理器有天然的优势(地址转换工作量小, IP单元实现门数少). 至少不输于32bit的处理器.

七、8位处理器的能效低于32位处理器-曾经看过ARM公司的权威工程师写的一本书,书中观点是32bit处理器的能效比高于8bit的MCU. 理由是32bit处理器能快速处理完任务,休眠时间的比例更大. 但是这个结论包含一个假设,就是任务有一定复杂度,如果任务本身非常简单,唤醒过程的功耗也很大,那么这个假设不成立. 针对不同应用场景,不能简单说8bit, 32bit哪个能效比更高. 至少非常简单的应用中, 8bit的能效比要高. 如果再加上单独响应,无需CPU干预的一些任务, 8bit的能效比甚至能高出很多。

八、 相同价格的32位处理器功能远强于8位处理器-这个也有一定程度的可信度. 但是不要忘记有相当大的一部分的应用,使用8bit的MCU就足够的情况下,非要购买平均价格高一点的32bit MCU,成本是会上升的. 很多基本上标准化了的嵌入式产品有很大的量,就会发现8bit的成本优势还是会高一点的.

九、8位处理器设计的应用不能适应未来变化-这是个思维角度问题,作为嵌入式程序员,更应该是考虑当前的任务. 不管是什么类型的MCU,如果产品形态变化了或者需求本身变化了,就要重新设计. 未来谁都看不清,何必考虑那么多没有实际意义的前瞻。

十、8位处理器开发工作更繁重且没有升级路径-32bit处理器的处理更加以软件中心,可以做更多的代码复用. 8bit处理器更多地利用硬件外设来完成任务. 综合而言,没有绝对的差别。

只要是嵌入式处理器,升级路径都不大明确. 如果你采用既有8bit,又有32bit的产品的厂家,你会发现很多外设都很相似. 考虑到现在图形化配置外设的趋势,升级路径逐渐变得不那么重要,反正都是图形化或者脚本化来生成基础驱动代码。

来源:SiliconLabs

围观 10

作者:张国斌

10月21日,在乌镇互联网大会期间,平头哥宣布开源其低功耗微控制芯片(MCU)设计平台,成为国内第一家推进芯片平台开源的企业。平台面向AIoT时代的定制化芯片设计需求,目标群体包括芯片设计公司、IP供应商、高校及科研院所等。据称,全世界的开发者都能基于该平台设计面向细分领域的定制化芯片,IP供应商可以研发原生于该平台的核心IP,高校和科研院所则可开展芯片相关的教学及科研活动。开源的RISC-V MCU会打败ARM 架构MCU吗?

1

平头哥的MCU芯片设计平台

该平台包含处理器、基础接口IP、操作系统、软件驱动和开发工具等模块,搭载基于RISC-V架构的玄铁902处理器,提供多种IP以及驱动,能让用户快速集成、快速验证,减少基础模块开发成本。平台开源代码包括基础硬件代码和配套软件代码两部分,现已公布在GitHub开源社区。

1

MCU芯片设计平台在GitHub的源代码页面

传统MCU(Micro Controller Unit)又叫单片机、微控制器,是将 CPU、RAM、ROM、定时计数器和多种I/O接口集成于一颗芯片的芯片级计算机。作为嵌入式设备的核心部件,MCU在通信、消费电子、汽车电子、工业控制有广泛应用,是市场需求最大的芯片类型。

AIoT时代,绝大部分IoT设备都需搭载下一代MCU芯片,实现传感、通信、信息处理、计算、下达控制指令等复杂任务。具备AI能力和云端接入能力是下一代MCU芯片与传统MCU芯片最大的不同。

物联网技术的发展,势必推动下一代MCU芯片需求的快速增长。调研机构IC Insights预测,2019年全球MCU芯片出货量为269亿颗,到2023年该数字将增加到382亿颗,届时MCU芯片销售额预计可达213亿美元。

阿里巴巴研究员、平头哥半导体副总裁孟建熠认为,自RISC-V内核开源以来,开源开放成为芯片领域的一种新趋势,它能有效降低芯片设计门槛,通过对接开源生态的资源,推动芯片设计走向定制化,让芯片行业有机会解决AIoT时代应用碎片化问题。从开源最强的RISC-V处理器玄铁910到开源SOC设计平台无剑到最强的AI加速器含光800,详见《【深度分析】阿里含光800的背后,是X86、ARM阵营之后的平台哥阵营来了!》再到今天开源MCU,平头哥在开源的道路上一路狂奔,平台头就要利用RISC的开源优势打造平头哥阵营,未来我估计平头哥还要打通设计和制造封测的任督二脉,期待精彩。

目前在MCU领域,ARM架构是绝对的霸主,ARM的Cortex-M架构系列MCU每年出货300亿颗左右,在IP授权领域,ARM积累了大量了客户,在近期举行的ARM Techcon 2019技术大会上,ARM公布了一项巨大的成就,ARM核心的出货量已经超过了1500亿!不过盛极而衰,随着开源指令集RISC-V的兴起,ARM架构MCU可能面临很大的冲击。

这是因为,以RISC-V目前的生态要冲击ARM手机处理器市场可以说难度非常大 ,因为这样获得谷歌安卓操作系统的支持,但是在MCU领域,在物联网时代,市场是差异化和碎片化的,反而利于开源的RISC-V发展,目前国内MCU第一梯度兆易创新就已经推出了基于RISC-V架构的MCU,在开发工具上,兆易创新自己开发了从ARM架构移植过来的编译器等,解决了RISC-V处理器开发上的短板,据说这款RISC-V处理器开发板销量很好。

汇顶科技也推出了基于RISC-V的MCU,用于其物联网领域。现在,其他一些MCU公司也从观望转向开始开发,因为基于RISC-V的MCU如果是自己独立开发,不但没有授权费用连版税不用交,这对于连年被价格战困扰的MCU厂商来说简直就是福音,所以老张估计在平头哥的带领下,大批厂商会倒向RISC-V阵营,由于一款产品需要两年开发时间,估计这种变化在明后年就会显现出来!

对于ARM来说,降低授权费用只能缓解困境,实际上,跟RISC-V在MCU的竞争是商业模式的竞争,ARM的授权模式在手机时代大获成功,但是在物联网时代却遭遇很大的挑战,因为在平头哥的支持下,小公司可以一天上手,5天原型,20天出RISC-V MCU产品,但是,这样的公司要开发一款ARM架构MCU,是绝对不会有这样的高效率。

1

这就是开源的魔力,可以说RISC-V模式是顺应物联网大趋势的模式,现在也有很多MCU厂商如NXP、ST等还在ARM架构继续深耕,这样的执着正是本土MCU厂商的机会,因为只有在出现技术分歧的时候才会孕育超越的机遇!

不过从MCU全球出货来看,欧美厂商还是占据主导地位,前8大厂商占据88%的MCU市场,所以RISC-V MCU要挑战ARM MCU的市场地位还需要假以时日,也需要将生态系统打造的更完善,不过随着更多RISC-V MCU出现,市场会在量变中积累质变的力量,并一定会在某个点发生逆变。

这样的质变会在 那一年发生呢?欢迎大家预测一下!

注:本文为原创文章,转载请注明作者及来源

围观 41

针对ARM-Linux程序的开发,主要分为三类:应用程序开发、驱动程序开发、系统内核开发,针对不同种类的软件开发,有其不同的特点。今天我们来看看ARM-Linux开发和MCU开发的不同点,以及ARM-Linux的基本开发环境。

1 ARM-Linux应用开发和单片机开发的不同

这里先要做一个说明,对于ARM的应用开发主要有两种方式:一种是直接在ARM芯片上进行应用开发,不采用操作系统,也称为裸机编程,这种开发方式主要应用于一些低端的ARM芯片上,其开发过程非常类似单片机,这里不多叙述。还有一种是在ARM芯片上运行操作系统,对于硬件的操作需要编写相应的驱动程序,应用开发则是基于操作系统的,这种方式的嵌入式应用开发与单片机开发差异较大。ARM-Linux应用开发和单片机的开发主要有以下几点不同:

● 应用开发环境的硬件设备不同

单片机:开发板、仿真器(调试器)、USB线;

ARM-Linux:开发板、网线、串口线、SD卡;

对于ARM-Linux开发,通常是没有硬件的调试器的,尤其是在应用开发的过程中,很少使用硬件的调试器,程序的调试主要是通过串口进行调试的;但是需要说明的是,对于ARM芯片也是有硬件仿真器的,但通常用于裸机开发。

● 程序下载方式不同

单片机:仿真器(调试器)下载,或者是串口下载;

ARM-Linux:串口下载、tftp网络下载、或者直接读写SD、MMC卡等存储设备,实现程序下载;

这个与开发环境的硬件设备是有直接关系的,由于没有硬件仿真器,故ARM-Linux开发时通常不采用仿真器下载;这样看似不方便,其实给ARM-Linux的应用开发提供了更多的下载方式。

● 芯片的硬件资源不同

单片机:通常是一个完整的计算机系统,包含片内RAM,片内FLASH,以及UART、I2C、AD、DA等各种外设;

ARM:通常只有CPU,需要外部电路提供RAM以供ARM正常运行,外部电路提供FLASH、SD卡等存储系统映像,并通过外部电路实现各种外设功能。由于ARM芯片的处理能力很强,通过外部电路可以实现各种复杂的功能,其功能远远强于单片机。

● 固件的存储位置不同

单片机:通常具备片内flash存储器,固件程序通常存储在该区域,若固件较大则需要通过外部电路设计外部flash用于存储固件。

ARM-Linux: 由于其没有片内的flash, 并且需要运行操作系统,整个系统映像通常较大,故ARM-Linux开发的操作系统映像和应用通常存储在外部的MMC、SD卡上,或者采用SATA设备等。

● 启动方式不同

单片机:其结构简单,内部集成flash, 通常是芯片厂商在程序上电时加入固定的跳转指令,直接跳转到程序入口(通常在flash上);开发的应用程序通过编译器编译,采用专用下载工具直接下载到相应的地址空间;所以系统上电后直接运行到相应的程序入口,实现系统的启动。

ARM-Linux:由于采用ARM芯片,执行效率高,功能强大,外设相对丰富,是功能强大的计算机系统,并且需要运行操作系统,所以其启动方式和单片机有较大的差别,但是和家用计算机的启动方式基本相同。其启动一般包括BIOS,bootloader,内核启动,应用启动等阶段。

(a)启动BIOS

BIOS是设备厂家(芯片或者是电路板厂家)设置的相应启动信息,在设备上电后,其将读取相应硬件设备信息,进行硬件设备的初始化工作,然后跳转到bootloader所在位置(该位置是一个固定的位置,由BIOS设置)。(根据个人理解,BIOS的启动和单片机启动类似,需要采用相应的硬件调试器进行固件的写入,存储在一定的flash 空间,设备上电启动后读取flash空间的指令,从而启动BIOS程序。)

(b)启动bootloader

该部分已经属于嵌入式Linux软件开发的部分,可以通过代码修改定制相应的bootloader程序,bootloader的下载通常是采用直接读写SD卡等方式。即编写定制相应的bootloader,编译生成bootloader映象文件后,利用工具(专用或通用)下载到SD卡的MBR区域(通常是存储区的第一个扇区)。此时需要在BIOS中设置,或者通过电路板的硬件电路设置,选择bootloader的加载位置;若BIOS中设置从SD卡启动,则BIOS初始化结束后,将跳转到SD卡的位置去执行bootloader,从而实现bootloader的启动。

Bootloader主要作用是初始化必要的硬件设备,创建内核需要的一些信息并将这些信息通过相关机制传递给内核,从而将系统的软硬件环境带到一个合适的状态,最终调用操作系统内核,真正起到引导和加载内核的作用。

(c)启动内核

bootloader启动完成初始化等相关工作之后,将调用内核启动程序。这就进入了实际的操作系统相关内容的启动了,包括相应的硬件配置,任务管理,资源管理等内核程序的启动。

(d)启动应用

在操作系统内核启动之后,就可以开始启动需要的应用,去完成真正的业务操作了。

2 ARM-Linux 基本开发环境

前面介绍了ARM-Linux应用开发和单片机开发的不同之处,相信你已经对ARM-Linux应用开发有了一个基本的认识了,下面将介绍一下ARM-Linux的基本开发环境。其主要包括硬件环境和软件环境两个部分,这里以iMX53和Ubuntu为例进行说明。

● 硬件环境

开发板:ARM运行的硬件环境,或者是相应项目的ARM电路板。

计算机:作为开发主机使用,安装Linux(如Ubuntu)),或者采用虚拟机安装Ubuntu。

串口线:用于开发过程中采用终端进行串口调试或下载程序。

网线:用于连接arm-board和开发主机,实现tftp下载内核(程序等),通过网络nfs运行程序等。

SD卡(及读卡器)或者其他存储设备:用于存储bootloader、内核映像等,以及最终的软件系统的存储;开发过程中,通常用于保存bootloader,引导系统启动。

● 软件环境

Ubuntu: 作为操作系统,是整个软件开发环境的载体,相应的开发工具都布置在此系统中。

LTIB: 这是freescale的提供的一个编译工具链,能够很方便的将源代码文件编译为适合的程序代码,并对程序进行调试;用户也可以通过下载源码构建自己的编译工具链。

tftp: 用于从开发主机Ubuntu上向arm-board 下载内核文件、应用文件等。

nfs网络文件系统:用于在开发主机上建立网络nfs文件根系统,arm-board通过nfs网络文件系统读取开发主机上的虚拟根文件系统,完成系统的启动;方便系统的开发与调试。

minicom:串口调试工具,用于在开发主机上与arm-board通信,实现对arm-board上应用程序的操作与调试。

Eclipse:集成开发环境,主要方便代码的编辑、编译等,也可采用DS5,RealView等;或者采用gedit进行编辑,通过LTIB进行编译和管理。

来源:嵌入式资讯精选

围观 17

据知名分析机构ICinsights在今年八月发布的数据披露,因为自动驾驶传感器和物联网需求增长的推动,MCU在未来几年将会保持强劲的增长势头。报告中指出,2018 至 2023 年,全球MCU的销售额复合年均增长率 (CAGR) 将会达到3.9%,并在2023年达到213亿美元。

瑞萨作为这个领域的重要玩家,今日也推出了其全新的MCU产品线,卡位物联网市场。

MCU开发面临五大挑战,RA系列应运亮相

从业界介绍得知,现在的MCU开发者面临工程、安全、云通信、质量和升级换代这五方面的问题:

首先在工程方面,按时交付、在预算内满足要求规格、确保最终客户的“易用性”和以更快的节奏集成新技术(如安全性)成为迫切需求;在安全方面,监管要求和商业压力日益提升,各种强制实施安全设计,加上需要从终端到边缘再到云端全覆盖的安全性设计,然而开发者的安全知识或技能缺乏限制了他们在这方面的发挥。至于云通信方面,很多初入物联网行业的开发者在相关经验上有所缺失,加上安全考虑,这就给他们带来了双重考验;还有质量和升级换代的需求。以上种种让MCU厂商面临着前所未有的新挑战。

瑞萨新发布的Renesas Advanced (RA)MCU产品家族就是为了解决这些问题而生的。

资料显示,这是一系列基于32位Arm Cortex M内核设计的MCU,拥有高性能(最高200Mhz)、大容量内存(最高2MB闪存),瑞萨领先的安全IP(也可选择基于TrustZone的产品),广泛的连接性(USB/CAN-FD/以太网)和可扩展性等特征。再加上易于使用的Flexible Software Package(灵活配置软件包,FSP)。尤其是这个FSP,更是瑞萨这系列MCU不得不提的一大亮点。

据介绍,RA产品家族的灵活配置软件包(FSP)提供了一种开放式架构,允许客户复用原有的代码,并将其与瑞萨电子和合作伙伴的软件示例结合起来,以加速如连接、安全等复杂功能的部署。FSP使用Amazon FreeRTOS,还将在2020年初为Cortex-M23和Cortex-M33 MCU上的ThreadX RTOS与中间件增加开箱即用的支持,给开发人员提供“设备到云端”的高端选项。开箱即用的功能也可以用其他任何RTOS或中间件轻松地替代或扩展。

安全则是RA产品的另一个亮点。

瑞萨电子物联网与基础设施事业部高级副总裁Roger Wendelken指出,“RA MCU在Arm®v8-M TrustZone®技术的基础上,将我们的安全加密引擎(SEC)IP与NIST CAVP认证相结合,为客户带来了无以伦比的物联网安全性,同时还提供篡改检测功能并增强了对侧信道攻击的抵抗力。贯穿RA产品家族的可扩展性和兼容性使客户能够构建一系列产品,还可通过我们的灵活配置软件包(FSP),使用Amazon FreeRTOS、ThreadX或其它RTOS与中间件解决方案,实现快速开发”.”RA产品家族还通过了Arm平台安全架构(PSA)第1级认证”,瑞萨方面强调。

按照规划,瑞萨RA产品线包括RA2系列(最高主频60 MHz)、RA4系列(最高主频100 MHz)、RA6系列(最高主频200 MHz),和将于稍后发布的双核RA8系列。目前推出的首批五个RA MCU产品群,由基于Arm Cortex-M4和Cortex-M23内核的32颗可扩展MCU组成。这些MCU具有32-176引脚,配备256 KB至2 MB代码闪存,32 KB至640 KB SRAM,提供USB、CAN和以太网等连接性。得益于功能和引脚的兼容性,可轻松在RA家族中实现设计转移。每个RA MCU产品群均提供出色的工作与待机功耗和各种增强功能,如瑞萨备受欢迎的HMI电容式触摸按键技术。

瑞萨表示,他们的这系列MCU以满足下一代嵌入式解决方案的需求。工程师可以轻松将其应用于工业自动化、楼宇自动化、计量、健康医疗与家电等应用的物联网(IoT)端点和边缘设备等领域。

补全瑞萨32位MCU产品线,进一步覆盖市场

瑞萨是全球领先的MCU供应商,尤其是在车载MCU方面,瑞萨在多个领域名列前茅。而全新发布的RA则补全了他们当下的32位MCU产品线,为他们进军更广泛的市场增加了新的筹码。

熟悉瑞萨32位MCU产品线的读者应该知道,在RA之前,他们拥有RX产品家族和Renesas Synergy™ Platform 。他们想通过这两条产品线,提供独特的差异化功能,为客户提供价值。

首先看Renesas Synergy,这是一系列采用Arm Cortex-M核设计的微控制器,是他们专为包括面向物联网市场的互连移动设备和高性能嵌入式系统控制器等终端应用而设计。其特色是MCU结合了商业级带质保的软件和开发工具。

从我们之前的报道也可以看到,Synergy 是一个全面的、集成的开发平台,涵括了Synergy 软件、Synergy 单片机、Synergy 工具和开发板、Synergy 解决方案和SynergyGallery 。作为一个专门为物联网开发者定制的平台,Renesas Synergy,可用于客户终端产品的制造,内容完整,通过认证,并提高支持。最主要的是将工程师从发威的基础架构中解放出来,更快地将复杂的设计产品化并推向市场。

官网资料披露,Renesas Synergy微控制器家族涵盖四个不同的系列:S1、S3、S5、S7,其中使用S1系列产品,能最大化便携式传感器和控制应用程序的电池寿命,极低功耗模式和快速唤醒时间下以1.6V的电压来运行。使用硬件加速外设装置等综合功能设备,优化CPU带宽并降低功耗。同时,真随机数生成器和AES可提供安全连接。

S3系列则可以优化电源性能以提升S3系列中应用程序的效率。使用内置浮点单元以最少的CPU时钟周期处理数据密集型操作,并借助AES、真随机数生成器和内存保护元件等措施来确保数据安全。

而S5系列使用紧密集成的高性能S5系列产品来提高生产力。借助640KB片上SRAM来完成缓冲图形帧以驱动彩色TFTLCD等任务,无需昂贵的外部SRAM组件。使用单精度浮点单元进行计算,管理连接,显示图形并获取高精度模拟数据。使用内置安全功能(如RSA加密和解密)处理安全密钥。

S7系列则是旗舰产品,可以管理高性能、计算密集型应用程序。4MB闪存可实现内存冗余,在同步处理多个高速连接通道、精确控制操作和高精度模拟信号的同时,驱动彩色LCD。使用对称与非对称加密硬件加速器、HASH算法和安全密钥生成和存储来保护产品。

换而言之,这系列MCU丰富的性能、功能和引脚兼容性,提供嵌入式市场所需的可扩展性、功耗、代码可重用性和性能。

其次,Renesas eXtreme(RX)产品家族则是瑞萨采用私有的RX内核设计,能提供业界领先的32位CoreMark®/ MHz性能以及最大的代码闪存和SRAM容量的MCU产品。

据了解,RX系列是瑞萨电子的前身瑞萨科技在2009年推出的一个产品线,该系列的MCU都是采用其私有的RX内核设计。在2018年10月,他们更是推出了业界领先性能的RXv3 核,大幅提升新的32位RX MCU系列产品性能。

作为一款CISC(复杂指令集计算机)架构, RXv3 在代码密度方面比 RISC(精简指令集计算机) 架构具有更明显的优势。同时, RXv3 还可以利用指令流水线来提供与RISC相当的高周期指令(IPC)性能。较之 RXv2 架构,新的 RXv3 核更是具有增强的指令流水线、针对寄存器组保存功能的多种选项以及双精度浮点单元(FPU)功能,可实现最出色的计算性能、功耗和代码效率。

ICinsights表示,MCU的营收在过去几年受到了逐年递减的ASP销售影响,这主要是因为32 位元的MCU 产品激烈竞争所致。但他们指出,32 位的MCU 的平均售价已经结束下滑。这就给拥有丰富MCU产品线的瑞萨带来了更多的机会。

来源:半导体行业观察

围观 6

在嵌入式产品开发过程中,可能会面临CAN路数不够的问题。如何选择合适的转换模块解决这个问题呢?本文为您讲解几款模块的选型方法。

应用场景

CAN总线是优秀的现场总线之一,已由当初的汽车电子扩散到各行各业。从工业自动化到新能源,从轨道交通再到航空航天,CAN总线技术在中国不断的应用和沉淀。


图1 CAN总线数据帧结构

当应用CAN总线时,我们可能会面临以下问题:主控制器没有支持CAN控制器或者CAN路数不够。具体问题表现:早期产品通信使用的是RS485或RS232通信,现阶段需要将产品升级到能支持到CAN通信;受制于成本限制,主控MCU必须选择低端处理器,本身不带CAN控制器;开发的产品中需要的CAN路数远远大于2路,能支持两路以上CAN的MCU型号有限或成本过高。


图2 LPC系列间CAN路数对比


图3 多路CAN应用场景(图片源自网络)

当MCU内部没有支持CAN控制器或者所需的CAN路数不能满足要求时,可以选择使用其他通信接口拓展CAN接口出来。常见的转换方法有串口转CAN、以太网转CAN、WIFI转CAN以及光纤转CAN,本文主要为大家介绍串口转CAN的思路和方法。


图4 CAN转换器产品

如何选型

串口扩CAN的模块大体分为两种形式,一种是单纯的协议控制器芯片实现,如MCP2515和MCP2517;另一种是通过高性能的MCU实现。相比于单纯的协议控制器芯片,MCU方案的协议转换模块拥有以下优势:配置简便,配合上位机或串口指令集,几个简单的串口数据发送即可完成配置;缓存较大,在高速或数据吞吐量大时杜绝丢帧现象发生;性能优异,将复杂的协议转换及帧缓存完全集成于用户MCU之外,可减少用户MCU负担。

ZLG致远电子推出的串口转CAN模块主要有CANFDSM、CSM300两个系列,选型工作如何入手,我们从他们之间的区别入手。CANFDSM是最新一代的串口转CANFD模块,在能匹配当前热门的CANFD基础上,还能完全兼容传统的CAN2.0协议。因此,如果您的产品选定的是CANFD协议,则只能使用新一代的CANFDSM模块。


图5 链路层协议区别

如果产品中使用的是CAN2.0A或者CAN2.0B协议,我们继续对比选择。CANFDSM不带CAN或者CANFD收发器,用户需自行增加隔离或者不隔离的收发器模块。而CSM300内部集成有CAN隔离收发器、CAN控制器,因此可以直接连接MCU与CAN总线。


图6 CSM300与CANFDSM内部器件情况

以上讨论的情况是针对板载需求的应用,对于需要直接应用在设备中的场合又该如何选择呢?CANCOM或者CANFDCOM绝对是您的首选。CANFDCOM接口卡的1~2通道CAN FD接口均自带2500VDC电气隔离,静电等级为接触放电±8KV,浪涌±1KV,可有效避免因为不同节点地电位不同导致的回流损坏,特别适合于电动汽车与列车的测试。


图7 串口转CAN设备

应用电路

以CANFDSM-100为例,该类模块通用应用方式如下下。协议转换模块直接与MCU通过UART的TX、RX交叉连接通信,PIN3、PIN4通过CAN隔离收发器CTM3FD连接到外部CAN总线上。需要注意的是,模块在使用前需要进行参数配置,使用PIN7使模块进入配置状态后再配合MCU的AT指令即可完整参数配置。此外,配合上位机软件亦可快速完成参数配置。


图8 应用电路


图9 CANFDSM-100管脚定义

来源: ZLG立功科技一致远电子

围观 15

简单的说,进入了电子,不管是学纯模拟,还是学单片机,DSP、ARM等处理器,或者是我们的FPGA,一般没有不用到按键的地方。按键:人机交互控制,主要用于对系统的控制,信号的释放等。因此在这里,FPGA上应用的按键消抖动,也不得不讲!

一、为什么要消抖动

在按键被按下的短暂一瞬间,由于硬件上的抖动,往往会产生几毫秒的抖动,在这时候若采集信号,势必导致误操作,甚至系统崩溃;同样,在释放按键的那一刻,硬件上会相应的产生抖动,会产生同样的后果。因此,在模拟或者数字电路中,我们要避免在最不稳定的时候采集信号,进行操作。

对此一般产用消抖动的原理。一般可分为以下几种:

(1)延时
(2)N次低电平计数
(3)低通滤波
在数字电路中,一般产用(1)(2)种方法。后文中将详细介绍。

二、各种消抖动

1. 模拟电路按键消抖动

对于模拟电路中,一般消抖动用的是电容消抖动或者施密特触发等电路,再次不做具体介绍。

“”

2. 单片机中按键消抖动

对于单片机中的按键消抖动,本节Bingo根据自己当年写过的单片机其中的一个代码来讲解,代码如下所示:

unsigned char key_sCAN(void)
{
if(key == 0) //检测到被按下
{
delay(5); //延时5ms,消抖
if(key != 0)
retrurn 0; //是抖动,返回退出
while(!key1); // 确认被按下,等下释放
delay(5); //延时5ms,消抖
while(!key1); //确认被释放
return 1; //返回按下信号
}
return 0; //没信号
}

针对以上代码,消抖动的顺序如下所示:

(1)检测到信号
(2)延时5ms,消抖动
(3)继续检测信号,确认是否被按下
a) 是,则开始等待释放
b) 否,则返回0,退出
(4)延时5ms,消抖动
(5)确认,返回按下信号,退出

当然在单片机中也可以循环计数来确认是否被按下。Bingo认为如此,太耗MCU资源,因此再次不做讲述。

3. FPGA中的按键消抖动

对于FPGA中的消抖动,很多教科书上都没有讲述。但Bingo觉得这个很有必要。对于信号稳定性以及准确性分析,按键信号必须有一个稳定的脉冲,不然对系统稳定性有很大的干扰。

此处Bingo用两种方法对FPGA中按键消抖动分析。其中第一种是通过状态机的使用直接移植以上MCU的代码,这个思想在FPGA状态机中很重要。第二种,通过循环n次计数的方法来确认是否真的被按下,这种方法很实用在FPGA这种高速并行器件中。

(1)利用状态机移植MCU按键消抖动
此模块由Bingo无数次修改测试最后成型的代码,在功能上可适配n个按键,在思想上利用单片机采用了单片机消抖动的思想。具体代码实现过程请有需要的自行分析,本模块移植方便,Verilog代码如下所示:

/*************************************************
* Module Name : key_scan_jitter.v
* Engineer : Crazy Bingo
* Target DevICe : EP2C8Q208C8
* Tool versions : QUARTus II 11.0
* Create Date : 2011-6-26
* Revision : v1.0
* DescripTIon :
**************************************************/
module key_scan_jitter
#(
parameter KEY_WIDTH = 2
)
(
input clk,
input rst_n,
input [KEY_WIDTH-1:0] key_data,
output key_flag,
output reg [KEY_WIDTH-1:0] key_value
);
reg [19:0] cnt; //delay_5ms(249999)
reg [2:0] state;
//-----------------------------------
always @(posedge clk or negedge rst_n)

本文转自网络,版权归原作者,如果您觉得不好,请联系我们删除!

围观 22

很多MCU开发者对MCU晶体两边要各接一个对地电容的做法表示不理解,因为这个电容有时可以去掉。笔者参考了很多书籍,却发现书中讲解的很少,提到最多的往往是:对地电容具稳定作用或相当于负载电容等,都没有很深入地去进行理论分析。而另外一方面,很多爱好者都直接忽略了晶体旁边的这两个电容,他们认为按参考设计做就行了。但事实上,这是MCU的振荡电路,又称“三点式电容振荡电路”,如图1所示。

“图1:MCU的三点式电容振荡电路”
图1:MCU的三点式电容振荡电路

其中,Y1是晶体,相当于三点式里面的电感;C1和C2是电容,而5404和R1则实现了一个NPN型三极管(大家可以对照高频书里的三点式电容振荡电路)。

▼接下来将为大家分析一下这个电路 ▼

首先,5404必需搭一个电阻,不然它将处于饱和截止区,而不是放大区,因为R1相当于三极管的偏置作用,能让5404处于放大区域并充当一个反相器,从而实现NPN三极管的作用,且NPN三极管在共发射极接法时也是一个反相器。

其次将用通俗的方法为大家讲解一下这个三点式振荡电路的工作原理。

众所周知,一个正弦振荡电路的振荡条件为:系统放大倍数大于1,这个条件较容易实现;但另一方面,还需使相位满足360°。而问题就在于这个相位:由于5404是一个反相器,因此已实现了180°移相,那么就只需C1、C2和Y1再次实现 180°移相就可以了。恰好,当C1、C2和Y1形成谐振时,就能实现180移相;最简单的实现方式就是以地作为参考,谐振的时候,由于C1、C2中通过的电流相同,而地则在C1、C2之间,所以恰好电压相反,从而实现180移相。

再则,当C1增大时,C2端的振幅增强;当C2降低时,振幅也增强。有时即使不焊接C1、C2也能起振,但这种现象不是由不焊接C1、C2的做法造成的,而是由芯片引脚的分布电容引起,因为C1、C2的电容值本来就不需要很大,这一点很重要。

▼那么,这两个电容对振荡稳定性到底有什么影响呢? ▼

由于5404的电压反馈依靠C2,假设C2过大,反馈电压过低,这时振荡并不稳定;假设C2过小,反馈电压 过高,储存能量过少,则容易受外界干扰,还会辐射影响外界。而C1的作用与C2的则恰好相反。在布板的时候,假设为双面板且比较厚,那么分布电容的影响则 不是很大;但假设为高密度多层板时,就需要考虑分布电容,尤其是VCO之类的振荡电路,更应该考虑分布电容。

因此,那些用于工控的项目,笔者建议最好不要使用晶体振荡,而是直接接一个有源的晶振。很多时候大家会采用32.768K的时钟晶体来做时钟,而不是通过单片机的晶体分频来做时钟,其中原因想必很多人也不明白,其实上这是和晶体的稳定度有关:频率越高的晶体,Q值一般难以做高,频率稳定度也比较差;而 32.768K晶体在稳定度等各方面的性能表现都不错,还形成了一个工业标准,比较容易做高。另外值得一提的是,32.768K是16 bit数据的一半,预留最高1 bit进位标志,用作定时计数器内部数字计算处理也非常方便。

来源:畅学单片机

围观 20

我们在从事MCU应用开发过程中,难免会碰到MCU芯片异常的问题。比如异常复位,表现为复位脚有电平跳变或者干脆处于复位电平;在做代码调试跟踪时,发现代码往往进不到用户main()程序;或者时不时感觉芯片死掉了,功能完全不可控等。

针对类似严重异常情况的原因我在这里大致总结下,与大家分享。

1、时钟问题。一般表现在时钟配置异常,比方配置超出芯片主频工作范围。【对于STM32系列MCU,如果使用STM32CUBEMX图形化工具做配置,基本可以回避这个问题】

2、电源问题。比方电源质量差,纹波过大,尤其开关电源供电时;或者供电芯片质量差,输出不稳定;或者系统供电能力不足而引起电源波动等。

3、BOOT脚配置问题。对于ARM芯片往往都有些BOOT配置脚。经常遇到有人因为BOOT脚的焊接或接触不良导致各类奇怪问题。这种情况多表现在芯片功能时好时坏,或者部分芯片正常,部分芯片异常。

4、启动文件问题。经常因为选错了启动文件,导致程序无法正常运行,或者说调试时好好的,脱机运行就出鬼。这点在做不同系列芯片间移植时最容易碰到。

5、中断请求位清除问题。由于中断请求位没有及时清除导致中断没完没了的重复进入,感觉系统死机一般。

6、堆或栈的越界溢出。这个也会导致芯片无法正常工作,调试时往往可能会有硬错提示。

7、VCAP脚问题。有些MCU芯片有VCAP脚,该类脚往往需要接上适当的电容,如果无视了它的话,也可能导致整个芯片的功能异常。

上面这几个原因比较容易导致MCU出现功能严重异常,也不太容易简单地通过查看MCU技术手册直接获得答案,分享出来算作一些提醒。

来源:玩转单片机

围观 19

页面

订阅 RSS - MCU