程序移植中的常見問題總結(jié)
芯片驅(qū)動(dòng)正常,功能應(yīng)用單獨(dú)實(shí)現(xiàn)也沒有任何問題。但是將其移植到主程序中出現(xiàn)了時(shí)鐘顯示停止、觸屏失效、參數(shù)顯示出現(xiàn)問題的現(xiàn)象。
原因:
在芯片驅(qū)動(dòng)程序的開發(fā)中,忽略了一個(gè)問題。那就是該芯片引腳占用的IO資源在初始化的時(shí)候不應(yīng)該改變其他引腳的正常功能工作。初始化芯片時(shí)人為的改變了其余功能引腳的作用。將其功能復(fù)用功能人為了改成了輸出引腳。只關(guān)注了該芯片正常工作時(shí)的IO引腳,忽略了其余各IO口的復(fù)用狀態(tài)。后逐條分析查看原主程序中 IO的初始化操作,逐口比對發(fā)現(xiàn)了該問題。
解決方案:
重新對接口進(jìn)行初始化,保留其余引腳的功能復(fù)用作用。
總結(jié):
工作要細(xì)致,不要犯想當(dāng)然的毛病。出現(xiàn)問題后要冷靜,咬人是不對的,呵呵。。。
一、關(guān)于延時(shí)
芯片時(shí)序要求非常嚴(yán)格,最基本的時(shí)間單位一定要非常精確,精確到微秒級。這是進(jìn)行后續(xù)工作的基礎(chǔ)。因?yàn)镃語言來編程,不是很好控制延時(shí)的長短。故采用測試的方法進(jìn)行,為了最大可能的減小誤差,采用延長測試時(shí)間的方式進(jìn)行。其基本思想是延時(shí)一定時(shí)間后,將其時(shí)間在屏幕上打印出來,并分析各兩次時(shí)間的間隔和具體延時(shí)參數(shù)之間的關(guān)系。例如:當(dāng)延時(shí)參數(shù)為60000000時(shí),各兩次時(shí)間間隔是否小于1分鐘。【備注:60000000us=1min】
二、對芯片的讀寫操作驗(yàn)證
進(jìn)行芯片自我驗(yàn)證,向芯片暫存器的固定字節(jié)寫入數(shù)據(jù),然后一個(gè)字節(jié)一個(gè)字節(jié)讀出來,比對寫入和讀出的數(shù)據(jù)是否一樣。
三、非易失操作的必要性
RAM數(shù)據(jù)暫存器用于內(nèi)部計(jì)算和數(shù)據(jù)的存取,數(shù)據(jù)在掉電后丟失。為長期保存需要保存的數(shù)據(jù)信息,需要將相關(guān)數(shù)據(jù)信息由暫存器拷貝到EEPROM中。
上電復(fù)位后,芯片自動(dòng)將EEPROM中相關(guān)字節(jié)拷貝到RAM中。
四、非必需操作的必要性
芯片讀取操作,首先讀取數(shù)據(jù)的低8位,再讀取數(shù)據(jù)的高8位。無論是低8位還是高8位,都是從最低位一位一位的讀。即使低位是不需要的字節(jié)也要讀出來,這叫規(guī)則。
評論