简化手臂®皮层®m0 +基于物联网嵌入式设计与CircuitPython开发板---凯利讯半导体

  许多嵌入式应用程序使用高级MCUs,但只需要基本的硬件控制能力,而不是高级嵌入式设计的“硬实时”要求。然而,开发人员和制造商经常沉浸在硬件设计、C / c++编程和实时操作系统的细节中。幸运的是,有一个更简单的方法。

  这篇文章将展示一个更容易接近的方法,使用一对来自Adafruit Industries的微型开发板,它结合了Python编程语言的嵌入式设计变体和基于ARM cortex- m0 +处理器的成熟的32位MCU。


  先进的单片机简化设计

  先进的MCUs通过集成强大的处理器核心的模拟和数字周边设备来简化硬件设计。例如,芯片技术ATSAMD21G18 MCU结合了ARM的cortex- m0 +核心,256 Kbytes闪存,32 Kbytes的SRAM,先进的控制子系统,以及一系列外设,所有这些都在10×10毫米薄的quad扁平包(TQFP)包中(图1)。

  微芯片技术的简图,SAM D21 MCU家族

简化手臂®皮层®m0 +基于物联网嵌入式设计与CircuitPython开发板---凯利讯半导体_第1张图片

  图1:基于超低功耗ARM®皮层®m0 +,微芯片技术山姆D21单片机家族成员都提供了一组全面的功能块和外围设备,不同的只在特定数量的内存和外围渠道。


  除了32个GPIOs,ATSAMD21G18 MCU的外围设备还包括多个高级串行通信(SERCOM)通道、波形输出通道、多通道12位模拟数字转换器(ADC)、模拟比较器和10位数字-模拟转换器(DAC)。


  设计的挑战

  这类高级MCU消除了开发人员花时间查找和连接外部外部设备的需求,但它仍然对MCU本身如何被设计成一个系统提出了严格的要求。例如,在集成多种类型的电路时,ATSAMD21G18 MCU的设计通过一个相应的单独的域集合来供电。因此,开发人员必须处理处理器核心VDDCORE、内部调节器(VDDIN)、外围设备(VDDIO)和模拟块(VDDANA)的多个电源和地脚(图2)。

  在设计过程中,开发人员需要遵循提供电源、连接地面、选择和放置解耦电容器的具体建议——对于一个经验丰富的工程师来说,这没什么特别的,但对于开发新嵌入式MCU硬件设计的开发人员来说,这是一个潜在的陷阱。

  微芯片技术ATSAMD21G18单片机的图像

简化手臂®皮层®m0 +基于物联网嵌入式设计与CircuitPython开发板---凯利讯半导体_第2张图片

  图2:Microchip技术ATSAMD21G18 MCU使用多个电源域来提供其不同的模拟和数字块,并要求提供电力到这些域。


  同样,使用这些设备的软件开发似乎势不可挡。通常情况下,新的嵌入式系统开发人员发现自己陷入了与学习C / c++有关的细节,而这些细节是嵌入的开发材料,更多的是针对硬实时需求的应用程序。这些应用程序通常对中断延迟和确定性响应具有关键的时间要求。然而,许多新出现的物联网传感器设计(物联网)需要(或可以很容易地容忍)对数据采集或执行机构操作的更宽松的要求。


  简化嵌入式开发

  为了消除嵌入式开发人员的这些硬件和软件障碍,Adafruit的一组开发板提供了跨一系列应用程序需求的特别有效的解决方案。基于ATSAMD21G18 MCU,Adafruit Metro M0 Express和Feather M0 Express提供了一个完整的嵌入式系统,包括串行接口(USB、SPI、I2C和UART)、脉宽调制(PWM)、中断输入,以及多个模拟IOs和GPIOs。板材的大小和数量各不相同:2.8“x 2.1”x 0.28“Metro M0 Express提供25个GPIOs,而略小的(2.0的x 0.9 x 0.28”)羽毛M0 Express提供20个GPIOs。

  与大多数先进的MCUs一样,SAM D21 MCU家族提供的外围通道远比物理大头针多,但提供了一个pin映射特性,用于将外围功能分配给特定的硬件引脚。因此,即使是小尺寸的,每个董事会都使用共享的大头针来交付MCU广泛的外围功能的全部范围(图3)。

  Adafruit M0 Express development board的示意图

简化手臂®皮层®m0 +基于物联网嵌入式设计与CircuitPython开发板---凯利讯半导体_第3张图片

  图3:Adafruit利用pin多路复用来提供ATSAMD21G18在其小羽毛M0 Express开发板上的一个慷慨的子集。


  然而,对于开发人员来说,这些细节是透明的。Adafruit已经在其开源软件包(清单1)中为每个特定模块提供了具体的配置。

  静态const mp_rom_map_elem_t board_global_dict_table[]

  { MP_ROM_QSTR(MP_QSTR_A0)MP_ROM_PTR(&pin_PA02)},

  { MP_ROM_QSTR(MP_QSTR_A1)MP_ROM_PTR(&pin_PB08)},

  { MP_ROM_QSTR(MP_QSTR_A2)MP_ROM_PTR(&pin_PB09)},

你可能感兴趣的:(深圳电子,电子技术,python,arm,c语言,x,图片)