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)