张飞软硬开源基于STM32 BLDC直流无刷电机驱动器开发视频套件,??戳此立抢??

澳门赌博害人: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,需要通过I²C总线访问;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、I²C、UART等,它们挂在PLB总线上。其中部分片内外设又是总线控制器(比如I²C),它们又可以扩展出一条总线到片外,例如,I²C0扩展出一条总线I²C bus 0,I²C1扩展出一条总线II²C bus 1。扩展的总线可以连接一些外围器件。

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

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

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

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

图12.1(b)为对应的软件拓扑结构图,在软件环境中,外设对象与真实硬件设备呈一一对应关系。不过,软件环境中并不区分设备的物理位置,只考虑设备的父总线,比如CAT9555(用户板上)和PCF85063(核心板上)都是挂在I²C 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中的I²C0、SC18IS602B等。

  • 总线

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

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

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

图12.3 I²C0和I²C1复用同一份驱动

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

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的片上I²C设备驱动,其对应的驱动头文件为:awbl_imx28_i2c.h,在该文件中,定义了驱动名为AWBL_IMX28_I²C_NAME,完整定义如下:

基于此,在描述I²C设备(如描述I²C1设备),对应的设备名应该设定为:

AWBL_IMX28_I²C_NAME。

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

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

AWBL_PCF85063_NAME。

2.  设备单元号

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

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

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

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

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

3.  设备父总线的类型

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

表12.1 总线类型宏定义

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

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

4.  设备父总线的编号

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

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

5.  设备实例内存

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

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

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

注: 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。该信息最终会传递给驱动使用,以便正确的驱动相应设备。

  •  I²C1设备信息定义范例

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

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

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

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

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

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

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

AWBL_I²C_WAITFOREVER

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

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

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

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

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

clkfreq表示I²C??榈氖淙胧敝悠德?,在i.MX28x中,默认频率为24MHz,该值通常不需要修改。

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

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

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

pfunc_plfm_init的值。

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

程序清单12.6 I²C1设备信息定义

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

&__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位I²C从机地址,通过查看PCF85063的数据手册可知,PCF85063的7位I²C从机地址为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 I²C1设备描述宏定义

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

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

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

通常情况下,为了保持

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

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

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

12.3.4  设备的配置与裁剪

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

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

AWBL_BUSID_I²C。调整设备在总线拓扑结构中的位置往往是修改父总线的编号,如要将PCF85063挂在I²C0上,仅需将程序清单12.11中,第6行对应的父总线编号修改为I²C0对应的总线总线编号,即:IMX28_I²C0_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设备的描述,相当于裁剪掉了该设备。同理可以新增一个I²C1设备的使能宏,以便对I²C1设备进行裁剪,详见程序清单12.13。

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

程序中,新增了AW_DEV_IMX28_I²C_1宏对I²C1设备是否使能进行控制。为便于查找,在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_I²C,即PCF85063挂在某一I²C总线上,显然,I²C总线需要由I²C总线控制器设备产生,比如在i.MX28x中,片上外设I²C0和I²C1均可以产生I²C总线。

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

基于此,若PCF85063挂在I²C0上,则必须使能AW_DEV_IMX28_I²C_0宏。若挂在I²C1上,则必须使能AW_DEV_IMX28_I²C_1宏。

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

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

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总线、I²C总线和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的I²C0配置文件awbl_hwconf_imx28_i2c0.h中,定义了I²C0设备的设备信息,详见程序清单12.17。

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

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

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

后续要修改I²C0的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致远电子】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
分享:

评论

相关推荐

第二期:J1939通信数据链路层(上)

主题简介及亮点:J1939通信是商用车,军工,船舰 ,农机,发电机,特种设备等上面的常用通信标准,这两年在新能源车上应用
发表于 03-07 00:00 ? 0次 阅读
第二期:J1939通信数据链路层(上)

Linux驱动之I2C总线

I2C总线的硬件特性:两线式串行总线.用于连接CPU和外设之间的通信接口需要2根信号线,时钟控制线S....
发表于 04-26 15:25 ? 9次 阅读
Linux驱动之I2C总线

使用ST Visual Developer调试STM8无法选择MCU

我需要使用ST Visual Develop调试STM8L151,我已经安装并激活了cosmic编译器。 我的项目建立,但不会开始debugin...
发表于 04-26 12:08 ? 6次 阅读
使用ST Visual Developer调试STM8无法选择MCU

艾派克APM32F103系列MCU,助力产品性能优势更大化!

艾派克APM32F103系列32位通用MCU,自去年12月发布以来,已通过客户多次测试使用,获得了良....
发表于 04-26 08:49 ? 22次 阅读
艾派克APM32F103系列MCU,助力产品性能优势更大化!

L647X和L648X和PowerStep01系列通信协议的数据手册免费下载

The L6470,L6472,L6474,L648X and Powerstep01器件提供了先进....
发表于 04-26 08:00 ? 8次 阅读
L647X和L648X和PowerStep01系列通信协议的数据手册免费下载

请问PCB布局的时候有什么经验技巧?

第一次画PCB 当从原理图导入到PCB后,感觉元件的布局没有头绪,不知道怎么下手,自己按照MCU引脚顺序放置各个元件,感...
发表于 04-26 06:36 ? 41次 阅读
请问PCB布局的时候有什么经验技巧?

如何采用51单片机设计出总线编址电路

带总线扩展接口的单片机系统,包括外部32kRAM扩展、LCDl602接口、输入输出口。带编址扩展的单....
发表于 04-25 17:29 ? 23次 阅读
如何采用51单片机设计出总线编址电路

TPS2511状态显示怎么知道

  请教下TPS2511问题,我做了一个带MCU的充电宝,用TPS2511做放电USB开关,请问我不接电流检测??榈那榭?..
发表于 04-25 14:53 ? 51次 阅读
TPS2511状态显示怎么知道

报文的传输原理你了解吗

CAN总线通讯是我们每天都会使用的工业通讯总线,工程师更多的是关注报文是否能够正常接收,解析结果是否....
的头像 电子发烧友网工程师 发表于 04-25 14:50 ? 58次 阅读
报文的传输原理你了解吗

请问tps5430 ENA脚怎么正确连接MCU IO?

设计的一块板子,ENA脚串1K电阻到MCU IO,但MCU IO未作任何配置的情况下,发现上电ENA脚电压已经是5V,芯片已...
发表于 04-25 13:34 ? 50次 阅读
请问tps5430 ENA脚怎么正确连接MCU IO?

请问wifi??樵趺从胫骺豈CU进行通信?

请教下大家: 1、买的WiFi??槭窃趺从胫骺豈CU进行通信的?? 2、是通过串口吗??AT指令吗? 3、如果WiFi组网的话,...
发表于 04-25 06:35 ? 11次 阅读
请问wifi??樵趺从胫骺豈CU进行通信?

UART中的硬件流控RTS与CTS经常出错的知识点资料说明

最近太忙了,没时间写对Ucos-II的移植,先将工作中容易搞错的一个知识点记录下来,关于CTS与RT....
发表于 04-24 18:29 ? 16次 阅读
UART中的硬件流控RTS与CTS经常出错的知识点资料说明

STM3210E评估板问题

STM3210E评估板上有一个stm32103ZG MCU,该MCU位于XL-density组。该问题与ST电机控制工作台有关。它无法在控制阶...
发表于 04-24 16:23 ? 22次 阅读
STM3210E评估板问题

瑞萨电子宣布推出其材料检测解决方案 无需传感器即可检测材料或液体

瑞萨电子触摸键MCU采用电容式触摸传感器单元,专门用于电容测量,具有极高的灵敏度和高抗噪性,使材料检....
发表于 04-24 16:17 ? 131次 阅读
瑞萨电子宣布推出其材料检测解决方案 无需传感器即可检测材料或液体

IoTize即时NFC和蓝牙的TapNLink产品 可通过Digi-Key在全球快速供应

IoTize 现通过全球电子元器件分销商 Digi-Key Electronics,向全球客户提供用....
发表于 04-24 10:56 ? 69次 阅读
IoTize即时NFC和蓝牙的TapNLink产品 可通过Digi-Key在全球快速供应

基于CPCI总线实现便携式电磁阀检测仪设计

作者:王蕴超 王向周 1. 前言 由于某型号电磁阀热真空试验需要出厂完成,在试验过程中需测试阀门响应特性,传统的测试设备...
发表于 04-24 07:00 ? 25次 阅读
基于CPCI总线实现便携式电磁阀检测仪设计

利用硬件芯片实现嵌入式WEB传感器网络化接口设计

作者:卢伟国 杨本强 嵌入式WEB传感器是在智能传感器的基础上发展起来的具有Internet功能的新型传感器。其实质是在...
发表于 04-24 07:00 ? 33次 阅读
利用硬件芯片实现嵌入式WEB传感器网络化接口设计

拼技术硬核,ADI打造创新音频总线走入全球90%的汽车厂商

考虑到电动汽车的行车安全,去年欧盟下令要求所有电动汽车在2021年前加装能够发出虚拟引擎声的装置,以....
发表于 04-23 15:51 ? 107次 阅读
拼技术硬核,ADI打造创新音频总线走入全球90%的汽车厂商

Silicon Labs超低功耗32位 MCU EFM32HG系列成功应用在大华股份无线烟感

如下图3,其中,EM4模式下功耗仅20nA。另外,当从EM3深度休眠模式唤醒到EM0全速工作时,仅需....
的头像 SiliconLabs 发表于 04-23 15:43 ? 675次 阅读
Silicon Labs超低功耗32位 MCU EFM32HG系列成功应用在大华股份无线烟感

MCUXpresso 能否设置编码的格式为ANSI?

请问MCUXpresso 能否设置编码的格式为ANSI?以前代码是ANSI的,打开以后很多中文注释是乱码。在设置界面里只看到UT...
发表于 04-23 10:22 ? 189次 阅读
MCUXpresso 能否设置编码的格式为ANSI?

请问触控mcu与按键mcu有什么不一样

请问触控mcu与按键mcu有什么不一样,我想用触控mcu来做按键控制mcu可以吗? ...
发表于 04-22 13:38 ? 199次 阅读
请问触控mcu与按键mcu有什么不一样

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

JDY-40 采用 2.4G 技术开发,视距 120 米,采用串口通信接口,使用简单快捷,只需要了解....
发表于 04-22 08:00 ? 39次 阅读
JDY-40无线串口??榈氖菔植崦夥严略? />    </a>
</div><div class=

关于汽车mcu仪表的解决方案分析

H8S/228X的开发工具软件包括编译器、汇编程序和连接程序,还有调试器和模拟器;硬件包括仿真器、J....
发表于 04-21 10:30 ? 60次 阅读
关于汽车mcu仪表的解决方案分析

楼宇对讲系统的全数字技术应用发展

2018年年底,国家质量监督检验检疫总局、国家标准化管理委员会批准发布了2018年第17号中国国家标....
发表于 04-21 08:25 ? 64次 阅读
楼宇对讲系统的全数字技术应用发展

STM32G0系列产品的详细资料介绍

在意法半导体STM32产品家族中,STM32F0系列微控制器(MCU)是市场占有率很高的一款产品,现....
发表于 04-19 08:00 ? 68次 阅读
STM32G0系列产品的详细资料介绍

华大半导体基于公司超低功耗系列产品的多款水气表开发平台方案

此外,华大半导体MCU事业部应用开发部经理钱辰鹏在水气表主论坛上作了题为“基于华大半导体MCU系列的....
的头像 华大半导体有限公司 发表于 04-17 17:55 ? 1085次 阅读
华大半导体基于公司超低功耗系列产品的多款水气表开发平台方案

intel hex文件格式的详细资料解析整理

源于前几天想扩展51单片机的外部ROM,网上能搜索到的扩展方式都是将EA引脚接地,让MCU上电后从外....
发表于 04-17 17:28 ? 39次 阅读
intel hex文件格式的详细资料解析整理

TM1650芯片的介绍和使用STM8S控制TM1650芯片的程序

TM1650是-种带键盘扫描接口的LED (发光二极管显示器)驱动控制专用电路。内部集成有MCU输入....
发表于 04-17 17:27 ? 44次 阅读
TM1650芯片的介绍和使用STM8S控制TM1650芯片的程序

安全智能的电子烟”心脏”

由于电子烟形状与真烟大致相同,体积小,组成器件却比较多。同时一般采用小型电池供电,电池使用寿命要尽量....
的头像 人间烟火123 发表于 04-17 16:36 ? 694次 阅读
安全智能的电子烟”心脏”

嵌入式设计须知: MCU如何在扩展的SDRAM上运行程序?

在使用MCU的嵌入式系统设计中,当程序或者数据内存占用太大而无法放入片上闪存或SRAM时,开发者通常....
的头像 嵌入式资讯精选 发表于 04-16 11:14 ? 452次 阅读
嵌入式设计须知: MCU如何在扩展的SDRAM上运行程序?

ATT7022高精度三相电能专用计量芯片的中文用户手册免费下载

ATT7022 是一颗高精度三相电能专用计量芯片,适用于三相三线和三相四线应用。 ATT7022 集....
发表于 04-16 08:00 ? 53次 阅读
ATT7022高精度三相电能专用计量芯片的中文用户手册免费下载

基于LTC7821的混合转换简化数据中心和电信电源系统设计

数据中心和电信电源系统设计发生了变化。主要应用制造商正在用更高效,非隔离,高密度降压调节器取代复杂,....
的头像 电子设计 发表于 04-15 08:25 ? 178次 阅读
基于LTC7821的混合转换简化数据中心和电信电源系统设计

隔离式I2C/PMBus链路解决方案在多方面的应用介绍

工业和仪器仪表(I&I)、电信以及医疗应用的一个关键要求是需要一个可靠接口来传输数据。 (I2C)总....
的头像 电子设计 发表于 04-15 08:00 ? 250次 阅读
隔离式I2C/PMBus链路解决方案在多方面的应用介绍

基于AWorks LED灯点亮的简单例程

AWorks是ZLG历时12年开发的下一代嵌入式开发平台,支持组件“可插拔、可替换、可配置”,用户只....
的头像 ZLG致远电子 发表于 04-12 15:40 ? 315次 阅读
基于AWorks LED灯点亮的简单例程

改变进口依赖,中国芯成长路上如何跨越四重障碍?

中国芯的市场机会在那里?中国芯在哪些细分领域有实力留下来?企业如何在国际标准中有所作为?在第七届中国....
的头像 章鹰 发表于 04-12 08:45 ? 1896次 阅读
改变进口依赖,中国芯成长路上如何跨越四重障碍?

从工业到智慧工业,半导体厂商可以做什么?

从第一次工业革命开始到现在,工业领域发生了翻天覆地的变化,现在及未来的工业将会更加智能化。
的头像 荷叶塘 发表于 04-10 19:43 ? 2996次 阅读
从工业到智慧工业,半导体厂商可以做什么?

如何一键绑定连接最近的从机蓝牙详细教程说明

第一步先配置 JDY-16 或 JDY-17 为主机模式:AT+HOSTEN1 第二步配置 JDY....
发表于 04-09 08:00 ? 51次 阅读
如何一键绑定连接最近的从机蓝牙详细教程说明

新对手出现了!它带来的是迄今全球最先进的无线MCU!

在连接方面,DA1469x系列为开发人员提供了先进的连接功能,可以满足多种应用的需求,并使其经得起未....
的头像 Dialog半导体公司 发表于 04-05 17:14 ? 562次 阅读
新对手出现了!它带来的是迄今全球最先进的无线MCU!

STM8的强势回归,原来是这样的顺理成章

究其根本,PATRICE HAMARD先生认为,这里有客户的使用习惯使然,也有出于成本的考虑,此外,....
的头像 STM32单片机 发表于 04-05 17:09 ? 1829次 阅读
STM8的强势回归,原来是这样的顺理成章

分享nandflash排雷攻略

实际应用中,很多用户会把多个文件数据同时存储到NandFlash上(比如uboot、uImage、L....
的头像 ZLG致远电子 发表于 04-05 15:52 ? 388次 阅读
分享nandflash排雷攻略

玩转MSP430 launchpad的PDF电子书免费下载

对于广大电子技术领域的从业工程师和相关专业的在校大学生而言,熟练掌握MCU(微控制器,俗称“单片机”....
发表于 04-04 15:42 ? 93次 阅读
玩转MSP430 launchpad的PDF电子书免费下载

如何在大学四年,让自己成为一个硬件高手?

高性能高集成:基于32位Arm Cortex-M4F和Cortex-M0+内核,适用于通用汽车和高可....
的头像 电子发烧友网工程师 发表于 04-04 15:15 ? 737次 阅读
如何在大学四年,让自己成为一个硬件高手?

MCU JZ4740主控制器的详细资料概述

MCU 为产品核心器件,又称CPU。内部包含有运算器、控制器、存储器等。它相当于人的大脑,指挥着各个....
发表于 04-03 16:54 ? 56次 阅读
MCU JZ4740主控制器的详细资料概述

MCU、DSP、FPGA各自雄霸一方 并都呈现出高速的增长态势

MCU凭借其强大的控制功能,广泛地用于消费类电子、通信、汽车电子、工业等领域。有资料显示,MCU产品....
发表于 04-03 10:58 ? 393次 阅读
MCU、DSP、FPGA各自雄霸一方 并都呈现出高速的增长态势

IEEE39总线系统接线图免费下载

本文档的主要内容详细IEEE39总线系统接线图免费下载,用于验证算法并优化电力系统PMU的配置
发表于 04-03 08:00 ? 43次 阅读
IEEE39总线系统接线图免费下载

纳思达:2018年打印机专用MCU/SoC出货量超过1亿颗

纳思达是全球通用耗材行业的龙头企业,2017年在国内通用耗材芯片的市场占有率达70%左右;艾派克是纳....
发表于 04-02 18:35 ? 673次 阅读
纳思达:2018年打印机专用MCU/SoC出货量超过1亿颗

兆易创新GD32 MCU再获2019年“中国IC设计成就奖”多项殊荣!

兆易创新GD32E230系列Cortex?-M23内核MCU荣获“年度最佳MCU”奖项,GD32 M....
发表于 04-02 10:18 ? 350次 阅读
兆易创新GD32 MCU再获2019年“中国IC设计成就奖”多项殊荣!

设计笔记 | 采用GD32F130系列MCU设计冰箱压缩机变频板方案

 GD32F130系列MCU可以轻松实现上述的SVPWM产生器,Park/Clark变换,PI控制器....
发表于 04-02 09:45 ? 223次 阅读
设计笔记 | 采用GD32F130系列MCU设计冰箱压缩机变频板方案

东芝推出新系列MCU---M4G组 内置计时器和通信通道

东芝TXZ系列MCU之M4G组(1)以配备FPU的Arm Cortex-M4核为基础,它集成高性能模....
发表于 04-01 17:24 ? 339次 阅读
东芝推出新系列MCU---M4G组 内置计时器和通信通道

采用STC89C51作为MCU的温湿度检测和控制系统设计

当计算机教室温度过高,会导致机器的散热功能无法正常运行,影响电路稳定运行。为了确?;康纳璞刚T俗?...
发表于 03-30 10:25 ? 370次 阅读
采用STC89C51作为MCU的温湿度检测和控制系统设计

STC8系列单片机的技术参考手册详细资料免费下载

STC8系列单片机是不需要外部晶振和外部复位的单片机,是以超强抗干扰/超低价/高速/低功耗为目标的8....
发表于 03-29 16:22 ? 111次 阅读
STC8系列单片机的技术参考手册详细资料免费下载

mcu原理

微控制单元又称单片微型计算机或者单片机,是把中央处理器(CPU)的频率与规格做适当缩减,并将内存、计....
的头像 发烧友学院 发表于 03-29 15:03 ? 436次 阅读
mcu原理

mcu维修技巧

目测法。观察器件表面(外观)有无异常。正常元件印字清晰,表面光滑,引脚无锈等。若表面有开裂,裂纹或划....
的头像 发烧友学院 发表于 03-29 15:00 ? 462次 阅读
mcu维修技巧

mcu什么意思

MCU微控制单元(微控制单元) ,又称单片微型计算机或者单片机,是把中央处理器(CPU)的频率与规格....
的头像 发烧友学院 发表于 03-29 14:57 ? 450次 阅读
mcu什么意思

LPC5500双核基本架构!LPC5500双核面貌特征

图中所示:红色框是多层AHB矩阵总线;绿色框是多块分立的存储块。主CPU和从CPU的代码数据可存放在....
的头像 周立功单片机 发表于 03-26 16:30 ? 757次 阅读
LPC5500双核基本架构!LPC5500双核面貌特征

基于M33核NXP LPC55Sxx MCU拥有的TrustZone技术来实现IoT安全

TrustZone的概念不是最新的了,它被应用在Arm Cortex-A系列处理器中已经有一段时间了....
的头像 周立功单片机 发表于 03-26 09:58 ? 525次 阅读
基于M33核NXP LPC55Sxx MCU拥有的TrustZone技术来实现IoT安全

USBCAN-II pro脱机转发模式介绍

在与顾工沟通过后,我们知道了顾工要修改的数据位置,具体是将ID为123456F4的数据的第三、四字节....
的头像 广成CAN总线 发表于 03-26 09:08 ? 365次 阅读
USBCAN-II pro脱机转发模式介绍

Microchip为PIC?和SAM单片机提供统一的软件开发框架_MPLAB Harmony v3

Microchip Technology 今日宣布推出最新版本的统一软件框架MPLAB? Harmo....
发表于 03-25 16:50 ? 87次 阅读
Microchip为PIC?和SAM单片机提供统一的软件开发框架_MPLAB Harmony v3

基于ARM的32位MCU STM32F101xx和STM32F103xx的参考手册资料免费下载

本参考手册面向应用程序开发人员。它提供了有关如何使用STM32F101xx和STM32F103xx微....
发表于 03-25 08:00 ? 60次 阅读
基于ARM的32位MCU STM32F101xx和STM32F103xx的参考手册资料免费下载

民用级激光型PM2.5传感器TF-LP01的应用领域和使用方法

TF-LP01是日本figaro开发的民用级激光型PM2.5传感器,是利用光散射原理对空气中粉尘颗粒....
发表于 03-24 10:55 ? 480次 阅读
民用级激光型PM2.5传感器TF-LP01的应用领域和使用方法

基于XAPP1052参考设计的PCIe总线实现方法

目前通过 FPGA 实现 PCIe 接口是一种比较常用的方式,具有硬件成本低、可靠性高、灵活性大、易....
发表于 03-24 09:21 ? 118次 阅读
基于XAPP1052参考设计的PCIe总线实现方法

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 ? 74次 阅读
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 ? 42次 阅读
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 ? 26次 阅读
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 ? 131次 阅读
CC3200MOD SimpleLink Wi-Fi CC3200 片上因特网无线 MCU ??? />    </a>
</div>            </div>        </div><!-- .main-wrap -->
    </article>

    <aside class=

ZLG致远电子

文章:383 被阅读:1741756

关注 153人关注
  • 植树、采茶、挖野菜…… 这才是春天正确的打开方式 2019-04-18
  • 中美GDP的争夺战决定炒房也无人去管。房子用来住的,不是用来炒的根本无人落实。 2019-04-18
  • 【访民情 惠民生 聚民心】果勒买里村丰收忙 2019-04-14
  • 2018中国双一流大学专业排行榜发布 清华大学位列第一 2019-04-10
  • 一语惊坛(5月23日):中华复兴靠实干,干部有作为必须腰杆硬。 2019-04-07
  • 不撞南墙不回头。痛定思痛。动辄把独立自主、自力更生,说成是崩溃边缘,是多么轻率、可笑。 2019-03-29
  • 多国开发“冰上丝路”,北极将成黄金水道? 2019-03-29
  • 是什么时候颠覆了“文艺应当为千千万万劳动人民服务”这一社会主义文艺路线的?!那一股“伤痕潮”功不可灭,可惜的是“旧伤痕”已经烟灭,取代其的是“挖根潮”。留给工农 2019-03-26
  • 陈理、郭如才谈《习近平关于全面从严治党论述摘编》 2019-03-21
  • 北京大学党委常委、党委副书记、医学部党委书记刘玉村作健康知识专题报告 2019-03-21
  • 我早就说过,任何时候都不能对美国抱有幻想。否则就是白痴。 2019-03-20
  • 西班牙vs阿根廷6比1狂胜 梅西因伤作壁上观愤然离场 2019-03-20
  • 池莉:她构建了一座叫“生活”的城 2018-12-13
  • GreatNews The Intelligent RSS Reader 2018-12-13
  • 567| 497| 984| 829| 138| 639| 131| 660| 529| 810|