1.开发板说明

  开发板型号:MaixPy-bit(mic)

     图1-1 MaixPy-bit开发板

  主要功能:机器视觉

2.板载LED操作

2.1硬件部分

  板载LED原理图:

图2-1 板载LEDIO口分配 

   图2-2 板载LED原理图

   板载LED是一个三色的复合灯(RGB),绿色连接的是IO_12、红色连接的是IO_13、蓝色连接的是IO_14。(源码中引脚对应的可能有误,解决办法是重新编译源码)

  低电平点亮,所有被引出的IO口高电平时3.3V,而LCD屏幕IO引脚是1.8V(没有引出,直接是接LCD屏幕)。

2.2软件设计

  在写程序前,我们需要知道, MaixPy 所使用的硬件 K210 的片上外设(比如GPIO、I2C等)对应的引脚是可以任意设置的,STM32 片上外设和引脚对应关系已经固定了, 只有部分引脚可以复用, 相比之下 K210 自由度更大。

  片内指做成芯片的集成电路内部,简称片内;外设是外部设备的简称,是指集成电路芯片外部的设备。集成电路芯片与外部设备的连接一般需要专门的接口电路和总线的连接(包括控制总线路、地址总线和数据总线等)。 

  由于大规模集成电路的技术发展得很快,现在许多芯片在制造时已经能够将部分接口电路和总线集成到芯片内部。对于这部分电路与传统的接口电路和总线是有区别的,为了加于区别可以称之为片内外设,其含义是在集成电路芯片内部集成的用于与外部设备连接的接口电路和总线。 因此,简单的说,“片内外设”是芯片内部用于与外部设备连接的接口电路和总线。

  在嵌入式系统中,主控MCU(K210或ARM)往往集成了多种片上外设,列如,GPIO、PWM、I²C、SPI、UART、ADC...。通过它们可以使MCU轻松的与“外部世界”相互连接、相互通信。

比如 I2C 可以使用 Pin11 和 Pin12, 也可以改成其它任意引脚

  控制 LED 需要使用到 GPIO外设功能。

   前面说了 K210 的引脚可以任意设置, 所以我们使用fm(fpioa manager)这个内置的对象来注册芯片的外设和引脚的对应关系,这里fm.fpioa.GPIO0 是 K210 的一个   GPIO 外设(注意区分 GPIO(外设) 和引脚(实实在在的硬件引脚)的区别 ), 所以把 fm.fpioa.GPIO0 注册到了 引脚 board_info.LED_R

  这里的 board_info 是一个板子信息的类, 可以在串口终端输入 board_info. 然后按 TAB 按键可以看到所有成员,主要是各个引脚值

  然后定义一个 GPIO 对象, 具体参数看 GPIO 模块的文档, 在左边侧边栏查找。

  使用 led_r.value(0) 或者 led_r.value(1) 来设置高低电平即可

'''
Pyboard tpye:MaixPy-bit(with MEMS microphone)
function    :control LED of the MaixPy-bit board
info        :
            fpioa_manager(芯片外设映射模块):
                function:   将芯片上的外设功能映射到具体的物理引脚
                import info:fm是该模块里面定义好的一个Fpioa_Manager的对象,
                            这个对象可以使用Fpioa_Manager类里面的所有方法和参数
                            比如下面我们使用到的register方法,其功能是映射功能到引脚
            Maix.GPIO(引脚配置和控制模块):
                            class GPIO(ID,MODE,PULL,VALUE)
                            GPIO.PULL_UP:上拉
                            GPIO.DOWN   :下拉
                            GPIO.PULL_NONE:悬空(高阻态)
code writer:iBoundary
'''
import time
from fpioa_manager import fm,board_info
from Maix import GPIO
#R
fm.register(board_info.LED_G,fm.fpioa.GPIO0)
led_r = GPIO(GPIO.GPIO0,GPIO.OUT,value=1)
#G
fm.register(board_info.LED_B,fm.fpioa.GPIO1)
led_g = GPIO(GPIO.GPIO1,GPIO.OUT,value=1)
#B
fm.register(board_info.LED_R,fm.fpioa.GPIO2)
led_b = GPIO(GPIO.GPIO2,GPIO.OUT,value=1)

time.sleep_ms(5000)    #delay time 5s
led_r.value(0)
time.sleep_ms(5000)
led_g.value(0)
time.sleep_ms(5000)
led_b.value(0)

片上外设链接http://m.elecfans.com/article/683162.html

12-21 14:14