在物聯(lián)網(wǎng)開發(fā)與STM32 嵌入式應(yīng)用實踐中,RGB 燈是實現(xiàn)可視化交互、狀態(tài)指示的常用外設(shè),而機智云 Gokit3 開發(fā)板作為物聯(lián)網(wǎng)開發(fā)的經(jīng)典硬件平臺,其板載的 RGB 燈憑借 P9813 專用驅(qū)動芯片具備靈活的色彩控制能力。
本文聚焦Gokit3 開發(fā)板(MCU 模式,主控 STM32F103C8T6),以 HAL 庫為開發(fā)基礎(chǔ),從 P9813 驅(qū)動芯片的工作原理入手,系統(tǒng)講解 RGB 燈的硬件特性,并完整解析 RGB 燈 HAL 庫驅(qū)動的移植過程,同時通過紅綠藍(lán)顏色輪詢的功能實現(xiàn),讓開發(fā)者直觀掌握 RGB 燈的驅(qū)動開發(fā)與實際應(yīng)用,文末還將附上本文涉及的源碼、原理圖等全套資料鏈接,助力快速上手開發(fā)。
01RGB和P9813驅(qū)動芯片原理
在Gokit3 的原理圖中,RGB 燈的驅(qū)動核心是P9813 芯片(圖中 U3),它是一款單總線控制的 RGB 全彩 LED 驅(qū)動芯片,專門用于簡化 RGB 燈的硬件控制 —— 僅需 2 根控制信號線,即可實現(xiàn) RGB 顏色的精準(zhǔn)調(diào)節(jié)。

引腳介紹:
9腳(VCC)接VCC5V+R5(3.6Ω電阻)芯片電源輸入(5V供電),R5是限流電阻,避免電源沖擊
4腳(GND)接GND芯片接地引腳,保證電源回路
1腳(DIN)接“DIN”接口(對應(yīng)STM32PB9)串行數(shù)據(jù)輸入引腳:接收STM32發(fā)送的顏色控制數(shù)據(jù)(對應(yīng)STM32中PB9)
2腳(CIN)接“TheKey”接口(對應(yīng)STM32PB8)時鐘輸入引腳:接收STM32發(fā)送的同步時鐘信號(對應(yīng)STM32中PB8)
5腳(R)、6腳(G)、7腳(B)接RGB燈的紅、綠、藍(lán)通道直接驅(qū)動RGB燈的三個顏色通道,輸出對應(yīng)亮度的電流
14腳(COUT)、13腳(VOUT)懸空(未連接)級聯(lián)輸出引腳:用于多顆P9813串聯(lián)控制(Gokit3僅用1顆,故未使用)
12腳(MODE)接C18(100nF電容)→GND模式選擇引腳:通過電容下拉至GND,配置為“單線模式”(Gokit3用的單總線通信)
11腳(CLKSEL)接C18(100nF電容)→GND時鐘模式選擇引腳:電容下拉配置為“外部時鐘模式”(時鐘由STM32的PB8提供)
3腳(JEN)接R13(10KΩ電阻)→GND使能引腳:下拉至GND表示“使能芯片工作”(默認(rèn)處于工作狀態(tài))
10腳(VOUT)懸空(未連接)級聯(lián)電源輸出(同VCC,級聯(lián)時給下一顆芯片供電)
1、單總線通信,僅需2根線(時鐘SCL+數(shù)據(jù)SDA)即可控制,無需復(fù)雜硬件(如SPI/I2C)PB8=SCL、PB9=SDA,無外設(shè)初始化
2、24位顏色控制,紅(R)、綠(G)、藍(lán)(B)各分配8位數(shù)據(jù),亮度范圍0~255R_MAX/G_MAX/B_MAX=255
3、內(nèi)置反碼校驗,顏色數(shù)據(jù)高2位需傳輸反碼,
4、幀格式固定通信必須以“起始幀+數(shù)據(jù)幀+重復(fù)幀”完成
5、5V電壓兼容適配Gokit3的5V供電,無需額外電平轉(zhuǎn)換源碼無電平轉(zhuǎn)換邏輯
02Gokit3 板載的RGB 燈
1.Gokit3 板載 RGB 燈由 P9813 驅(qū)動芯片全彩 LED 驅(qū)動芯片控制,核心特性:
通信:僅需(原理圖上的SCL連PB8)+ (原理圖上的SDA連PB9)2 根線即可控制顏色
顏色編碼:24 位顏色數(shù)據(jù)(R/G/B 各 8 位,亮度范圍 0~255)
通信規(guī)則:
先發(fā)送32 個 0 作為起始幀,再發(fā)送 32 位顏色數(shù)據(jù)(含標(biāo)志位 + 反碼 + RGB 值),最后重復(fù)發(fā)送顏色數(shù)據(jù)確保生效
03原理圖及實物圖


2、GPIO硬件配置(MCU 模式)
PA0:RGB 燈總開關(guān),高電平使能(源碼中l(wèi)edRgbControl函數(shù)首行置高 PA0)
PB8/PB9:推挽輸出模式,通過高低電平模擬 P9813 通信時序,無需硬件 SPI/I2C
04Gokit3的RGB燈源碼移植
本次使用的驅(qū)動文件為hal_rgb_led.h和hal_rgb_led.c這兩個RGB的驅(qū)動文件
頭文件:hal_rgb_led.h(宏定義 + 函數(shù)聲明)
源文件:hal_rgb_led.c(核心功能實現(xiàn))
(1)PA0 初始化函數(shù):rgbKeyGpioInit
void rgbKeyGpioInit(void)

解析:實現(xiàn)PA0 推挽輸出配置,為了兼容2.2
(2)延時函數(shù):ledDelay

解析:給P9813 通信時序延時作用
(3)時鐘生成函數(shù):clkProduce

解析:P9813 核心時序函數(shù),通過拉低 / 拉高 PB8 生成時鐘信號,延時 40 個空循環(huán)保證時序滿足 P9813 要求。
(4)起始幀發(fā)送函數(shù):send32Zero

解析:P9813 通信必須以 32 個 0 作為起始幀,此函數(shù)通過循環(huán)生成 32 個時鐘,且 SDA 始終為低,完成起始幀發(fā)送。
(5)反碼處理函數(shù):takeAntiCode

解析:P9813 協(xié)議要求顏色數(shù)據(jù)高 2 位需傳輸反碼,此函數(shù)提取 R/G/B 值的高 2 位并取反,是官方驅(qū)動的核心協(xié)議適配邏輯。
(6)32 位數(shù)據(jù)發(fā)送函數(shù):datSend

解析:按P9813 ,逐位發(fā)送 32 位顏色數(shù)據(jù),每發(fā)送 1 位生成 1 個時鐘信號,是數(shù)據(jù)傳輸?shù)暮诵暮瘮?shù)。
(7)數(shù)據(jù)處理函數(shù):dataDealWithAndSend

解析:將R/G/B 值組裝為 P9813 要求的 32 位數(shù)據(jù)格式(標(biāo)志位 + 反碼 + 顏色數(shù)據(jù)),再調(diào)用datSend發(fā)送。
(8)RGB 初始化函數(shù):rgbLedInit

解析:初始化PB8/PB9 為推挽輸出,發(fā)送起始幀并將 RGB 燈初始化為滅燈狀態(tài),是驅(qū)動使用前必須調(diào)用的初始化函數(shù)。
(9)顏色控制函數(shù):ledRgbControl

解析:對外提供的核心調(diào)用函數(shù),參數(shù)為R/G/B 亮度值(0~255),調(diào)用:如果向亮什么顏色的燈就可以調(diào)用這個函數(shù)實現(xiàn)RGB亮燈,一個顏色的燈有255種亮度,三個顏色的燈組合起來可以實現(xiàn)任何顏色的亮燈。
05實現(xiàn)RGB幾個顏色燈輪轉(zhuǎn)效果(驅(qū)動移植)
整體過程:添加兩個RGB驅(qū)動文件---- 工程配置好---- 調(diào)用RGB初始化函數(shù)----調(diào)用亮燈控制函數(shù)實現(xiàn)亮燈----- 使用delay實現(xiàn)簡單幾個顏色輪轉(zhuǎn)。
1、驅(qū)動文件添加
將hal_rgb_led.h放入工程Inc文件夾,hal_rgb_led.c放入Src文件夾;
在Keil 中添加hal_rgb_led.c到工程,并配置頭文件路徑(確保#include"hal_rgb_led.h"不報錯)。
2、初始化調(diào)用
調(diào)用:rgbLedInit();實現(xiàn)初始化

3、調(diào)用RGB亮燈函數(shù),實現(xiàn)任何顏色的亮燈(需要顏色組合)
以下各種顏色為例,實現(xiàn)亮燈循環(huán)。

編譯燒錄,觀察現(xiàn)象,可以看到RGB燈成功驅(qū)動起來了。


本文從RGB燈的應(yīng)用場景與硬件基礎(chǔ)出發(fā),深入剖析了板載P9813驅(qū)動芯片的工作原理,完整呈現(xiàn)了HAL庫驅(qū)動的移植流程,并通過紅綠藍(lán)顏色輪詢的實例實現(xiàn),為開發(fā)者提供了從理論到實踐的全流程指導(dǎo),助力大家快速掌握物聯(lián)網(wǎng)開發(fā)中RGB燈這一常用外設(shè)的驅(qū)動開發(fā)與應(yīng)用技巧。
-
機智云
+關(guān)注
關(guān)注
3文章
642瀏覽量
27711 -
HAL
+關(guān)注
關(guān)注
2文章
75瀏覽量
13617 -
rgb燈
+關(guān)注
關(guān)注
0文章
11瀏覽量
2054
發(fā)布評論請先 登錄
【GoKit3(S)】Gokit3開箱及介紹
【Gokit3試用體驗】1、開箱評測
每周精選:Gokit3S開發(fā)攻略、低成本SOC開發(fā)(1月9日)
SOC快速入門
4G模組接入機智云gokit3開發(fā)板
基于gokit3微信寵物屋與機智云的物聯(lián)網(wǎng)智能家居
基于gokit3微信寵物屋與機智云的物聯(lián)網(wǎng)智能家居
通過機智云GoKit3開發(fā)套件實現(xiàn)手機APP的遠(yuǎn)程控制
機智云推出基于物聯(lián)網(wǎng)智能硬件開發(fā)套件GoKit3
gokit3是如何接入4G模組ML302-GC211轉(zhuǎn)接板的
【機智云Gokit3測評】Gokit3硬件電路學(xué)習(xí)
機智云Gokit3開發(fā)篇:ST-Link燒錄MCU程序操作詳解
機智云Gokit3開發(fā)篇 — 搭建Gokit3工程(HAL庫版)
《機智云Gokit3開發(fā)篇》4 RGB燈的介紹與驅(qū)動移植(HAL庫)
評論