2.1.LED燈基礎(chǔ)知識
2.1.1.LED燈結(jié)構(gòu)組成
LED燈,也稱發(fā)光二極管,是一種能夠?qū)㈦娔苻D(zhuǎn)化為可見光的固態(tài)的半導(dǎo)體器件,它可以直接把電轉(zhuǎn)化為光。LED的內(nèi)部是一個(gè)半導(dǎo)體的晶片,晶片的一端附在一個(gè)支架上,一端是負(fù)極,另一端連接電源的正極,整個(gè)晶片環(huán)-氧樹脂封裝起來。常見的LED燈如圖2-1所示。
圖2-1 常見LED燈
2.1.2.LED燈發(fā)光原理
半導(dǎo)體晶片由兩部分組成,一部分是P型半導(dǎo)體,另一端是N型半導(dǎo)體。這兩種半導(dǎo)體連接起來的時(shí)候,它們之間就形成了一個(gè)P-N結(jié)。當(dāng)電流通過導(dǎo)線作用于這個(gè)晶片的時(shí)候,電子就會(huì)被推向P區(qū),在P區(qū)里電子跟空穴復(fù)合,然后就會(huì)以光子的形式發(fā)出能量,這就是LED燈發(fā)光的原理。
2.1.3.LED燈驅(qū)動(dòng)原理
LED 驅(qū)動(dòng)指的是通過穩(wěn)定的電源為 LED 提供合適的電流和電壓,使其正常工作點(diǎn)亮。LED 驅(qū)動(dòng)方式主要有恒流和恒壓兩種。限定電流的恒流驅(qū)動(dòng)是最常見的方式,因?yàn)?LED 燈對電流敏感,電流大于其額定值可能導(dǎo)致?lián)p壞。恒流驅(qū)動(dòng)保證了穩(wěn)定的電流,從而確保了 LED 安全。
LED 燈的驅(qū)動(dòng)比較簡單,只需要給將對應(yīng)的正負(fù)極接到單片機(jī)的正負(fù)極即可驅(qū)動(dòng)。LED的接法也分有兩種,灌入電流和輸出電流。
圖2-2 LED接法示例
灌入電流指的是LED的供電電流是由外部提供電流,將電流灌入我們的MCU;風(fēng)險(xiǎn)是當(dāng)外部電源出現(xiàn)變化時(shí),會(huì)導(dǎo)致MCU的引腳燒壞。
輸出電流指的是由MCU提供電壓電流,將電流輸出給LED;如果使用 MCU的GPIO 直接驅(qū)動(dòng) LED,則驅(qū)動(dòng)能力較弱,可能無法提供足夠的電流驅(qū)動(dòng) LED。
需要注意的 是 LED 燈的顏色不同,對應(yīng)的電壓也不同。電流不可過大,通常需要接入220歐姆到10K歐姆左右的限流電阻,限流電阻的阻值越大,LED的亮度越暗。
2.2.LED燈原理圖
CW32F003小藍(lán)板關(guān)于LED燈的原理圖如圖2-3所示
圖 2-3 小藍(lán)板LED燈原理圖
2.3.LED燈驅(qū)動(dòng)流程(庫函數(shù))
通過上面的原理圖可以了解到,LED2中負(fù)極接到了電源地,LED2的正極經(jīng)限流電阻R3連接到電源正。當(dāng)核心板上電時(shí),使LED2導(dǎo)通,這時(shí)便有電流流過發(fā)光二極管LED2,使LED2發(fā)光指示電源接入;
LED1的正極經(jīng)限流電阻R5接到電源正極,LED1的負(fù)極連接到單片機(jī)的GPIO口上,通過LED燈的驅(qū)動(dòng)原理,只需要將相應(yīng)GPIO(PC0)配置為低電平即可點(diǎn)亮LED1。CW32F003小藍(lán)板的LED部分實(shí)物圖如圖2-4所示
圖 2-4 小藍(lán)板LED實(shí)物圖
2.3.1.配置流程
一般我們使用GPIO的端口,都需要有以下幾個(gè)步驟。
開啟GPIO的端口時(shí)鐘
配置GPIO的模式
配置GPIO的輸出
從開發(fā)板原理圖了解到LED2接的是單片機(jī)的PC0。我們要使能LED就需要配置GPIOC端口。下面我們就以LED1接的PC0進(jìn)行介紹。
2.3.1.1.開啟CW32F003系統(tǒng)內(nèi)部時(shí)鐘
CW32的系統(tǒng)內(nèi)部時(shí)鐘默認(rèn)并不是我們想要的運(yùn)行頻率,在使用CW32之前我們需要先配置內(nèi)部時(shí)鐘樹。查找CW32F003的用戶手冊可以找到系統(tǒng)內(nèi)部時(shí)鐘樹如下圖:
圖2-5 CW32F003內(nèi)部時(shí)鐘樹
在CW32的庫函數(shù)中找到cw32f003_rcc.h,頭文件中有時(shí)鐘樹相關(guān)配置的函數(shù),如下圖:
圖2-6 時(shí)鐘樹相關(guān)配置函數(shù)
void RCC_Configuration(void) { FLASH_SetLatency(FLASH_Latency_2); // 設(shè)置主頻為48MHZ需要注意,F(xiàn)lah的訪問周期需要更改為FLASH_Latency_2。 RCC_HSI_Enable(RCC_HSIOSC_DIV1); // 設(shè)置頻率為48M RCC_SYSCLKSRC_Config(RCC_SYSCLKSRC_HSI); //選擇SYSCLK時(shí)鐘源 48MHz RCC_HCLKPRS_Config(RCC_HCLK_DIV1); //配置SYSTICK到HCLK分頻系數(shù) 48MHz RCC_PCLKPRS_Config(RCC_PCLK_DIV8); //配置HCLK 到 PCLK的分頻系數(shù) 6MHz }
2.3.1.2.開啟GPIO的端口時(shí)鐘
CW32的外時(shí)鐘默認(rèn)是全部關(guān)閉,使用GPIO外設(shè)之前我們需要先開啟對應(yīng)的時(shí)鐘。
在CW32提供的庫函數(shù)中找到cw32f003_rcc.h,這個(gè)頭文件包含了所有時(shí)鐘相關(guān)的函數(shù)接口。外設(shè)時(shí)鐘的接口如下圖所示:
圖2-7 GPIO配置相關(guān)函數(shù)
LED1的控制IO是PC0,因此需要打開GPIOC對應(yīng)的時(shí)鐘,代碼如下:
__RCC_GPIOC_CLK_ENABLE();//打開GPIOC的時(shí)鐘2.3.1.3.配置GPIO初始化
GPIO初始化包含了模式,中斷使能,io引腳位號。CW32的GPIO初始化是先把所有初始化項(xiàng)寫在一個(gè)結(jié)構(gòu)體里面,然后把結(jié)構(gòu)體傳入帶初始化函數(shù)里,完成初始化功能。
與GPIO相關(guān)的函數(shù)接口都在cw32f003_gpio.h頭文件里面,我們先看GPIO模式有哪些,如下圖所示:
圖2-8 GPIO模式 GPIO模式包含了模擬輸入,數(shù)字輸入,數(shù)字上拉輸入,數(shù)字下拉輸入,數(shù)字推挽輸出,數(shù)字開漏輸出模式。
根據(jù)發(fā)光二極管控制原理,PC0接在LED的反向端,因此PC0為低電平時(shí),LED點(diǎn)亮。我們需要PC0輸出高低電平,模式需要選擇數(shù)字輸出模式,由于開漏模式需要外部有上拉或者下拉電阻才可輸出高低電平,所以我們選擇推挽模式。代碼如下:
GPIO_Init_Struct.Mode = GPIO_MODE_OUTPUT_PP;中斷使能包含了:無中斷,上升沿,下降沿,低電平,高電平中斷使能。
圖2-9 GPIO中斷 因?yàn)槲覀冃枰氖荊PIO輸出,因此不需要中斷使能,代碼如下:
GPIO_Init_Struct.IT = GPIO_IT_NONE;GPIO位號如下圖所示:
圖2-10 GPIO位腳 LED的控制端為PC0,最后的這個(gè)0就是位號,配置代碼如下:
GPIO_Init_Struct.Pins = GPIO_PIN_0;引腳輸出還需要配置GPIO的輸出速度,有高低速兩種速度設(shè)置,我們設(shè)置高速:
GPIO_Init_Struct.Speed = GPIO_SPEED_HIGH;以上配置就完成了GPIO的結(jié)構(gòu)體初始化,然后我們需要調(diào)用初始化函數(shù),在cw32f003_rcc.h里找到void GPIO_Init(GPIO_TypeDef *GPIOx, GPIO_InitTypeDef *GPIO_Init);包含了兩個(gè)參數(shù),第一個(gè)參數(shù)是GPIO的基地址,第二個(gè)參數(shù)是初始化配置結(jié)構(gòu)體。調(diào)用代碼如下:
GPIO_Init(CW_GPIOC, &GPIO_Init_Struct);結(jié)合以上配置,完整代碼如下:
GPIO_InitTypeDef GPIO_Init_Struct; __RCC_GPIOC_CLK_ENABLE(); GPIO_Init_Struct.IT = GPIO_IT_NONE; GPIO_Init_Struct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_Init_Struct.Pins = GPIO_PIN_0; GPIO_Init(CW_GPIOC, &GPIO_Init_Struct);2.3.1.4.配置LED輸出
配置好GPIO之后,就可以進(jìn)行點(diǎn)燈了。就是讓PC0輸出高低電平。 在cw32f003_gpio.h頭文件中可以找到函數(shù)
GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pins, GPIO_PinState PinState); 傳參有三個(gè),第一個(gè)是第一個(gè)參數(shù)是GPIO的基地址,第二個(gè)參數(shù)是引腳位號,第三個(gè)參數(shù)是輸出狀態(tài)。
GPIO_WritePin(CW_GPIOC,GPIO_PIN_0,GPIO_Pin_SET);//PC0輸出高電平 GPIO_WritePin(CW_GPIOC,GPIO_PIN_0,GPIO_Pin_RESET);//PC0輸出低電平我們要點(diǎn)亮LED1根據(jù)上文的電路圖可知要將PC0置低。
2.3.1.5.程序下載接線
我們使用DAP-Link作為程序下載媒介,DAP-Link的接線圖如下。其中藍(lán)色(3.3V)、綠色(GND)、 紫色(數(shù)據(jù)線SWD)、灰色(時(shí)鐘信號線SCK),與圖2-12一一對應(yīng)。
圖2-11 DAP-Link接線圖
圖2-12 CW32F003程序下載接線
2.3.2.實(shí)驗(yàn)效果
最終的實(shí)驗(yàn)效果如下圖所示:
圖2-13 LED點(diǎn)亮實(shí)驗(yàn)現(xiàn)象
審核編輯:劉清
-
led燈
+關(guān)注
關(guān)注
22文章
1592瀏覽量
108187 -
發(fā)光二極管
+關(guān)注
關(guān)注
13文章
1202瀏覽量
66406 -
LED驅(qū)動(dòng)
+關(guān)注
關(guān)注
72文章
1007瀏覽量
138080 -
GPIO
+關(guān)注
關(guān)注
16文章
1215瀏覽量
52227 -
電壓電流表
+關(guān)注
關(guān)注
0文章
25瀏覽量
2087 -
CW32
+關(guān)注
關(guān)注
1文章
210瀏覽量
700
原文標(biāo)題:CW32數(shù)字電壓電流表軟件教程-實(shí)驗(yàn)一:LED原理與驅(qū)動(dòng)
文章出處:【微信號:武漢芯源半導(dǎo)體,微信公眾號:武漢芯源半導(dǎo)體】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論