點亮板載LED


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM