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