摘 要: PCA9633是一款通過(guò)I2C總線控制的4路LED控制芯片,每一路LED輸出的狀態(tài)可以設(shè)置為沒(méi)有PWM(Pulse Width Modulation)控制的關(guān)或開(kāi),,或者由其獨(dú)立的PWM控制器的值和組PWM控制器的值確定,。LED驅(qū)動(dòng)輸出的信號(hào)頻率為97 kHz,,占空比在0%~99.6%可調(diào)。本文介紹PCA9633的I2C協(xié)議,,重點(diǎn)介紹它與CPU的硬件電路圖以及通過(guò)C語(yǔ)言編程實(shí)現(xiàn)I2C時(shí)序,,驅(qū)動(dòng)LED燈發(fā)光,最后給出應(yīng)用實(shí)例,。
關(guān)鍵詞: PCA9633,;RGB LED;I2C時(shí)序
0 引言
在酒店,、舞臺(tái),、娛樂(lè)場(chǎng)、咖啡廳,、商場(chǎng),、生日宴會(huì)、家庭影院,、節(jié)慶日等室內(nèi)外場(chǎng)所,,為了展示情調(diào)裝飾,烘托氣氛,,經(jīng)??吹絉GB LED燈的大量使用。LED是一種性能優(yōu)良的顯示器件,,具有壽命長(zhǎng),、節(jié)電、高亮度,、多種發(fā)光顏色,、響應(yīng)速度快和驅(qū)動(dòng)電壓低等優(yōu)點(diǎn),在節(jié)省能源的同時(shí)還可以通過(guò)PWM器件調(diào)節(jié)LED發(fā)光強(qiáng)度,,依據(jù)RGB三原色混光原理調(diào)出多種顏色,,再通過(guò)MCU智能控制實(shí)現(xiàn)多種顯示效果。本文主要是介紹飛利浦公司生產(chǎn)的一款RGB LED控制器PCA9633的應(yīng)用,。
1 PCA9633芯片的原理及特點(diǎn)
1.1 PCA9633的特點(diǎn)[2-3]
PCA9633是I2C總線控制的可編程PWM輸出的4位LED驅(qū)動(dòng)器件,,主要應(yīng)用LED RGB紅光/藍(lán)光/綠光/琥珀色的混光,性能指標(biāo)如下:
?。?)4路LED驅(qū)動(dòng),,每路驅(qū)動(dòng)可以通過(guò)軟件編程為四種狀態(tài),分別是:開(kāi),、關(guān),、可編程PWM閃爍控制輸出、可編程每路灰度級(jí)別,同時(shí)支持4路整體亮度調(diào)節(jié)的PWM混光輸出,。
?。?)調(diào)光控制,PWM輸出頻率97 kHz,,每路有256個(gè)灰度級(jí)別,。
(3)閃爍控制,,PWM可編程頻率范圍0.093 Hz~24 Hz,,占空比可編程范圍0%~99.6%。
?。?)可通過(guò)190 Hz的PWM輸出對(duì)四路PWM輸出整體亮度256級(jí)調(diào)節(jié),。
(5)4位輸出可編程設(shè)置為推拉輸出(在5 V時(shí),,灌電流25 mA,,拉電流10 mA)。
?。?)7個(gè)硬件地址設(shè)定引腳,,同一I2C總線最多可接126片。
?。?)每片PCA9633有4個(gè)可編程軟件地址:一個(gè)全部響應(yīng)地址和三個(gè)子地址,。
(8)內(nèi)置25 MHz晶振和上電復(fù)位電路,,也可通過(guò)I2C總線實(shí)現(xiàn)軟件復(fù)位,。
(9)SDA/SCL內(nèi)置噪聲濾波器,,支持1 MHz的I2C快速模式,。
(10)支持熱插入,,低待機(jī)電流,,支持電壓范圍:2.3~5.5 V。
其引腳圖如圖1所示,。
引腳描述:
?。?)A6~A0:7個(gè)地址輸入引腳;
?。?)LED3~LED0:4位LED輸出驅(qū)動(dòng)引腳,;
(3)OE:輸出使能引腳,,低電平有效;
(4)Vss,,VDD:分別是地和電源,;
(5)SDA:I2C總線的數(shù)據(jù)輸入/輸出引腳,;
?。?)SCL:I2C總線的時(shí)鐘輸入引腳。
1.2 PCA9633電路連接圖[1-3]
單片機(jī)與PCA9633芯片的連接采用I2C總線的方式,,I2C接口引腳描述:
?。?)串行數(shù)據(jù)輸入/輸出(SDA):?jiǎn)纹瑱C(jī)與PCA9633通信的數(shù)據(jù)輸入/輸出線。
?。?)串行時(shí)鐘輸入(SCL):?jiǎn)纹瑱C(jī)與PCA9633通信時(shí)的同步時(shí)鐘,。
(3)片選輸入(OE):輸出使能端,,當(dāng)OE有效時(shí),,PCA9633的LEDn輸出有效。
PCA9633的每一路LED驅(qū)動(dòng)輸出電流最大25 mA,,當(dāng)RGB燈的工作電流不大時(shí),,可以直接接輸出,如果RGB的電流大,,可以在PCA9633的LED驅(qū)動(dòng)輸出端加場(chǎng)效應(yīng)管,,例如AP2306,可以提高驅(qū)動(dòng)能力,,輸出的連接電路如圖2所示,。根據(jù)需要,LED可以串接多個(gè),,多個(gè)LED串接時(shí),,要考慮LED的管壓降,所以要提高LED的電源電壓,。為了增加I2C總線的通信距離,,增加PCA9600驅(qū)動(dòng)器。硬件電路連接圖見(jiàn)圖2,。
1.3 PCA9633芯片寄存器功能描述[2]
PCA9633對(duì)RGB LED燈的控制(亮度,,明暗、閃爍,,燈的整體控制),,是通過(guò)設(shè)置其相關(guān)的寄存器完成的,下面介紹其有關(guān)寄存器的功能與設(shè)置方法,。
1.3.1 器件地址
PCA9633是4位I2C總線的LED驅(qū)動(dòng)器,,與主機(jī)通信遵循I2C協(xié)議的格式,,主機(jī)先發(fā)出啟動(dòng)信號(hào),隨后發(fā)出從機(jī)(PCA9633)的地址,,封裝為16腳的PCA9633,,有7個(gè)地址引腳分別為A0~A6,從機(jī)地址最多有27,,即128個(gè),,在這128個(gè)地址中,其中軟件復(fù)位地址(0x06)和LED呼叫地址(0x0C)這兩個(gè)地址不能作為從機(jī)地址,。
?。?)正常的I2C-BUS地址
封裝為16腳的PCA9633從機(jī)地址的組成如圖3所示,最高7位是地址線,,最低位是讀寫(xiě)控制位,,如果是讀操作最低位為“1”,若是寫(xiě)操作最低位為“0”,。還有一些地址是保留的,,最好不要設(shè)置為從機(jī)地址,例如:(0000 011,,1111 1xx,,0000 000,0000 1xx),。
?。?)LED ALL Call IIC-bus address全呼叫地址
全呼叫寄存器的地址是0x0C,功能是當(dāng)PCA9633芯片的控制寄存器中的某個(gè)寄存器設(shè)置為全呼叫時(shí),,那么I2C總線上所有PCA9633器件都可以在同一時(shí)刻被尋址,。上電時(shí),全呼叫寄存器是使能的,,默認(rèn)值是0xE0h或0xE1h,,當(dāng)主機(jī)發(fā)送E0h或E1h時(shí),PCA9633會(huì)出一個(gè)應(yīng)答信號(hào),,所以全呼叫地址的值0xE0h和0xE1h不能作為從機(jī)地址,。全呼地址的值是可以通過(guò)I2C總線編程的。
?。?)LED Sub Call IIC-bus address子呼叫地址
PCA9633有3個(gè)子呼叫地址寄存器,,可以通過(guò)I2C總線設(shè)置呼叫總線上的任一PCA9633器件,3個(gè)子呼叫地址為0x09h,,0x0ah,,0x0bh。上電時(shí),,3個(gè)子地址寄存器為默認(rèn)的值(寫(xiě)操作是0xE2h,,讀操作是0xE3h),、(寫(xiě)操作是0xE4h,讀操作是0xE5h),、(寫(xiě)操作是0xE8h,,讀操作是0xE9h);初始狀態(tài)下子呼叫寄存器是禁止使能的,,所以這6個(gè)值可以作為從機(jī)地址。
?。?)Software Reset IIC-bus address軟件復(fù)位地址
當(dāng)PCA9633需要主機(jī)軟件編程復(fù)位時(shí),,可以使用這個(gè)地址,它的地址為0x06h,。
1.3.2 PCA9633控制寄存器[2]
PCA9633有13個(gè)控制寄存器,,通過(guò)設(shè)置這些寄存器來(lái)改變4路LED輸出的狀態(tài),可以實(shí)現(xiàn)獨(dú)立控制或整體控制4路LED亮度和閃爍,。每個(gè)寄存器的數(shù)據(jù)位詳細(xì)說(shuō)明可以參閱它的數(shù)據(jù)手冊(cè),。
(1)MODE1-模式1寄存器(地址0x00h):主要用來(lái)設(shè)置子呼叫地址或全呼叫地址是否使能,。
?。?)MODE2-模式2寄存器(地址0x01h):主要功能是設(shè)置燈的輸出邏輯是否反轉(zhuǎn)、配置4位LED是OD門(mén)還是推拉輸出結(jié)構(gòu)輸出,,以及輸出禁止時(shí)4位LED輸出是高電平,、低電平還是高阻狀態(tài)。
?。?)PWMx(x可以取值0,,1,2,,3)-單個(gè)LED燈亮度控制寄存器(地址分別是0x02h,,0x03h,0x04h,,0x05h):4路LED輸出控制信號(hào)是頻率為97 kHz,,占空比可調(diào)的矩形波,通過(guò)設(shè)置亮度控制寄存器的值,,改變占空比,,調(diào)節(jié)LED燈的亮度,占空比值越大,,燈越亮,。
(4)組控占空比因數(shù)寄存器(Group duty cycle control,,GRPPWM,,地址0x06h):功能是同時(shí)設(shè)置4個(gè)LED燈亮的時(shí)間,,通過(guò)設(shè)置GRPPWM的值來(lái)調(diào)整占空比從0%~99.6%變化,占空比值越大,,燈亮的時(shí)間越長(zhǎng),。
(5)組頻率控制寄存器(Group frequency,,GRPFREQ):其功能是同時(shí)設(shè)置4位LED輸出信號(hào)的頻率,,即改變LED閃爍的頻率。
?。?)燈輸出狀態(tài)寄存器(LED driver outputstate,,LEDOUT,地址為0x08h):其功能是設(shè)置LED驅(qū)動(dòng)輸出的狀態(tài),,通過(guò)編程可以設(shè)置4位LED燈滅,、亮、單個(gè)燈亮,、4個(gè)LED燈閃爍,。
2 C語(yǔ)言編程軟件設(shè)計(jì)[2、4,、5]
2.1 寫(xiě)PCA9633一個(gè)控制寄存器
PCA9633遵循I2C總線協(xié)議[3],,寫(xiě)一個(gè)控制寄存器的時(shí)序如圖4所示。
主機(jī)與從機(jī)通信時(shí),,開(kāi)始時(shí)主機(jī)先發(fā)起始信號(hào),,這個(gè)起始信號(hào)要滿足I2C協(xié)議的起始條件,然后是從機(jī)的寫(xiě)地址,,由圖2知從機(jī)的地址為0xa2h(寫(xiě)),、0xa3h(讀),隨后是從機(jī)發(fā)送應(yīng)答信號(hào),,從機(jī)應(yīng)答后主機(jī)發(fā)送某一個(gè)控制寄存器的地址,,從機(jī)再次應(yīng)答后,主機(jī)在發(fā)送控制寄存器的數(shù)據(jù),,從機(jī)收到后發(fā)送主機(jī)應(yīng)答信號(hào),,主機(jī)收到應(yīng)答信號(hào)后發(fā)送停止條件,這樣就結(jié)束一個(gè)控制寄存器的寫(xiě)操作,。
例如:寫(xiě)某個(gè)寄存器操作定義函數(shù)名定義為write9633(),,函數(shù)的功能描述如下:
void write9633(unsigned char address1,unsigned char address2,,unsigned char info)
{
start(),;//起始信號(hào)writebyte(address1);
//從機(jī)地址
clock(),;//應(yīng)答信號(hào)
writebyte(address2),;//寫(xiě)MODE1寄存器地址
clock(),;
writebyte(info);//寫(xiě)MODE1寄存器數(shù)據(jù)
clock(),;
stop(),;//主機(jī)發(fā)停止信號(hào)
delay1(5000);//延時(shí)
}
其中address1為從機(jī)地址,,address2為控制寄存器地址,,info為要寫(xiě)入控制寄存器的數(shù)據(jù)。有關(guān)上述子函數(shù)的實(shí)現(xiàn)可以參考I2C協(xié)議的編程,,由于篇幅所限,,不再詳述。
2.2 組控4位LED燈閃爍的主要程序
PCA9633控制寄存器的宏定義:
#define MODE1 0x00
#define MODE2 0x01
#define PWM0 0x02
#define PWM1 0x03
#define PWM2 0x04
#define PWM3 0x05
#define GRPPWM 0x06
#define GRPPFREQ0x07
#define LEDOUT 0x08
#define SUBADR1 0x09
#define SUBADR2 0x0A
#define SUBADR3 0x0B
#define ALLCALLADR 0x0C
sbit cs=P2^5,;
write9633(0xa2,MODE1,,0x00),;
//寫(xiě)模式寄存器1,0xa2為從機(jī)地址
write9633(0xa2,,MODE2,,0x22);
//寫(xiě)模式寄存器2,,cs=1時(shí),,LEDn高阻抗,燈不亮
write9633(oxa2,,LEDOUT,,0xff);
write9633(0xa2,,GRPPWM,,0xa0);
//改變占空因數(shù),,值越小,,亮的時(shí)間越短
write9633(0xa2,GRPPFREQ,,0xa0),;
//控制4個(gè)燈的閃爍頻率,值越小,,閃爍越快
cs=0,;//輸出使能
write9633(0xa2,PWM0,,100),;
//100數(shù)值是燈的亮度,,根據(jù)要求可以改變
write9633(0xa2,PWM1,,100),;
write9633(0xa2,PWM2,,100),;
write9633(0xa2,PWM3,,100),;
程序里對(duì)MODE2寄存器的設(shè)置是基于LED輸出配置是OD門(mén)結(jié)構(gòu),輸出配置如果是推拉輸出結(jié)構(gòu),,即輸出加FET驅(qū)動(dòng)時(shí),,模式2(MODE2)寄存器設(shè)置0x26h。
如果I2C總線上連接多個(gè)PCA9633,,則可以使用LED呼叫地址,,即上述程序里地址0xa2改為0xe0就可以了。這樣可以節(jié)約I2C總線操作指令,。0xe0是系統(tǒng)上電默認(rèn)的值,,也可以通過(guò)寫(xiě)LED呼叫地址改變,通過(guò)寫(xiě)指令write9633(0xa2,,0x0c,,0xb2)即改為0xb2。
2.3 實(shí)現(xiàn)呼吸燈的效果
循環(huán)改變亮度控制寄存器的數(shù)值,,可以實(shí)現(xiàn)呼吸燈的效果,,以從機(jī)地址0xa22為例說(shuō)明,主要代碼如下:
for(i=0,;i<255,;i++)
{ write9633(0xa2,PWM0,,i),;
write9633 (0xa2,PWM1,,i),;
write9633(0xa2,PWM2,,i),;
write9633(0xa2,PWM3,i),;
delay(500),;
}
3 結(jié)束語(yǔ)
PCA9633在LED控制方面性能顯著,操作方便,。特別是為紅/綠/藍(lán)/琥珀(RGBA)色的混合應(yīng)用進(jìn)行了優(yōu)化,。另外,它還有3個(gè)子呼地址可以實(shí)現(xiàn)特定的組響應(yīng)I2C總線,。例如,,可以允許所有的紅色LED燈亮或滅或?qū)崿F(xiàn)跑馬燈的效果,從而減少I(mǎi)2C指令,。通過(guò)改變紅,、黃、綠LED的輸出狀態(tài),,依據(jù)RGB混光原理來(lái)實(shí)現(xiàn)任意顏色的顯示,。
參考文獻(xiàn)
[1] 倪曉軍,章韻.單片機(jī)原理與接口技術(shù)[M].北京:清華大學(xué)出版社,,2009.
[2] 恩智浦.PCA9633 data sheet[EB/OL].(2006)[2014-11-14].http://www.cn.nxp.com/documents/data_sheet/PCA9633.pdf.
[3] 何立民.I2C總線應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,,1995.
[4] 馬忠梅.單片機(jī)的C語(yǔ)言應(yīng)用程序設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2003.
[5] 徐愛(ài)鈞,,彭秀華.單片機(jī)高級(jí)語(yǔ)言C51應(yīng)用程序設(shè)計(jì)[M].北京:電子工業(yè)出版社,1998.