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