【四旋翼飞行器】76小时吃透四轴算法!史上最强软硬结合实战项目,??戳此立抢??

赌博启示录电影:AWBus-lite的拓扑结构及应用设计

ZLG致远电子 ? 2018-06-21 09:10 ? 次阅读

揭秘微信赌博群 www.b03i.com.cn 本文导读

为了管理系统中各式各样的硬件设备(或虚拟硬件设备),AWorks推出了领先的轻量级总线管理框架:AWBus-lite,实现了硬件设备和驱动的彻底分离,使设备驱动可以最大限度的得到复用。本文介绍了AWBus-lite的基础概念,以及如何使用和配置AWbus-lite。

本文为《面向AWorks框架和接口的编程》第三部分软件篇——第12章AWBus-lite总线框架——第1~4小节:AWBus-lite简介、AWBus-lite拓扑结构、系统硬件资源和访问设备。

本章导读

在嵌入式系统中,硬件外设的种类非常繁多,例如,GPIO、ADC、UART、按键、数码管、RTC、LM75、EEPROM、SD卡、U盘等。正确使用各个外设的基础是平台中具有相应的驱动,随着外设种类的不断增加,驱动也随之越来越多,为了高效的管理众多的外设和驱动,AWorks推出了领先的轻量级总线管理框架:AWBus-lite。AWBus-lite作为AWorks中最重要的组件之一,负责管理系统中所有的硬件设备(或虚拟硬件设备),实现硬件外设和驱动的分离,使驱动可以最大限度的得到复用。

本章作为AWBus-lite的入门,主要介绍了AWBus-lite的拓扑结构,以及基本的设备、总线、驱动相关的概念,重点从用户角度出发,讲述如何使用、配置AWBus-lite。

12.1 ?AWBus-lite简介

随着MCU的快速发展,越来越多的硬件外设集成到了MCU内部(片内外设),这部分外设可以直接通过CPU操作相应的寄存器使用,例如,i.MX28x中的GPIO、ADC、UART等。一些外设在MCU外部(片外外设),必须通过某种总线进行访问,比如PCF85063,需要通过I2C总线访问;SD卡,需要通过SDIO总线访问。

为了使用统一的拓扑结构描述所有的片外和片内外设,在AWBus-lite中,把CPU直接控制的总线统称为PLB(Processor Local Bus,CPU本地总线),集成在MCU内部的外设就挂在该总线上。例如:在一个系统中,硬件设备连接示意图详见图12.1(a),其对应的AWBus-lite软件拓扑结构详见图12.1(b)。

图12.1 AWBus-lite抽象

AWBus-lite提供了一种机制,使得我们可以在软件环境里建立、还原系统的硬件总线拓扑结构。如图12.1所示,图12.1(a)为一个可能的系统总线的物理拓扑结构(仅作示例之用),图12.1(b)为在AWBus-lite中抽象出来的系统总线模型。由此可见,在软件中抽象出来的对象同真实世界的对象一一对应!

图12.1(a)仅作为一种示例,与实际硬件可能存在差异。整个硬件被分为了核心板(i.MX28xPack board)和用户板(User Board)两部分。核心板又分为MCU(i.MX28x)和外围器件(ICs)两个部分,MCU又分为内核(ARM)和片内外设两个部分。

内核的核心是CPU,其可以直接控制片上外设,这里虚拟了一个PLB控制器,其产生了一条PLB总线,由CPU直接控制,片内外设均直接挂在PLB总线上。

片内外设集成在芯片内部,例如,GPIO、I2C、UART等,它们挂在PLB总线上。其中部分片内外设又是总线控制器(比如I2C),它们又可以扩展出一条总线到片外,例如,I2C0扩展出一条总线I2C bus 0,I2C1扩展出一条总线II2C bus 1。扩展的总线可以连接一些外围器件。

这些器件可能处于核心板中,比如

SC18IS602B(一款I2C转SPI芯片,仅用作拓扑结构展示,无需深入了解)、

CAT24C02(EEPROM)、PCF85063(RTC芯片),也可能处于用户板上,比如CAT9555(一款I2C转GPIO芯片,仅用作拓扑结构展示,无需深入了解)。

一些外围器件可能又是总线控制器,则其又可以扩展出一条总线,比如SC18IS602B,其为I2C转SPI芯片,可以扩展出SPI总线,在SPI总线上,又可以挂在其它SPI接口的器件,比如:SC16IS752(一款SPI转UART芯片,仅用作拓扑结构展示,用户无需了解具体细节)。特别地,若连接的芯片又是一个总线控制器,则可以继续扩展总线,从理论上讲,通过添加总线控制器,可以将系统的总线层次无限地增加,即系统的功能外设可无限扩展。

图12.1(b)为对应的软件拓扑结构图,在软件环境中,外设对象与真实硬件设备呈一一对应关系。不过,软件环境中并不区分设备的物理位置,只考虑设备的父总线,比如CAT9555(用户板上)和PCF85063(核心板上)都是挂在I2C bus 1上的,则它们处于同一个层级。

12.2 ?AWBus-lite拓扑结构

在图12.1中,以一个具体的示例说明了AWbus-lite的基本结构,展示了AWBus-Lite对现实世界的一种抽象。从具体到一般,一个更加抽象的总线拓扑结构详见图12.2。

图12.2 AWBus-lite总线拓扑结构图

其中,Bus Controller 0是由CPU直接控制的总线控制器,通常情况下,其为PLBController,以扩展出一条PLB总线。在总线拓扑结构图中,抽象了3个重要的概念:设备、总线控制器、总线。

  • 设备

设备是指挂在某条总线上的硬件外设(或虚拟外设)。例如,图12.1中的GPIO、CAT24C02、CAT9555等。

  • 总线控制器

总线控制器是一种特殊的设备,它可以扩展出一条下游总线,这条总线上又能挂其它设备(包括总线控制器)。例如,图12.1中的I2C0、SC18IS602B等。

  • 总线

任何设备或总线控制器都必须挂在一条总线上。AWBus-lite不区分CPU的具体类型,把CPU直接控制的总线统称为 PLB,PLB为根总线。其它总线由总线控制器产生,例如,图12.1中的I2C Bus 0、I2C Bus 1、SPI Bus等。

?“设备”是最为核心的概念,其它概念都可以基于“设备”进行描述:“设备”挂在“总线”上,特殊“设备”(总线控制器设备)扩展出一条下游总线。能够正常使用一个设备的前提是系统中具有设备相应的驱动,例如,要使用i.MX28x的GPIO去控制一个LED,就必须具有相应的GPIO驱动,以设置GPIO的模式、输出电平等,最终达到控制LED的目的。也就是说,要使系统具有访问和控制设备的能力,就必须具有相应的驱动。这就需要掌握另外一个非常重要的概念:设备驱动。

设备驱动提供了访问和控制设备(包括特殊的设备:总线控制器)的能力,在AWBus-lite中,将设备和驱动进行了很好的分离,使驱动可以最大限度的得到复用。通常情况下,系统中可能存在多个相同类型的设备。例如,在i.MX28x中,存在I2C0和I2C1共计两个I2C总线控制器,它们的操作方法是完全相同的,这种情况下,I2C0和I2C1设备即可复用一份驱动。示意图详见图12.3。

图12.3?I2C0和I2C1复用同一份驱动

其它片上外设或外围器件同样如此,多个同类型的设备可以复用一份驱动,这不仅极大的提高了代码复用率,缩小了程序占用的存储空间,也给代码的管理、维护、扩展带来了极大的便利。这是面向对象编程带来的好处,在这里,设备驱动就相当于一个类,而设备就是类的一个实例。

12.3 系统硬件资源

在开发实际应用程序前,首先要规划系统的硬件资源,即要构建出如图12.1(a)所示的硬件物理拓扑结构。接下来,就需要对系统软件进行配置,添加相应的设备,以搭建出与之对应的如图12.1(b)所示的软件拓扑结构。通常情况下,AWorks SDK提供的工程模板已经配置好了系统相应的硬件资源,完成了基础软件拓扑结构的搭建,对于不同的用户需求,可能需要添加或删除一些设备,这种情况下,可以直接在模板工程的基础上对系统硬件资源进行简要的调整。

12.3.1 ?硬件设备列表

AWBus-lite使用名为

awbus_lite_hwconf_usrcfg.c的硬件配置文件来定义系统的硬件资源,此文件存放于AWorks SDK提供的工程模板中。硬件配置文件的核心功能是为系统提供一个硬件列表,即一个名为:g_awbl_devhcf_list[]的数组,该数组的每一个成员都描述了系统中的一个硬件设备。一个简单的示例片段详见程序清单12.1。

程序清单12.1 硬件设备列表(awbus_lite_hwconf_usrcfg.c)

在AWBus-lite中,以“awbl_”作为命名空间,“awbl”是AWBus-lite的缩写。aw_const是用于定义常量的修饰符,其等效于C语言中的关键字:const。

g_awbl_devhcf_list[]数组为定义的硬件设备列表,g_awbl_devhcf_list_count定义了列表中设备的个数。AW_NELEMENTS()为获取数组元素个数的宏,其定义如下(aw_common.h):

12.3.2 ?设备描述类型

由数组的定义可知,数组中每个元素的实际类型为struct awbl_devhcf,其描述了一个硬件设备在系统总线拓扑结构中的位置以及设备的配置,具体类型定义详见程序清单12.2。

程序清单12.2 struct awbl_devhcf类型定义(awbus_lite.h)

1. ?设备名

设备名为一个字符串,此名字需要与设备驱动的名字一致,系统将根据此名字查找该设备对应的驱动。在系统启动时,最重要的步骤之一就是将设备和设备驱动绑定,以便正确使用各个设备。要使系统能够正确查找到设备相应的驱动,设备名必须与相应的驱动名一致。

为确保一致性,在开发驱动时,往往使用宏定义的形式将驱动名定义在头文件中,在描述一个硬件设备时,直接使用该宏定义作为其设备名即可。

例如,i.MX28x的片上I2C设备驱动,其对应的驱动头文件为:awbl_imx28_i2c.h,在该文件中,定义了驱动名为AWBL_IMX28_I2C_NAME,完整定义如下:

基于此,在描述I2C设备(如描述I2C1设备),对应的设备名应该设定为:

AWBL_IMX28_I2C_NAME。

又如,对于PCF85063设备驱动,其对应的驱动头文件为:awbl_pcf85063.h,在该文件中,定义了驱动名为:AWBL_PCF85063_NAME。其完整的定义如下:

基于此,在描述PCF85063设备时,其设备名应该设定为:

AWBL_PCF85063_NAME。

2. ?设备单元号

设备单元号用于区分系统中几个相同的硬件设备,它们的设备名一样,复用同一份驱动。

AWBus-lite建议设备单元号从0开始连续分配。

例如,在i.MX28x中,具有两个I2C片内外设,则I2C0的设备单元号为0,I2C1的设备单元号为1。又如,对于PCF85063设备,若只外接了一个PCF85063,则设备单元号为0,若外接了两个PCF85063,则设备单元号分别为0、1。通常情况下,一个系统中只会使用一个外部RTC,不会连接两个外部RTC芯片,此时,将设备单元号设置为0即可。

注意,在通用接口中,通常有一个用于指定设备的ID,例如,在RTC接口中,使用ID指定要操作的RTC设备。设备单元号与该ID的概念是不同的,设备单元号用于区分几个使用同一驱动的设备,ID用于区分同一类的设备(这些设备不一定使用相同的驱动)。

例如,i.MX28x具有片上RTC外设,其挂在PLB总线上,显然,其驱动方法与挂在I2C总线上的PCF85063是不一样的。若系统同时使用了片上RTC外设和一个片外PCF85063,由于它们并不使用同一份驱动,因此,在描述这两个设备时,设备名是不一样的,设备单元号可各自独立分配,互不影响,均可设置为0。但是,由于这两个设备均可以为系统RTC服务,可以使用RTC通用接口操作这两个设备,为了区分这两个设备,它们的ID必须统一编排,例如,为片上RTC外设分配编号0,为PCF85063分配编号1,不可设置为一样。ID在一个设备对应的设备信息中配置,将在后文详细介绍。

3. ?设备父总线的类型

设备父总线的类型指出了设备挂接在哪种类型的总线上,例如,PLB、I2C、SPI、USB、SDIO、PCI等。各总线的类型已经在awbus_lite.h文件中定义,部分常用总线对应的宏定义详见表12.1。

表12.1 总线类型宏定义

例如,i.MX28x的片上I2C1设备,其由CPU直接控制,挂接在PLB总线上,因此,对于I2C1设备,bus_type的值为:AWBL_BUSID_PLB。

对于PCF85063设备,其作为一种I2C从机器件,挂接在I2C总线上,因此,对于PCF85063设备,bus_type的值为:AWBL_BUSID_I2C。

4. ?设备父总线的编号

设备父总线的编号用于区分系统中多条类型相同的总线。AWBus-lite建议总线编号从0开始连续分配。

在AWBus-lite中,PLB总线是一条特殊的虚拟总线,只有一条,因此,对于挂在PLB总线上的设备,比如i.MX28x的片上I2C1设备,它们的设备父总线编号总是为0。其它类型的总线可能有多条,例如,i.MX28x具有两个I2C片上外设:I2C0、I2C1,它们作为一种总线控制器,可以各自扩展出一条I2C总线,致使系统中有两条I2C总线,可将它们的总线编号分别设置为0、1。对于PCF85063,若其连接在I2C0总线上,则bus_index的值为0;若其连接在I2C1总线上,则bus_index的值为1。

5. ?设备实例内存

设备驱动相当于定义了一个类,而具体的设备相当于这个类的一个实例,显然,实例需要占用一定的内存空间。而在AWBus-lite中,并不使用动态内存分配,因此,需要在描述一个设备的同时,完成设备实例的静态定义,为设备实例分配必要的内存空间。p_dev即为指向静态定义的设备实例的指针,其类型struct awbl_dev是AWBus-lite定义的基础设备类型,其具体定义用户无需关心。实际设备类型均是从基础设备类型派生而来的,例如,PCF85063的设备类型可能定义为:

由于实际设备类型仅用于在描述设备时分配设备实例相关的内存,并不需要操作其中的成员,因此,用户并不需要关心实际设备类型的具体定义(比如,具体包含哪些成员等)。用户只需要了解到实际设备类型是从基础设备类型派生而来的,因而可以将实际设备类型的指针强转为基础设备类型的指针进行使用(之类转换为父类)。

例如,对于i.MX28x的片上I2C1设备,在其对应的驱动头文件awbl_imx28_i2c.h中定义了I2C设备的类型为struct awbl_imx28_i2c_dev,使用该类型定义一个I2C1设备实例,即可完成设备实例的内存分配,例如:

注: aw_local用于将函数作用域限制在文件内部,或将变量的作用域限制在文件或函数内部,同时,将aw_local修饰的变量存放在全局静态区域,在整个程序的生命周期均保持有效。其本质上等效于C语言中的关键字:static。

其地址&__g_imx28_i2c1_dev即可作为设备描述中p_dev的值。虽然其类型与p_dev的类型并不相同,但由于struct awbl_imx28_i2c_dev类型继承自struct awbl_dev类型,是基础设备类型的一个子类,可以将子类转换为父类使用,例如,将p_dev设置为:

同理,对于PCF85063设备,在其对应的驱动头文件awbl_pcf85063.h中定义了PCF85063的设备类型为struct awbl_pcf85063_dev,使用该类型定义一个PCF85063设备实例,即可完成设备实例的内存分配,例如:

其地址&__g_pcf85063_0_dev即可作为设备描述中p_dev的值,例如,将p_dev设置为:

6. ?设备信息

设备信息描述了设备的一些配置信息,例如,设备的基地址、中断号等信息。设备信息的具体类型是由设备驱动定义的。用户需要根据实际设备信息的类型定义一个设备信息,并将其地址赋值给设备描述中的p_devinfo。该信息最终会传递给驱动使用,以便正确的驱动相应设备。

  • ?I2C1设备信息定义范例

对于i.MX28x的片上I2C1设备,在其对应的驱动头文件awbl_imx28_i2c.h中定义了I2C设备信息类型为struct awbl_imx28_i2c_devinfo,其具体定义详见程序清单12.3。

程序清单12.3 I2C设备信息类型定义(awbl_imx28_i2c.h)

I2C设备是一个I2C控制器,可以扩展出一条I2C总线,i2c_master_devinfo即用于提供I2C线相关的信息,比如:总线的编号、速率、超时时间等。其类型struct?awbl_i2c_master_devinfo的定义详见程序清单12.4。

程序清单12.4 struct awbl_i2c_master_devinfo类型定义(awbl_i2cbus.h)

其中bus_index表示该I2C控制器扩展出的I2C总线对应的编号,若某一设备(如PCF85063)在硬件上与I2C1连接,则在其设备描述中,父总线的编号应与该值保持一致。speed表示该I2C总线的速率。通常情况下,为了便于配置,将总线编号和速率使用宏的形式定义在aw_prj_param.h文件中,例如,将总线ID定义为1,速率定义为200KHz:

后续使用这两个宏分别作为bus_index和speed的值即可。

timeout表示超时时间,若使用通用I2C接口在该总线上的某一操作(如读数据或写数据)超过了该处定义的超时超时,则相应接口将返回超时错误。特别地,若将该值设置为

AWBL_I2C_WAITFOREVER

(其是在awbl_i2cbus.h文件中定义的宏),则表示永久等待,也可以设置为其它正整数值,例如,500,则表示超时时间为500个tick。

regbase表示I2C设备的基地址,对于i.MX28x,所有片内外设的基地址均在imx28x_regbase.h文件中定义,例如,I2C1的基地址定义如下:

由此可见,I2C1设备的基地址为0x8005A000,该值可以从i.MX28x的用户手册中获得。

inum表示I2C设备的中断号,驱动可以使用该中断号使用系统中断资源,以使I2C设备可以基于中断机制进行数据通信。对于i.MX28x,所有片内外设的中断号均在imx28x_inum.h文件中定义,例如,I2C1设备的中断号定义如下:

由此可见,I2C1设备的中断号为110,该值可以从i.MX28x的用户手册中获得。

clkfreq表示I2C??榈氖淙?a href='//www.b03i.com.cn/tags/时钟/' target='_blank'>时钟频率,在i.MX28x中,默认频率为24MHz,该值通常不需要修改。

pfunc_plfm_init是一个函数指针,指向一个无参数、无返回值的平台初始化函数,用于完成平台相关的初始化操作,比如引脚配置等。例如,在定义一个平台初始化函数,完成I2C1设备的SCL和SDA引脚配置,详见详见程序清单12.5。

程序清单12.5 实现一个平台初始化函数

其中,__imx28_i2c1_plfm_init为实现的平台初始化函数,其可直接作为设备信息中

pfunc_plfm_init的值。

基于上面对各个成员的描述,可以定义一个典型的设备信息,详见程序清单12.6。

程序清单12.6 I2C1设备信息定义

完成设备信息的定义后,其地址

&__g_imx28_i2c1_devinfo即可作为设备描述中p_devinfo的值。

  • PCF85063设备信息定义范例

对于PCF85063设备,在其对应的驱动头文件awbl_pcf85063.h中定义了PCF85063的设备信息类型为awbl_pcf85063_devinfo_t,其具体定义详见程序清单12.7。

程序清单12.7 PCF85063设备信息类型定义(awbl_pcf85063.h)

其中,rtc_servinfo包含了RTC标准服务相关的信息,目前仅包含了RTC的编号,其类型定义详见程序清单12.8。

程序清单12.8 RTC通用服务信息类型定义(awbl_rtc.h)

通过RTC通用接口的介绍可知,在使用通用接口操作RTC时,需要通过rtc_id指定使用的RTC设备,rtc_id通常从0开始编号。rtc_servinfo中的rtc_id即用于指定该设备对应的ID号,如果设置为0,则用户在使用RTC通用接口时,将rtc_id参数设置为0即可操作到此处定义的硬件设备。

addr为PCF85063的7位I2C从机地址,通过查看PCF85063的数据手册可知,PCF85063的7位I2C从机地址为0x51。

基于rtc_id和addr的值,可以完成PCF85063设备信息的定义,详见程序清单12.9。

程序清单12.9 PCF85063设备信息定义范例

完成设备信息的定义后,其地址

&__g_pcf85063_0_devinfo即可作为设备描述中p_devinfo的值。

12.3.3 ?设备描述宏定义

在g_awbl_devhcf_list[]数组中,每个元素都是以“AWBL_HWCONF_”作为前缀的一个宏。该宏本质上完成了一个设备描述的定义。

例如,对于i.MX28x的片上I2C1设备,其对应的宏为:AWBL_HWCONF_IMX28_I2C0。基于前面介绍的设备描述中各个成员的值,可以完成该宏的定义,详见程序清单12.10。

程序清单12.10 I2C1设备描述宏定义

对于PCF85063设备,其对应的宏为

AWBL_HWCONF_PCF8563_0,基于前面介绍的设备描述中各个成员的值,可以完成该宏的定义,详见程序清单12.11。

程序清单12.11 PCF85063设备描述宏定义

通常情况下,为了保持

awbus_lite_hwconf_usrcfg.c文件的简洁,将设备描述宏的定义(包括设备、设备信息的定义)单独存放到一个头文件中,I2C1设备描述宏定义相关的信息存放在awbl_hwconf_imx28_i2c1.h文件中,PCF85063设备描述宏定义相关的信息存放在awbl_hwconf_pcf85063_0.h文件中。

这些文件已经在模板工程中提供,在硬件设备列表中,只需加入该宏即可,详见程序清单12.1。通过设备的描述可知,I2C1设备挂在PLB总线上,PCF85063设备挂在I2C1总线上,设备描述与拓扑结构的关系详见图12.4。

图12.4 I2C1和PCF85063设备描述与拓扑结构的对应关系

12.3.4 ?设备的配置与裁剪

设备配置主要是基于工程模板中提供的配置文件,进行设备描述或设备信息的修改。用户若需修改硬件设备的配置,只需找到该硬件设备相应的头文件,修改其中的相关信息即可。

例如,需要修改PCF85063的rtc_id为1,仅需将程序清单12.9中的第3行修改为1。若需调整设备在总线拓扑结构中的位置。一般来讲,一个设备的父总线类型是确定的,不会修改。如PCF85063,其父总线类型必定为:

AWBL_BUSID_I2C。调整设备在总线拓扑结构中的位置往往是修改父总线的编号,如要将PCF85063挂在I2C0上,仅需将程序清单12.11中,第6行对应的父总线编号修改为I2C0对应的总线总线编号,即:IMX28_I2C0_BUSID。

除简单的配置外,另外一种特殊的操作是裁剪,例如,用户不需要使用PCF85063,则可以在硬件列表中删除该设备的描述宏:

AWBL_HWCONF_PCF85063_0。为了便于用户裁剪,避免直接操作g_awbl_devhcf_list[]数组,在awbl_hwconf_pcf85063_0.h文件中,使用了另外一个使能宏来控制

AWBL_HWCONF_PCF85063_0宏的定义,详见程序清单12.12。

程序清单12.12 增加PCF85063设备使能宏(awbl_hwconf_pcf85063_0.h)

程序中,增加了一个使能宏:

AW_DEV_EXTEND_PCF85063_0。若该宏被有效定义,则AWBL_HWCONF_PCF85063_0宏的定义为完整的设备描述,此时,PCF85063设备正常的加入到设备列表中;反之,若使能宏未被定义,则AWBL_HWCONF_PCF85063_0宏将是一个空的宏定义,同时,相关的设备实例,设备信息也不会被定义。此时,在设备列表中,将不存在PCF85063设备的描述,相当于裁剪掉了该设备。同理可以新增一个I2C1设备的使能宏,以便对I2C1设备进行裁剪,详见程序清单12.13。

程序清单12.13 增加I2C1设备使能宏(awbl_hwconf_imx28_i2c1.h)

程序中,新增了AW_DEV_IMX28_I2C_1宏对I2C1设备是否使能进行控制。为便于查找,在AWorks中,类似的设备相关的使能宏均在模板工程下的aw_prj_params.h文件中进行统一的定义,详见程序清单12.14。

程序清单12.14 设备使能宏定义(aw_prj_params.h)

若其中的某一个宏被用户注释掉了,则对应的设备就会被裁剪。通过查看aw_prj_params.h文件,用户可以了解哪些设备被使能了,哪些设备被禁能了,并根据需要,灵活的调整。例如,不再使用PCF85063,则可以注释掉该宏,详见程序清单12.15。

程序清单12.15 设备裁剪范例(aw_prj_params.h)

值得注意的是,部分特殊的片上外设,例如,GPIO、中断控制器等,系统必须使用,不能被裁剪,此时,将不会在相应的配置文件中增加额外的使能宏。

12.3.5 ?注册设备驱动

在描述一个设备时,通过设备名指定了该设备对应的驱动,要使设备正常工作,系统中必须存在设备对应的驱动。AWorks作为一个完备的软件平台,已经支持众多的芯片和外围器件,提供了许许多多的设备驱动,随着AWorks的进一步发展,提供的驱动还会越来越多。

显然,为了节省系统资源,并不能将所有驱动都加载到系统中,而应该只将使用到的驱动加载到系统中,驱动的加载在aw_prj_config.c文件中的awbl_group_init()函数中完成,该函数在系统启动时被自动调用。

每个驱动都提供了一个驱动注册函数,要使用该驱动,则应在awbl_group_init()函数中调用驱动提供的注册函数。例如,对于PCF85063设备驱动,其提供的驱动注册函数在驱动头文件awbl_pcf85063.h文件中声明,即:

如需使用PCF85063,则应将该驱动加载到系统中,即:

一般来讲,新增的驱动都添加到函数尾部。同理,为了便于裁剪,不直接修改aw_prj_config.c文件,往往使用一个宏对是否注册相应驱动进行控制,只有当宏使能时,才进行相应的驱动注册,详见程序清单12.16。

程序清单12.16 通过宏控制驱动是否注册的原理

程序中,若定义了

AW_DRV_EXTEND_PCF85063_0宏,则会调用驱动注册函数将驱动注册到系统之中;否则,驱动将不会被注册,相应的驱动代码就得到了裁剪。

为便于管理,在AWorks中,类似的驱动相关的使能宏均在模板工程下的aw_prj_params.h文件中进行统一的定义,例如:

实际中,只要使用PCF85063设备,就必须将PCF85063的设备驱动注册到系统之中,为了确保这一关系,模板工程中,做了一个简单的自动定义操作,在设备和设备驱动的使能宏之间进行了恰当的关联,即:

由此可见,只要PCF85063设备被使能,AW_DRV_AWBL_EXTEND_PCF85063_0宏将被自动定义,使相应的驱动也随之注册到系统之中。

这里仅仅只是简单的展示了设备驱动加载的原理,帮助用户更深入的理解AWBus-lite。实际中,模板工程已经对此进行了恰当的处理,当一个设备被使能后,其相应的驱动会被一并使能,用户只需要控制设备的使能/禁能即可。

12.3.6 ?硬件设备的父总线设备

对于PCF85063,其父总线类型为:

AWBL_BUSID_I2C,即PCF85063挂在某一I2C总线上,显然,I2C总线需要由I2C总线控制器设备产生,比如在i.MX28x中,片上外设I2C0和I2C1均可以产生I2C总线。

这也就意味着,要使用PCF85063设备,除使能PCF85063设备本身外,还必须使能其父总线对应的设备。如在i.MX28x中,I2C0和I2C1设备对应的使能宏在aw_prj_params.h文件中定义为:

基于此,若PCF85063挂在I2C0上,则必须使能AW_DEV_IMX28_I2C_0宏。若挂在I2C1上,则必须使能AW_DEV_IMX28_I2C_1宏。

在i.MX28x中,I2C设备又挂在PLB总线上,PLB总线作为CPU本地总线,不需要额外使能,始终有效。特别地,若父总线设备又挂在另外一条总线上,而不是PLB总线上,则相应的父总线设备对应的控制器同样需要使能,以此类推,确保所有父总线设备均被使能。

例如,在图12.1(b)所示的结构图中,若需要使用SC16IS752设备,则必须使能SC16IS752设备的父总线设备:SC18IS602B设备,同时,还需使能SC18IS602B设备的父总线设备:I2C0设备。

12.4 ?访问设备

若系统硬件资源定义正确,并且所需的驱动也注册到了系统中,则可以通过AWorks定义的通用接口访问这些硬件设备。

12.4.1 ?通用接口

AWorks 为每一类设备都定义了一套精简强大的通用接口,不同的平台、不同的硬件,只要是通用接口支持的类型,都可以使用通用接口进行访问。例如,使用RTC通用接口访问RTC设备,使用GPIO通用接口访问GPIO设备,使用LED通用接口访问LED。

无论硬件设备挂在何种总线上,处在AWbus-lite拓扑结构中的何种位置,对同一类硬件设备,均可使用相同的接口对它们进行访问。例如,在一个基于i.MX28x的系统中,使用了两个RTC设备:i.MX28x 片上RTC外设,外围器件PCF85063。它们的编号分别为0、1,使用通用接口对它们进行访问的示意图详见图12.5。

图12.5 使用RTC通用接口访问RTC设备

由此可见,尽管它们处于不同的总线上,但却可以使用相同的接口进行操作。对应用程序来说,硬件设备的具体位置并不会对应用程序产生任何影响。这就将硬件底层和应用层进行了很好的隔离,后续即使将PCF85063更换为其它RTC器件(例如,RX8025T、DS1302等),应用程序也不需要做任何改动。

再以串口为例,查看一种更加复杂的拓扑结构,示意图详见图12.6。

图12.6 使用RTC通用接口访问RTC设备

在图12.6中,SC16IS752是一种SPI转两路UART芯片。这里仅作为访问UART设备的一种示例,以便于用户理解,用户无需深入了解这款芯片,仅需知道SC16IS752是一种SPI转串口芯片即可。

在图12.6中,总共有5个串口:MCU片内有1个串口,两片SC16IS752外扩了4个串口,它们的串口号分别为COM0、COM1、COM2、COM3和COM4。在实际硬件连接中,访问SC16IS752芯片需要经过PLB总线、I2C总线和SPI总线,进而使用其中的UART功能,但对于用户来讲,同样只需要简单的调用串行通用接口即可使用SC16IS752芯片提供的串口功能,和使用片内的UART外设并无区别。

再如,每个MCU都具有一定数量的GPIO,但是,当GPIO不够用时,可能需要通过外围器件对GPIO进行扩展,示意图详见图12.7。

图12.7 使用GPIO通用接口访问GPIO设备

在图12.7中,总共有两个GPIO设备:

  • MCU片内GPIO,引脚编号范围:

    PIO0_0~PIO6_24;

  • 外扩芯片CAT9555,引脚编号范围:

    EXPIO0_0~EXPIO0_7、

    EXPIO1_0~EXPIO1_7。

它们同样可以使用相同的接口进行访问。

12.4.2 ?资源ID

在前面的例子中,一个系统中可能存在多个同类设备,它们之间使用“资源ID”进行区分,通用接口则使用“资源ID”指定要访问的设备。

通常情况下,“资源ID”为int类型的整数,并从0开始顺序编号。为了便于管理以及增强程序的可读性,通常将这些资源ID定义为宏,通过宏名体现其真实的含义。例如,在i.MX28x的I2C0配置文件awbl_hwconf_imx28_i2c0.h中,定义了I2C0设备的设备信息,详见程序清单12.17。

程序清单12.17 I2C0设备信息配置(awbl_hwconf_imx28_i2c0.h)

在设备信息中,IMX28_I2C0_BUSID即为I2C0总线的ID宏,默认情况下,该宏在aw_prj_param.h文件中定义为0,详见程序清单12.18。

程序清单12.18 I2C0设备对应的资源ID宏定义(aw_prj_param.h)

后续要修改I2C0的ID,仅需修改该宏的值即可。

需要注意的是,“资源ID”的类型并不局限于int类型,只要用于区分同种类型下的多个设备,都可以视为一种“资源ID”,可以是指针类型,字符串类型等等。

在同一个系统中,某类设备的资源ID必须统一分配,某一资源ID不能被重复分配至多个设备,确保每个设备资源ID的唯一性。例如,在i.MX28x的GPIO配置文件awbl_hwconf_imx28_gpio.h中,定义了GPIO设备信息,详见程序清单12.19。

程序清单12.19 GPIO设备信息配置(awbl_hwconf_imx28_gpio.h)

其中,PIO0_0 ~ PIO6_24为GPIO资源ID宏,它们的定义详见程序清单12.20。

程序清单12.20 GPIO设备资源ID宏定义(imx28x_pin.h)

由此可见,PIO0_0的值为0,PIO6_24的值为216,因此,i.MX28x的片上GPIO占用的资源ID范围为:0 ~ 216。此时,若使用扩展芯片(比如:CAT9555)对GPIO进行了扩展,则为扩展芯片分配的资源ID范围就必须大于216(不含),以避免范围重叠。

原文标题:AWorks软件篇 — AWBus-lite 总线框架

文章出处:【微信号:ZLG_zhiyuan,微信公众号:ZLG致远电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

基于TTCAN和动态晋升机制的CAN总线调度算法

CAN总线最初是由德国BOSCH公司于20世纪80年代初提出的,当时主要应用于汽车电气通信,它将汽车....
发表于 02-17 10:05 ? 13次 阅读
基于TTCAN和动态晋升机制的CAN总线调度算法

现场总线技术标准化进程与现状研究分析

七十年代,微处理器技术的进步以及“集中管理、分散控制”的风险控制策略促成了基于微处理器芯片的集散控制....
发表于 02-17 09:55 ? 18次 阅读
现场总线技术标准化进程与现状研究分析

新的人机接口出现 彻底改变了我们的生活

大约十年前由于iPhone的推出使我们的日常生活产生了重大改变,利用触控来操作手机的方式扮演了至关重....
发表于 02-16 11:03 ? 97次 阅读
新的人机接口出现 彻底改变了我们的生活

想打赢MCU市场的争夺战 首先要最大化满足客户需求

MCU在消费电子、汽车电子和工业控制等领域应用广泛,未来随着物联网、自动驾驶等创新应用的快速发展,市....
发表于 02-16 09:57 ? 51次 阅读
想打赢MCU市场的争夺战 首先要最大化满足客户需求

高性能的RS-232与RS-485双向转换电路

MPM11(A)T??椴唤鍪淙胗胧涑鲋涓衾?,输出RS-232通道与RS-485通道之间也相互隔离,....
的头像 周立功单片机 发表于 02-15 10:32 ? 336次 阅读
高性能的RS-232与RS-485双向转换电路

瑞萨电子MCU新产品型号速查手册免费下载

本文档的主要内容详细介绍的是瑞萨电子MCU新产品型号速查手册资料免费下载。
发表于 02-15 08:00 ? 26次 阅读
瑞萨电子MCU新产品型号速查手册免费下载

请问HAL库怎么修改CAN节点的stdid?

项目中需要用一款STM32的MCU做CAN中继,关键是需要在接收到数据的同时需要转发,转发用的CAN节点ID要与被转发的C...
发表于 02-15 07:45 ? 309次 阅读
请问HAL库怎么修改CAN节点的stdid?

f407+dm9161硬件平台,插拔网线出现网络传输终止

大家好!        硬件平台为f407+dm9161,当网管平台给mcu传输数据时,插拔了几次网线,出现网络传输终止,还pi...
发表于 02-15 07:19 ? 235次 阅读
f407+dm9161硬件平台,插拔网线出现网络传输终止

请问有人做过A7108这个433M吗?

最近玩这个433M,用的是A7108,MCU用的是149.看手册看的很郁闷,话说英语不好真的好痛苦,就是用翻译软件来看,看个乱七八糟,不过...
发表于 02-15 06:35 ? 224次 阅读
请问有人做过A7108这个433M吗?

如何配置usb c和控制器

你好! 我试图通过usb c电缆将北欧nrf52 mcu与stusb1602配对,但我希望我们即将推出的产品上的固件升级也要通过usb 2协议,我也...
发表于 02-14 14:05 ? 33次 阅读
如何配置usb c和控制器

MCU直接用USB供电是否合适

我的MCU标称电压为3-5.5V,请问直接用USB供电是否合适? ...
发表于 02-14 11:44 ? 283次 阅读
MCU直接用USB供电是否合适

如何解决变频器动力线对DP现场总线干扰的故障

故障现象:前天在P01操作台和触摸屏上操作辊轮架上升下降的动作出现DP总线瞬间闪断一会儿又自动恢复正....
的头像 工控网智造工程师 发表于 02-14 09:11 ? 274次 阅读
如何解决变频器动力线对DP现场总线干扰的故障

浅析判断DP线是否正常的方法

DP线的通断,会影响到现场站之间和现场站与中控的连接,是系统能正常工作的基础。
的头像 工控网智造工程师 发表于 02-14 08:43 ? 264次 阅读
浅析判断DP线是否正常的方法

EFM8BB1 8位微控制器的数据手册免费下载

EFM8BB1 是 Busy Bee 系列的 MCU,是一款小封装且功能全面的多用途 8-位微控制器....
发表于 02-14 08:00 ? 19次 阅读
EFM8BB1 8位微控制器的数据手册免费下载

请问连PC读MCU生成的历史数据哪种方式合适?

最近做的设备有个需求 需要连接PC,从PC读取控制板上的存储数据(每个占10个字节,每天会有200个左右的数据量) 我目前...
发表于 02-14 07:50 ? 301次 阅读
请问连PC读MCU生成的历史数据哪种方式合适?

怎么修改驱动模式

当我使用立方体ICE和21x34 POD实践修改IO端口时,POD只将P17连接到电压表,没有其他外部组件。代码让我迷惑。(P.S...
发表于 02-13 13:47 ? 237次 阅读
怎么修改驱动模式

ADuC7xxx系列芯片使用心得

学习使用了两年多ADI公司的ADuC7xxxx系列芯片,跟大家分享一些我感觉有用的东西,希望能对初学者有所帮助。比如利用ADUC...
发表于 02-13 13:24 ? 27次 阅读
ADuC7xxx系列芯片使用心得

STVP无法连接到MCU

嗨, 我正在使用STM8S-Discovery板和STVD软件的编程器调试STM8S105x6的软件。 一切顺利,直到突然在进...
发表于 02-13 12:13 ? 38次 阅读
STVP无法连接到MCU

一款适合在小体积产品应用的BS45F3832雾化器MCU介绍

BS45F3832整合雾化器控制与触控检水线路,提供8-pin SOP特小封装,适合用在各式雾化器与....
发表于 02-12 16:09 ? 101次 阅读
一款适合在小体积产品应用的BS45F3832雾化器MCU介绍

一款可以运行ZigBee或Thread协议的双模SoC器件RS13100无线MCU介绍

RS13100 SoC器件具有高达180MHz性能的ARM Cortex M4F、最大4MB专用闪存....
发表于 02-12 16:00 ? 128次 阅读
一款可以运行ZigBee或Thread协议的双模SoC器件RS13100无线MCU介绍

CC1312R高性能无线MCU的数据手册和资料说明

CC1312R 器件是一款低于 1GHz 无线 MCU,面向无线 M-Bus、IEEE 802.15....
发表于 02-12 08:00 ? 21次 阅读
CC1312R高性能无线MCU的数据手册和资料说明

CC1352P高性能双频带无线MCU的数据手册免费下载

CC1352P 器件是一款多协议低于 1GHz 和 2.4GHz 无线 MCU,面向无线 M-Bus....
发表于 02-12 08:00 ? 29次 阅读
CC1352P高性能双频带无线MCU的数据手册免费下载

请问STM32F013RCT6串口4和串口5的脚位是什么IO

在百度查看了MCU的脚位功能定义,没看到串口4和串口5的脚位说明,搜索到有人写的串口程序配置, PA9 - USART1(Tx)/P...
发表于 02-12 01:40 ? 16次 阅读
请问STM32F013RCT6串口4和串口5的脚位是什么IO

Holtek针对红外线测温应用推出了最新款BH67F2752红外线测温MCU

Holtek针对红外线测温应用新推出BH67F2752,整合Thermopile AFE以及LCD ....
发表于 02-11 16:45 ? 44次 阅读
Holtek针对红外线测温应用推出了最新款BH67F2752红外线测温MCU

MCU的替换需要考虑什么

对于我们从事软件,或者硬件的朋友,如何将一种MCU轻松替换成同一产品系列的另一种MCU非常重要。
的头像 嵌入式资讯精选 发表于 02-11 15:45 ? 211次 阅读
MCU的替换需要考虑什么

RTCC芯片的选择与在嵌入式系统的设计应用

许多嵌入式应用需要知道时间,以便在特定的时间和日期,或针对时间戳事件,或同时依据两者执行特定的任务。....
的头像 电子设计 发表于 02-06 09:45 ? 426次 阅读
RTCC芯片的选择与在嵌入式系统的设计应用

提高ADC采集精度的办法

理想情况下, 1 LSB的模拟输入电压变化量应导致数字代码变化。如果需要大于1 LSB的模拟输入电压....
的头像 嵌入式资讯精选 发表于 02-04 11:09 ? 361次 阅读
提高ADC采集精度的办法

2019年MCU的市场战术会发生什么样的变化

在不同地域、不同战争阶段和不同战斗规模的情况下,战术的运用也各不相同。根据时机、实力等不同情况,灵活....
的头像 嵌入式资讯精选 发表于 02-03 12:35 ? 312次 阅读
2019年MCU的市场战术会发生什么样的变化

嵌入式系统的深度低功耗应用和优化实现的资料说明

低功耗系统设计需要注意很多非传统性因素,从硅片工艺技术,直到在微控制器嵌入平台上运行的软件。在系统级....
的头像 嵌入式ARM 发表于 02-03 09:23 ? 436次 阅读
嵌入式系统的深度低功耗应用和优化实现的资料说明

DIY制作USB机械键盘

网上查了查键盘实现的原理,发现比较简单。加上自己工作上一直在接触USB协议,于是做一个USB机械键盘....
的头像 单片机爱好者 发表于 02-02 17:36 ? 255次 阅读
DIY制作USB机械键盘

EFM32系列32位MCU的GPIO配置,读取/写入,外设功能

EFM32系列的三个典型寄存器配置:GPIO_Px_MODEL(端口引脚0-7)或GPIO_Px_M....
的头像 SiliconLabs 发表于 01-30 16:53 ? 666次 阅读
EFM32系列32位MCU的GPIO配置,读取/写入,外设功能

如何正确的设计嵌入式软件架构应该这么做

近公司新招了一个做嵌入式软件开发的同事,该同事是从上海的某一个上市公司出来的,因为我们这边人手不够,....
的头像 嵌入式ARM 发表于 01-29 15:45 ? 491次 阅读
如何正确的设计嵌入式软件架构应该这么做

ARM、MCU、DSP、FPGA、SOC你知道是什么吗?

FPGA: FPGA是英文Field Programmable Gate Array(现场可编程门阵....
的头像 电子工程技术 发表于 01-29 10:51 ? 935次 阅读
ARM、MCU、DSP、FPGA、SOC你知道是什么吗?

EFR32MG1 Mighty Gecko多协议SoC系列数据手册免费下载

强大的Gecko多协议SOCS系列是无线Gecko产品组合的一部分。强大的Gecko SOC是实现物....
发表于 01-29 08:00 ? 46次 阅读
EFR32MG1 Mighty Gecko多协议SoC系列数据手册免费下载

DL-BK24K6 TX和RX无线??啬?楣娓袷菔植崦夥严略?/a>

DL-BK24K6 TX/RX 无线??啬?槭俏宜究⒌囊豢钅诤琈CU 及??爻绦?不需要再编程的学....
发表于 01-28 08:00 ? 122次 阅读
DL-BK24K6 TX和RX无线??啬?楣娓袷菔植崦夥严略? />    </a>
</div><div class=

DL-BK24C无线串口??榈氖菔植崦夥严略?/a>

DL-BK24C 是一款体积小巧的、低成本、远距离2.4G 无线串口???。采用高性价比2.4G 内置....
发表于 01-28 08:00 ? 50次 阅读
DL-BK24C无线串口??榈氖菔植崦夥严略? />    </a>
</div><div class=

如何选择合适的MCU和电源让你的嵌入式电路设计更高效

1、MCU的选择选择 MCU 时要考虑 MCU 所能够完成的功能、MCU 的价格、功耗、供电电压、I....
的头像 玩转单片机 发表于 01-27 11:40 ? 954次 阅读
如何选择合适的MCU和电源让你的嵌入式电路设计更高效

梳理一下国内MCU主要厂商都有哪些

兆易创新GD32MCU也是Arm大学计划(UniversityProgram,AUP)中国首批合作伙....
的头像 OFweek工控 发表于 01-26 10:25 ? 2177次 阅读
梳理一下国内MCU主要厂商都有哪些

MCU增势强劲,2019年国内厂商会有什么新战术选择呢

在不同地域、不同战争阶段和不同战斗规模的情况下,战术的运用也各不相同。根据时机、实力等不同情况,灵活....
发表于 01-26 09:30 ? 194次 阅读
MCU增势强劲,2019年国内厂商会有什么新战术选择呢

基于集成的MCU实现高性价比微型逆变器设计

微逆变通过提供电力转换在各个面板水平提供了有效的解决方案,以太阳能收获。高度集成的MCU的出现提供了....
发表于 01-26 09:20 ? 1429次 阅读
基于集成的MCU实现高性价比微型逆变器设计

高度集成的小功率能量收集紧凑型解决方案

对于快速增长的市场,如身打扮或物联网(IOT)互联网,能量收集可以显著提高电池寿命,甚至使无电池设计....
发表于 01-26 09:07 ? 1445次 阅读
高度集成的小功率能量收集紧凑型解决方案

探索EFM8 Universal Bee开发套件

Simplicity Studio是基于Eclipse 4.5开发的集成开发环境,可以方便为所有的开....
的头像 SiliconLabs 发表于 01-24 17:23 ? 592次 阅读
探索EFM8 Universal Bee开发套件

我国MCU技术的发展进程及现状

单片机出现的历史并不长,但发展十分迅猛,它的产生与发展和MCU的产生与发展大体同步,自1971年美国....
发表于 01-24 15:48 ? 397次 阅读
我国MCU技术的发展进程及现状

MCU市场需求爆炸性的增长国产MCU将迎来利好的发展机遇

首先,MCU应用“定义权”在中国。不管从消费类的玩具、手机周边、家居家电,到工业类的电机控制、汽车电....
发表于 01-24 15:34 ? 269次 阅读
MCU市场需求爆炸性的增长国产MCU将迎来利好的发展机遇

为什么中国工程师都喜欢用51单片机

今天告诉你们一个秘密,为什么我们学的是51单片机,为什么在中国无论是工程师还是大学教师还是大学生都喜....
的头像 玩转单片机 发表于 01-24 14:18 ? 873次 阅读
为什么中国工程师都喜欢用51单片机

NB-IoT和5G领航!2019年物联网领域十大趋势发布

2019年,物联网处于持续演化当中,我们放眼观察物联网产业链的四大环节:芯片和终端、网络、平台使能和....
发表于 01-24 08:54 ? 2601次 阅读
NB-IoT和5G领航!2019年物联网领域十大趋势发布

STM32的各个MCU性能评判

我们经常听见某手机发布会,安兔兔跑分多少多少,其实这个跑分就是体现手机性能的一个指标。我们使用STM....
的头像 嵌入式资讯精选 发表于 01-22 16:37 ? 479次 阅读
STM32的各个MCU性能评判

如何实现AD芯片和高速FIFO存储器以及MCU之间的接口电路

ADS8323需要外接时钟信号,时钟频率范围从25kHZ(1.25kSPS)到10MHZ(500kS....
发表于 01-22 16:13 ? 265次 阅读
如何实现AD芯片和高速FIFO存储器以及MCU之间的接口电路

RT-Thread设备框架使用指南——I2C总线设备简介

应答信号: 每传输完成一个字节的数据,接收方就需要回复一个 ACK(acknowledge)。写数据....
的头像 RTThread物联网操作系统 发表于 01-22 11:50 ? 327次 阅读
RT-Thread设备框架使用指南——I2C总线设备简介

国产MCU厂商正在崛起打破国外垄断占领自己的一席之地

随着物联网和新能源汽车的高速发展,未来MCU的市场需求将有爆炸性的增长,前景看好。在竞争激烈的全球市....
发表于 01-21 15:45 ? 237次 阅读
国产MCU厂商正在崛起打破国外垄断占领自己的一席之地

传感器系统快速移植的方法及过程

通常,传感器系统设计会将微控制器(MCU) 与更多的模拟电路与数字控制逻辑相结合,后者用于准确可靠地....
发表于 01-21 14:47 ? 112次 阅读
传感器系统快速移植的方法及过程

浅析STM32调试过程中的几个相关问题

总的来讲,单片机调试是单片机开发工作必不可少的环节。不管你愿不愿意,调试过程中总会有各种不期而遇的问....
的头像 ST MCU 信息交流 发表于 01-21 13:50 ? 364次 阅读
浅析STM32调试过程中的几个相关问题

Thread网络协议基于IP网状网络的解决方案

IP是Internet的主要通信协议。IP为IP网络数据中继提供了核心机制,它的路由能力实现了网络互....
发表于 01-20 11:18 ? 120次 阅读
Thread网络协议基于IP网状网络的解决方案

看门狗功能确??煽康腗CU操作

对于多线程,实时和多任务嵌入式系统的全部复杂性,它已成为越来越难以知道什么时候一个微型的行为不端。有....
发表于 01-20 09:56 ? 226次 阅读
看门狗功能确??煽康腗CU操作

你的下一个MCU的USB应用是什么

几乎所有的现代系列MCU具有USB外设。因为USB是一个标准的,则可能期望所有USB实现都是相同的。....
发表于 01-20 09:39 ? 197次 阅读
你的下一个MCU的USB应用是什么

看门狗功能在MCU中的设计应用

由于多线程、实时和多任务嵌入式系统的情况纷繁复杂,使我们越来越难以预料微处理器会在什么时候出现问题。....
的头像 电子设计 发表于 01-18 09:04 ? 344次 阅读
看门狗功能在MCU中的设计应用

如何将8位MCU引入Limelight进行优化

虽然几年前微控制器系统设计实践开始转向32位器件,但物联网(IoT)应用中不复杂电路和瘦客户端的主导....
的头像 电子设计 发表于 01-18 08:00 ? 1128次 阅读
如何将8位MCU引入Limelight进行优化

如何安装KEIL5详细方案说明

本文章详细介绍了如何安装KEIL5 让新手更加方便 提示1、安装路径不能带中文,必须是英文路径2、安....
发表于 01-18 08:00 ? 53次 阅读
如何安装KEIL5详细方案说明

采用高级MCU和PMICC的低功耗设计

无线物联网和可穿戴电子产品依赖能够提供更长电池寿命的低功耗设计。然而,紧张的电量预算会造成无法满足人....
的头像 电子设计 发表于 01-17 08:54 ? 953次 阅读
采用高级MCU和PMICC的低功耗设计

基于标准的MCU内核和外设适用于特定的应用

微控制器本质上是通用设备,能够满足各种控制任务。它们的发展追踪了对功能强大,成本低但功能强大的设备的....
的头像 电子设计 发表于 01-17 08:08 ? 691次 阅读
基于标准的MCU内核和外设适用于特定的应用

TMS320F28076 TMS320F2807x Piccolo 微控制器

C2000?32位微控制器在处理,传感和驱动方面进行了优化,可提高实时控制应用中的闭环性能,例如工业电机驱动,光伏逆变器和数字电源,电动车辆与运输,电机控制以及传感和信号处理.C2000产品线包括Delfino?高端性能系列和Piccolo?入门级性能系列。 TMS320F2807x微控制器平台属于Piccolo?系列,适用于高级闭环控制应用,例如工业电机驱动,光伏逆变器和数字电源,电动车辆与运输以及传感和信号处理。数字电源和工业驱动器的完整开发包作为powerSUITE和DesignDRIVE方案的一部分提供。 F2807x是基于TI行业领先的C28x内核的32位浮点微控制器。此内核的性能通过三角运算硬件加速器得到了提升,该加速器利用CPU指令(如正弦,余弦和反正切函数)提高了转矩环路和位置计算中常见的基于三角运算的算法性能。 F2807x微控制器系列采用一个CLA实时控制协处理器.CLA是一款独立的32位浮点处理器,运行速度与主CPU相同。该CLA会对外设触发器作响响应,并与主C28x CPU同时执行代码。这种并行处理功能可有效加倍实时控制系统的计算性能。通过利用CLA执行时间关键型功能,主C28x CPU可以得到释放,以便用于执行通信和诊断等其...
发表于 01-08 17:49 ? 38次 阅读
TMS320F28076 TMS320F2807x Piccolo 微控制器

SN74LVC646A 具有三态输出的八路总线收发器和寄存器

SN54LVC646A八路总线收发器和寄存器设计用于2.7 V至3.6 VVCC操作,SN74LVC646A八路总线收发器和寄存器设计用于1.65V至3.6VVCC操作。 这些器件由总线收发器电路,D型触发器和控制电路组成用于直接从输入总线或内部寄存器多路传输数据。 A或B总线上的数据在适当时钟(CLKAB或CLKBA)输入的低到高转换时被输入寄存器。图1显示了使用?? LVC646A器件执行的四种基本总线管理功能。 输出使能(OE)和方向控制(DIR)输入控制收发器功能。在收发器模式下,高阻抗端口的数据存储在任一寄存器或两者中。 选择控制(SAB和SBA)输入可以复用存储的和实时(透明模式)数据。当OE \低时,DIR确定哪个总线接收数据。在隔离模式(OE \ high)中,A数据存储在一个寄存器中,B数据可以存储在另一个寄存器中。 当禁用输出功能时,输入功能仍然有效,并且可以用于存储和传输数据。一次只能驱动两条总线A或B中的一条。 输入可以从3.3 V或5 V器件驱动。此功能允许在混合的3.3 V /5 V系统环境中将这些器件用作转换器。 这些器件完全指定用于部分断...
发表于 10-09 17:08 ? 29次 阅读
SN74LVC646A 具有三态输出的八路总线收发器和寄存器

SN74HCT652 具有三态输出的八路总线收发器和寄存器

 HCT652器件由总线收发器电路,D型触发器和控制电路组成,用于直接从数据中复用数据传输总线或从内部存储寄存器。提供输出使能(OEAB和OEBA \)输入以控制收发器功能。提供选择控制(SAB和SBA)输入以选择实时或存储的数据传输。低输入电平选择实时数据;高输入级别选择存储的数据。图1显示了可以使用这些器件执行的四种基本总线管理功能。 A或B数据总线上的数据或两者都可以存储在内部D型触发器中无论选择控制端子还是输出控制端子,在适当的时钟(CLKAB或CLKBA)端子上都会发生从低到高的跳变。当SAB和SBA处于实时传输模式时,通过同时启用OEAB和OEBA \,可以在不使用内部D型触发器的情况下存储数据。在此配置中,每个输出都会增强其输入。当两组总线的所有其他数据源都处于高阻态时,每组总线保持最后状态。 为确保上电或断电期间的高阻态,OEBA \应通过上拉电阻连接到VCC,OEAB应通过下拉电阻连接到GND;电阻的最小值由驱动器的电流吸收/电流源能力决定。 特性 工作电压范围4.5 V至5.5 V 低功耗,80-μA...
发表于 10-09 17:06 ? 24次 阅读
SN74HCT652 具有三态输出的八路总线收发器和寄存器

CC3200MOD SimpleLink Wi-Fi CC3200 片上因特网无线 MCU ???/a>

使用业界首款可编程FCC,IC,CE和Wi-Fi认证无线微控制器(MCU)???,内置Wi-Fi,开始您的设计连接。 SimpleLink CC3200MOD专为物联网(IoT)而创建,是一个集成了ARM Cortex-M4 MCU的无线MCU???,允许客户使用单个设备开发整个应用程序。凭借片上Wi-Fi,互联网和强大的安全协议,无需先前的Wi-Fi体验即可加快开发速度。 CC3200MOD将所有必需的系统级硬件组件(包括时钟,SPI闪存,RF开关和无源元件)集成到LGA封装中,以便于组装和低成本PCB设计。 CC3200MOD作为完整的平台解决方案提供,包括软件,样本应用,工具,用户和编程指南,参考设计以及TI E2E支持社区。 应用MCU子系统包含行业标准的ARM Cortex- M4内核以80 MHz运行。 该器件包括各种外设,包括快速并行相机接口,I2S,SD /MMC,UART,SPI,I2C和四通道ADC。 CC3200系列包括用于代码和数据的灵活嵌入式RAM;带外部串行闪存引导程序和外设驱动程序的ROM;用于Wi-Fi网络处理器服务包,Wi-Fi证书和凭证的SPI闪存。 Wi-Fi网络处理器子系统具有Wi-Fi片上网络,并包含一个附加功能专用的ARM...
发表于 08-20 17:53 ? 109次 阅读
CC3200MOD SimpleLink Wi-Fi CC3200 片上因特网无线 MCU ??? />    </a>
</div>            </div>        </div><!-- .main-wrap -->
    </article>

    <aside class=

ZLG致远电子

文章:363 被阅读:1544452

关注 130人关注
  • 池莉:她构建了一座叫“生活”的城 2018-12-13
  • GreatNews The Intelligent RSS Reader 2018-12-13
  • 479| 953| 517| 522| 230| 795| 463| 845| 885| 20|