日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式硬件
[導讀]“自由軟件”與“開源軟件”的主要區(qū)別在于其內含的自由概念不同?!白杂绍浖痹S可尊重最終用戶的幾項基本自由:運行軟件的自由;研究和更改軟件的自由;再分發(fā)副本的自由;改進程序和發(fā)布這些改進的自由;另一方面,“開源軟件”并非始終賦予最終用戶同樣的自由,但它賦予“開發(fā)人員”訪問源代碼等權利。

為什么關注“自由和開源軟件”?使用自由和開源軟件 (FOSS)群體的迅速擴增,從1980年以來,體現(xiàn)了嵌入式行業(yè)最重要的全面長期發(fā)展趨勢。第一,獲得 FOSS軟件許可,就可以使用源代碼,同時還賦予開發(fā)人員研究、變更、改進軟件設計的權利。第二,在每一類主要軟件的生命周期中,F(xiàn)OSS已經或者必將發(fā)揮一定的作用,影響從64位服務器到8位微控制器的一切平臺。FOSS將從根本上改變所有用戶和開發(fā)人員對于軟件價值主張的看法。因此,大部分嵌入式開發(fā)人員或早或晚都會在設計中使用FOSS。

什么是FOSS

“自由軟件”與“開源軟件”的主要區(qū)別在于其內含的自由概念不同。“自由軟件”許可尊重最終用戶的幾項基本自由:運行軟件的自由;研究和更改軟件的自由;再分發(fā)副本的自由;改進程序和發(fā)布這些改進的自由可以自由地做這些事情,意味著您不必征求許可或者支付費用獲得許可,這是一個關于自由的問題,而非商業(yè)問題,因此應理解為“言論自由,而不是免費啤酒”。

另外還應注意,這些自由是針對“最終用戶”而言,而不是開發(fā)人員,也不是軟件分發(fā)者。

另一方面,“開源軟件”并非始終賦予最終用戶同樣的自由,但它賦予“開發(fā)人員”訪問源代碼等權利。4種開源許可都允許開發(fā)人員創(chuàng)建專有閉源軟件,而不要求分發(fā)最終成果的源代碼。BSD(伯克利軟件發(fā)行)許可就是其中一例,它允許以二進制形式再分發(fā)軟件,無需提供源代碼。

在現(xiàn)實世界中,閉源或專有軟件與FOSS主要區(qū)別在于大眾協(xié)作開發(fā)的性質不同,前者大家都獨立開發(fā)各自的項目,而后者任何用戶都可能成為開發(fā)人員,報告并修正缺陷,或者增加新特性。

FOSS受到嵌入式市場歡迎的原因很簡單,主要是經濟利益驅動,它能降低軟件成本,加快產品上市。FOSS將“自主開發(fā)”的開發(fā)人員變?yōu)橄到y(tǒng)集成者,使其能專注于產品增值和與眾不同的特性,而不是一次次重復產生相同的基本結構和功能。這是控制軟件開發(fā)成本的唯一行之有效的方法。無論何種組織機構,總會處于采用開源軟件五個階段中的某一階段。

表1:采用FOSS的五個階段

雖然許多人將FOSS等同于著名的Linux®內核或者基于Linux的發(fā)行版,但在嵌入式開發(fā)中,超出Linux范圍使用FOSS已經非常普遍;幾乎四分之三的組織都在使用它,涉及到成千上萬個項目。然而,隨著基于Linux的嵌入式系統(tǒng)越來越受歡迎,為嵌入式外設(ADC、DAC、音頻編解碼器、加速度計、觸摸屏控制器等)提供Linux驅動程序的需求變得日益迫切。

ADI公司創(chuàng)建、修改和維護的驅動程序的各層:

•在何處進行維護(驅動程序的下載位置)

•接口代碼(用于內核的公共代碼)——允許在您的平臺上使用驅動程序

•驅動程序開發(fā)慣例(哪些文件可以修改或提供,哪些不能)

•何處可以找到代碼——如何提交缺陷和問題報告

Linux設備驅動程序

多數(shù)Linux用戶都樂于不知道Linux內核所涉及的底層硬件復雜性和問題,往往會吃驚地發(fā)現(xiàn)內核大部分都與運行于其上的硬件無關。事實上,Linux內核中的多數(shù)源代碼都與獨立于架構的設備驅動程序有關:在Linux2.6.32.6內核的全部7 934 5669行代碼中,有4 758 810行代碼(60%以上)都位于./drivers,./sound和./firmware目錄下,比例之高令人震驚。與架構有關的代碼只占Linux內核的很小一部分,全部22種不同架構僅有1 501 545行代碼(18.9%)。Linux內核支持的前10大架構如表2所示。

表2:Linux內核支持的前10大架構

這說明,與架構無關約占內核源代碼的60%的驅動程序具有舉足輕重的作用。對于每種支持Linux的硬件,都有人編寫過設備驅動程序。自2007年以來,ADI公司一直位列為Linux內核10貢獻代碼最多的20家公司之一,并設立了專職團隊從事Linux設備驅動程序的開發(fā)。

Linux設備驅動程序的基本知識

設備驅動程序用作硬件與使用硬件的應用程序(用戶代碼)或內核之間的轉譯器,它將硬件的工作細節(jié)隱藏于幕后,從而起到簡化編程的作用。編程人員可以利用一套標準化調用方法(系統(tǒng)調用)編寫高級應用程序代碼,而不必關心它將控制的特定硬件或運行于其上的處理器。借助定義明確的內部應用程序編程接口(內核API),應用程序代碼便可以通過與軟件上層結構或底層硬件無關的標準方式與設備驅動程序實現(xiàn)接口。

針對特定處理器平臺,操作系統(tǒng)(OS)處理硬件操作的細節(jié)。利用內核(OS)內部硬件抽象層(HAL)和處理器專用外設驅動程序(例如I2C®SPI總線驅動程序),通常的設備驅動程序甚至也能獨立處理器平臺。這種方法允許一個設備驅動程序(例如觸摸屏數(shù)字化儀AD7879的驅動程序)可以不加修改地用在任何運行Linux的處理器平臺上,Linux內核之上運行任何圖形用戶界面(GUI)包和適當?shù)膽贸绦?。如果硬件設計人員決定轉而使用觸摸屏控制器AD7877,他(她)將無需軟件團隊提供信息。兩款器件均可用驅動程序;雖然器件不同,連接方式可能不同(AD7877僅提供SPI,AD7879則有SPI或I2C),并且寄存器圖也不相同,但相對于觸摸屏用戶代碼的內核API完全相同。這樣,對硬件的控制權便又回到硬件架構師手中。

Linux內核中的不同類型設備驅動程序提供不同的抽象層次,傳統(tǒng)上一般將其分為以下三類。

字符設備:處理字節(jié)流。串行端口或輸入設備驅動程序(鍵盤、鼠標、觸摸屏、游戲操縱桿等)通常實現(xiàn)字符設備類型。

塊數(shù)據(jù)設備:單次操作處理512字節(jié)或更多的二次冪塊數(shù)據(jù)。存儲設備驅動程序通常實現(xiàn)此類塊設備。

網(wǎng)絡接口:任何網(wǎng)絡事務都通過接口完成,接口指能夠與其他主機交換數(shù)據(jù)的設備。

在Linux內核中,各特殊類別都可能有多個獨立的設備核心層,以幫助開發(fā)人員實現(xiàn)提供標準用途的驅動程序,如視頻、音頻、網(wǎng)絡、輸入設備或背光處理等。通常,每個子系統(tǒng)在Linux內核源代碼樹中都有其自己的目錄。這種“設備驅動程序核心方法”消除了特定類別所有設備驅動程序的公共代碼,為上層構建了一個標準接口。每類設備或總線設備核心驅動程序通常會將一個函數(shù)集導出至其子類。驅動程序利用這種核心驅動程序注冊,并使用核心驅動程序所導出的API,而不是注冊其自己的字符/塊/網(wǎng)絡驅動程序。這通常包括支持和處理多個實例以及在層間分配數(shù)據(jù)的方式。絕大部分系統(tǒng)無意了解設備如何連接,但需要知道何種設備可用。Linux設備模型也包括一種將設備指派給特定類別的機制,如input(輸入)、RTC(實時時鐘)、net(網(wǎng)絡)或GPIO(通用輸入/輸出)等。這些類名在更高的功能層次描述設備,使之能在用戶空間中被發(fā)現(xiàn)。

特定硬件可能有多個設備驅動程序子系統(tǒng)與之相關。多功能芯片,例如帶I/O擴展器的背光驅動器ADP5520,會同時利用Linux背光、LED、GPIO和輸入子系統(tǒng)來實現(xiàn)其鍵盤功能。

如前文所述,用戶應用程序不能直接與硬件通信,因為那將要求擁有對處理器的管理員權限,例如執(zhí)行特殊指令或處理中斷。使用特定硬件設備的應用程序通常在通過/dev目錄中的節(jié)點暴露的內核驅動程序上工作。

設備節(jié)點稱為偽文件,因為它們看起來像文件;應用程序也可以打開或關閉它們(open()或close()),但在讀取或寫入這些文件時,數(shù)據(jù)來自或傳遞至設備節(jié)點相關的驅動程序。這個抽象層次由Linux內核中的虛擬文件系統(tǒng)(VFS)處理。除了read()、write()或poll()外,用戶應用程序也可以利用ioctl()(輸入/輸出控制)與設備交互。

除設備節(jié)點外,應用程序也可以利用/sys目錄中的文件條目;這是一個sysfs虛擬文件系統(tǒng),可將有關設備和驅動程序的信息,包括父子關系或與特定類、總線的關聯(lián),從內核設備模型導出至用戶空間。/sys也頻繁用于設備配置,特別是當相關驅動程序以一個設備驅動程序核心注冊時,此時它只將其標準功能集導出給用戶。

設備驅動程序可以注冊/sys“鉤子”或“條目”;讀取或寫入鉤子或條目時,將執(zhí)行設備驅動程序專門注冊的回調函數(shù)。這些回調函數(shù)(在管理員模式下運行)可以接受參數(shù)、發(fā)起總線傳輸、調用某種處理、修改特定設備變量,并將整數(shù)值或字符串返回給用戶。這就為實現(xiàn)其他功能創(chuàng)造了條件;例如,用戶空間可以使用觸摸屏數(shù)字化儀AD7877的溫度傳感器或輔助ADC。

設備驅動程序既可以靜態(tài)地構建于內核中,也可以在以后作為可加載模塊動態(tài)安裝。Linux內核模塊(LKM)是動態(tài)組件,可以在運行時插入和移除。這對于驅動程序開發(fā)人員特別有用,因為更快的編譯速度可以節(jié)省時間,而且測試模塊不必重啟系統(tǒng)。讓硬件驅動程序駐留在可以隨時載入內核的模塊中,便可以在特定硬件不用時節(jié)約RAM。

加載模塊時,也可以賦予其配置參數(shù)。對于構建于內核中的模塊,參數(shù)在內核啟動時傳送給該模塊。例如:

root:~> insmod ./sample_module.ko argument=1

root:~> lsmod

Module Size Used by

sample_module 1396 0 - Live 0x00653000

root:~> rmmod sample_module

驅動程序也可以多次實例化,每次實例化都可以采用不同的設置,目標設備可以有不同的I2C從ID,連接到不同的SPI從選擇,或者映射到不同的物理存儲器地址。所有實例共用同樣的代碼,以便節(jié)省存儲器,但具有各自的數(shù)據(jù)段。

Linux是一種先占式多任務、多用戶操作系統(tǒng),因此幾乎所有設備驅動程序和內核子系統(tǒng)都允許多個進程(可能由不同的用戶所有)同時利用設備。常見的例子有network(網(wǎng)絡)、audio(音頻)或input(輸入)接口。QWERTY鍵盤控制器ADP5588的鍵按下或釋放事件會被加上時間戳、排隊并發(fā)送至所有已打開input vent device(輸入事件設備)的進程。這些事件代碼在所有架構上都相同,并且與硬件無關。讀USB鍵盤與從用戶空間讀取ADP5588并無區(qū)別。事件類型通過代碼加以區(qū)分。鍵盤發(fā)送鍵事件(EV_KEY)、鍵識別碼以及代表按下或釋放動作的某種狀態(tài)值。觸摸屏發(fā)送絕對坐標事件(EV_ABS)以及由x、y和觸摸壓力組成的一個三元組,鼠標則發(fā)送相對運動事件(EV_REL)。加速度計ADXL346在發(fā)送關于加速度的絕對坐標事件的同時,可以發(fā)送關于單振或雙振的鍵事件。

某些應用中,加速度計ADXL346產生相對事件或者發(fā)送特定鍵代碼(特定應用設置),也很有意義。一般而言,定制驅動程序有兩種方式:運行時或編譯時。

可能在運行時進行定制的設備特性使用模塊參數(shù)和或/sys條目。

實現(xiàn)特定目標

使用開源Linux驅動程序—通過定制實現(xiàn)特定目標,對于編譯時配置,將特定板和特定應用配置排除在主驅動程序文件之外是Linux的慣例,一般將其放入board support ?le(板支持文件)中。

對于定制板上的設備(這是嵌入式和基于SoC片上系統(tǒng)硬件的典型現(xiàn)象),Linux使用platform_data指向描述設備及其如何連到SoC的特定板結構。這可以包括可用端口、不同芯片版本、首選模式、默認初始化、引腳的其他作用等。這將能縮小板支持包(BSP),并盡量減少驅動程序中板和應用特定的#ifdef。至于哪些可調變量進入platform_data,哪些應當在運行時具有訪問權,則由驅動程序的作者決定。

數(shù)字加速度計特性與應用具有非常密切的關系,不同的板和型號可能具有不同的特性。下例顯示了一組配置選項。這些變量在頭文件adxl34x.h(include/linux/input/adxl34x.h)中有詳細描述。

Analog Dialogue 44-03, March (2010)

#include <linux/input/adxl34x.h>

static const struct adxl34x_platform_data

adxl34x_info={

.x_axis_offset=0,

.y_axis_offset=0,

.z_axis_offset=0,

.tap_threshold=0x31,

.tap_duration=0x10,

.tap_latency=0x60,

.tap_window=0xF0,

.tap_axis_control=ADXL_TAP_X_EN | ADXL_TAP_

Y_EN | ADXL_TAP_Z_EN,

.act_axis_control=0xFF,

.activity_threshold=5,

.inactivity_threshold=3,

.inactivity_time=4,

.free_fall_threshold=0x7,

.free_fall_time=0x20,

.data_rate=0x8,

.data_range=ADXL_FULL_RES,

.ev_type=EV_ABS,

.ev_code_x=ABS_X,/*EV_REL*/

.ev_code_y=ABS_Y,/*EV_REL*/

.ev_code_z=ABS_Z,/*EV_REL*/

.ev_code_tap={BTN_TOUCH,BTN_TOUCH,BTN_TOUCH},/*EV_KEY x,y,z */

.ev_code_ff=KEY_F,/* EV_KEY */

.ev_code_act_inactivity=KEY_A,/*EV_KEY*/

.power_mode=ADXL_AUTO_SLEEP|ADXL_LINK,

.fifo_mode=ADXL_FIFO_STREAM,

};

為將設備與驅動程序相關聯(lián),“平臺和總線模型”無需設備驅動程序來包含其所控制設備的硬編碼物理地址或總線ID。平臺和總線模型還能防止資源沖突,大大改善便攜性,并與內核的電源管理特性干凈利落地接口。

利用平臺和總線模型,設備驅動程序一旦獲得設備的物理位置和中斷線路,便知道如何控制設備。該信息在探測期間作為一個數(shù)據(jù)結構傳遞給驅動程序。

與PCI或USB設備不同,I2C或SPI設備不會在硬件層次上進行枚舉。相反,軟件必須知道每個I2C/SPI總線段上連接了哪些設備,以及這些設備使用什么地址。因此,內核代碼必須明確實例化I2C/SPI設備。這可以通過多種不同方法實現(xiàn),具體取決于上下文和要求。不過,最常用的方法是通過總線號碼聲明I2C/SPI設備。

當I2C/SPI總線是一條系統(tǒng)總線時,這種方法是合適的;許多嵌入式系統(tǒng)正是這種情況,其中每條I2C/SPI總線都有一個事先已知的號碼。因此,可以預先聲明連到該總線的I2C/SPI設備。這可以利用一個結構體i2c_board_info/spi_board_info陣列來完成,該陣列通過調用以下內容注冊i2c_register_board_info()/spi_register_board_info()

static struct i2c_board_info __initdata bfin_ i2c_board_info[] = {#if defined(CONFIG_TOUCHSCREEN_AD7879_I2C)||defined(CONFIG_TOUCHSCREEN_AD7879_I2C_MODULE)

{

I2C_BOARD_INFO("ad7879",0x2F),

.irq=IRQ_PG5,

.platform_data=(void*)&bfin_ad7879_ts_info,

},

#endif

#ifdefined(CONFIG_KEYBOARD_ADP5588)||defined(CONFIG_KEYBOARD_ADP5588_MODULE)

{

I2C_BOARD_INFO("adp5588-keys",0x34),

.irq=IRQ_PG0,

.platform_data=(void*)&adp5588_kpad_data,

},

#endif

#ifdefined(CONFIG_PMIC_ADP5520)||defined(CONFIG_PMIC_ADP5520_MODULE)

{

I2C_BOARD_INFO("pmic-adp5520",0x32),

.irq=IRQ_PG0,

.platform_data=(void*)&adp5520_pdev_data,

},

#endif

#ifefined(CONFIG_INPUT_ADXL34X_I2C)|| defined(CONFIG_INPUT_ADXL34X_I2C_MODULE)

{

I2C_BOARD_INFO("adxl34x", 0x53),

.irq = IRQ_PG0,

.platform_data = (void *)&adxl34x_info,

},

#endif

};

static void __init blackfin_init(void)

{

(...)

i2c_register_board_info(0,bfin_i2c_board_info, ARRAY_SIZE(bfin_i2c_board_info));

spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));

(...)

}

因此,為了啟用這樣一個驅動程序,只需要編輯板支持文件,將適當?shù)臈l目添加至i2c_board_info(spi_board_info)。

還應注意到,需在內核配置期間選擇驅動程序。驅動程序按照所屬的子系統(tǒng)分類??稍谝韵挛恢貌檎褹DXL34x驅動程序:

Device Drivers--->

Input device support --->

[*] Miscellaneous devices --->

<M>Analog Devices AD714x Capacitance Touch Sensor

<M>support I2C bus connection

<M>support SPI bus connection

<*>Analog Devices ADXL34x Three-Axis

Digital Accelerometer

<*>support I2C bus connection

<*>support SPI bus connection

一旦用戶開始內核構建過程,就會自動編譯所選的驅動程序。上面的代碼聲明I2C總線0上有四個設備,包括其各自的地址、IRQ以及其驅動程序所需的定制platform_data。注冊相關I2C總線時,i2c-core內核子系統(tǒng)會自動實例化這些I2C設備。

static struct i2c_driver adxl34x_driver = {

.driver={

.name="adxl34x",

.owner=THIS_MODULE,

},

.probe=adxl34x_i2c_probe,

.remove=__devexit_p(adxl34x_i2c_remove),

.suspend=adxl34x_suspend,

.resume=adxl34x_resume,

.id_table=adxl34x_id,

};

static int __init adxl34x_i2c_init(void)

{

return i2c_add_driver(&adxl34x_driver);

}

module_init(adxl34x_i2c_init);

在內核啟動的某一時間點,或者在其后的任何時候,一個名為adxl34x的設備驅動程序可以利用struct i2c_driver注冊自己——通過調用i2c_add_driver()進行注冊。struct i2c_driver的成員利用指向ADXL34x驅動程序函數(shù)的指針進行設置,將驅動程序與其總線主控內核相連接。(宏module_init()定義模塊插入時調用哪個函數(shù)(adxl34x_ i2c_init())。)

如果存檔的驅動程序名稱與宏I2C_BOARD_INFO所提供的名稱相符,i2c-core總線模型實現(xiàn)方法將調用驅動程序的probe()函數(shù),將相關的platform_data和irq從板支持文件傳遞到驅動程序。這僅會在沒有追索沖突的情況下發(fā)生,例如前一實例化設備使用同一I2C從地址時。

adxl34x_i2c_probe()函數(shù)隨后開始執(zhí)行其名稱所表示的功能。它通過讀取制造商和設備ID,檢查ADXL345或ADXL346是否存在以及是否正常工作。如果檢查成功,驅動程序的探測函數(shù)將分配特定設備數(shù)據(jù)結構,請求中斷,并初始化加速度計。

然后利用input_allocate_device()分配新的輸入設備結構,并設置輸入位域。這樣,設備驅動程序就告知輸入系統(tǒng)的其他部分這是何種設備,以及這種新的輸入設備能夠產生何種事件。最后,ADXL34x驅動程序通過調用input_register_device()注冊該輸入設備。

這將把新的輸入設備結構添加到輸入驅動程序的鏈接列表中,并調用設備處理程序模塊的連接函數(shù),告知其已出現(xiàn)一個新的輸入設備。從此時起,該設備可以產生中斷。一旦執(zhí)行中斷服務例程,就會從加速度計讀取狀態(tài)寄存器和事件FIFO,并利用nput_event()向輸入子系統(tǒng)發(fā)回適當?shù)氖录?/p>

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: 驅動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設備,其驅動電源的性能直接關系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅動電源設計中至關重要的兩個環(huán)節(jié),集成化方案的設計成為提升電機驅動性能的關鍵。

關鍵字: 工業(yè)電機 驅動電源

LED 驅動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設備的使用壽命。然而,在實際應用中,LED 驅動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設計、生...

關鍵字: 驅動電源 照明系統(tǒng) 散熱

根據(jù)LED驅動電源的公式,電感內電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關鍵字: LED 設計 驅動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產業(yè)的重要發(fā)展方向。電動汽車的核心技術之一是電機驅動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅動系統(tǒng)中的關鍵元件,其性能直接影響到電動汽車的動力性能和...

關鍵字: 電動汽車 新能源 驅動電源

在現(xiàn)代城市建設中,街道及停車場照明作為基礎設施的重要組成部分,其質量和效率直接關系到城市的公共安全、居民生活質量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關鍵字: 發(fā)光二極管 驅動電源 LED

LED通用照明設計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關鍵字: LED 驅動電源 功率因數(shù)校正

在LED照明技術日益普及的今天,LED驅動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關鍵字: LED照明技術 電磁干擾 驅動電源

開關電源具有效率高的特性,而且開關電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅動電源

關鍵字: LED 驅動電源 開關電源

LED驅動電源是把電源供應轉換為特定的電壓電流以驅動LED發(fā)光的電壓轉換器,通常情況下:LED驅動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關鍵字: LED 隧道燈 驅動電源
關閉