作者:特權(quán)同學(xué) 開發(fā)的一款液晶驅(qū)動(dòng)器,接收MCU過來的指令和數(shù)據(jù)進(jìn)行圖像顯示。使用了一片可編程(帶使能和PWM調(diào)節(jié)控制)的背光芯片。在CPLD設(shè)計(jì)中,上電復(fù)位狀態(tài)將背光使能拉低(關(guān)閉),直到MCU端發(fā)送開顯示指令后才會(huì)將背光使能拉高(開啟)。 遇到的問題是這樣,一上電原本背光是關(guān)閉的,直到MCU發(fā)出指令后才會(huì)開啟,但是一上電(按下開關(guān)),背光閃爍了一下。效果就像閃光燈一樣,也就是說,上電瞬間,背光開啟又關(guān)閉,然后再開啟。試著改變上電延時(shí)啟動(dòng)背光時(shí)間以及不同的電路板,發(fā)現(xiàn)都會(huì)出現(xiàn)類似的問題,排除代碼設(shè)計(jì)問題和電路板本身的問題。 開始的時(shí)候,沒有動(dòng)用示波器,只是以為CPLD在上電后復(fù)位結(jié)束前的這段時(shí)間內(nèi)控制背光使能信號(hào)的引腳出于三態(tài),使能引腳對(duì)于這個(gè)三態(tài)(類似懸空)也有可能被開啟。因此,猜想在背光芯片的輸入端所使用的10uF電容是否太小,如果加大這個(gè)電容應(yīng)該就可以大大延緩背光芯片的輸入電壓的時(shí)間,從而即便在復(fù)位結(jié)束后一段時(shí)間內(nèi),使能管腳仍然無(wú)法正常使能背光。這個(gè)想法確是也沒有什么問題,于是并了一個(gè)10uF,效果不是那么明顯,再并了一個(gè)100uF大大家伙,問題解決了。不過充電長(zhǎng)放電也長(zhǎng),關(guān)閉后短時(shí)間內(nèi)若再開啟,現(xiàn)象仍然復(fù)現(xiàn),問題擱淺,加大電容不是辦法。 詢問了背光芯片的原廠商,提出了CPLD在上電初始是高電平的解釋。拿來示波器一看,確是在CPLD的復(fù)位信號(hào)剛剛上升的時(shí)候(0.5V以下),連接到背光使能的IO腳出現(xiàn)了一個(gè)短暫的高脈沖,這個(gè)高脈沖維持了大約250us,感覺很蹊蹺,為什么復(fù)位期間IO腳出現(xiàn)如此的高脈沖呢?于是再找了另一個(gè)IO腳對(duì)照,一摸一樣的波形。然后找了同一個(gè)BANK的VCCIO同時(shí)捕獲,VCCIO上升后不久就看到那個(gè)IO腳上升,上升的波形也幾乎一致。挺納悶的,為什么CPLD在上電初始復(fù)位之時(shí)IO出現(xiàn)一個(gè)短暫的高脈沖呢?是電路的干擾嗎?不像,于是找來Altera的FAE,一句話解決問題:Altera CPLD的IO在上電后復(fù)位前處于弱上拉狀態(tài)。也難怪出現(xiàn)這個(gè)高電平,而且對(duì)背光產(chǎn)生了作用。弱上拉已成事實(shí),那解決的辦法有一個(gè),加個(gè)下拉,電阻要遠(yuǎn)小于上拉。而看看電路,原本就有一個(gè)推薦的100K下拉電阻在呢?思考了一下,為什么不起作用呢?而且采到的高電平還是直逼3.3V呢。是不是那個(gè)弱上拉比100K小得多呢?不知道,但是換了10K的下拉后,問題解決了,無(wú)數(shù)次開關(guān)看不到閃屏現(xiàn)象了。再次采樣,那個(gè)IO的輸出不到0.33V,這么看若上拉該有100K以上吧?而和下拉100K時(shí)的壓值算算還挺讓人摸不著頭腦的。但,這個(gè)問題也許是和負(fù)載有關(guān)吧。不過,讓特權(quán)同學(xué)記住了一點(diǎn),CPLD上電后復(fù)位前的IO處于弱上拉。 |