從上文可以得到這樣的啟示:在LED控制電路的設(shè)計(jì)中,可借助于SPI 模式讀取數(shù)據(jù),即增加一塊SPI 模式的FLASH 存儲(chǔ)器,一方面可以保存重要文檔,另一方面可以利用SPSCK 產(chǎn)生的信號(hào),通過計(jì)數(shù)器電路實(shí)現(xiàn)對(duì)存儲(chǔ)器高速讀數(shù)據(jù),并且復(fù)用此信號(hào)產(chǎn)生屏幕顯示的控制信號(hào)。在給定了輸出數(shù)據(jù)的首地址并啟動(dòng)SPI 后,此方式使數(shù)據(jù)的讀出到屏幕顯示這一過程自動(dòng)進(jìn)行,同一信號(hào)源的全硬件方式大大減少了以往分別產(chǎn)生各控制信號(hào)方式時(shí)的銜接延時(shí)。圖3 為SPI 在LED大屏幕控制電路中的運(yùn)用示例。
?
圖3 SPI 模式下的L ED 大屏幕控制電路圖
級(jí)聯(lián)計(jì)數(shù)器的個(gè)數(shù)根據(jù)RAM 的容量大小,即地址線的數(shù)目來確定。微處理器通過驅(qū)動(dòng)器連接SPI 串行存儲(chǔ)器, 驅(qū)動(dòng)器可以選擇7407 或7417 的型號(hào)。RM_MODE 用來區(qū)別不同的讀寫操作方式。當(dāng)RM_MODE = 1 時(shí),是普通讀寫外部存儲(chǔ)器的方式,當(dāng)RM_MODE = 0 時(shí),就可以讓主機(jī)作為主器件,串行FLASH 存儲(chǔ)器作為從器件,兩者以SPI 方式進(jìn)行通信,利用此時(shí)產(chǎn)生的SPSCK信號(hào)對(duì)存儲(chǔ)器進(jìn)行高速讀數(shù)據(jù)操作。同時(shí)SPSCK信號(hào)經(jīng)過變換與延時(shí)處理,可以供給LED做SCK 移位信號(hào)用。在計(jì)數(shù)脈沖的輸入端,可以使用跳線做加、減方式的選擇處理。當(dāng)脈沖接于計(jì)數(shù)器UP 端時(shí), 為加計(jì)數(shù)方式, 接于DOWN 時(shí),為減計(jì)數(shù)方式。圖3 也可擴(kuò)展并接多組計(jì)數(shù)器,多組RAM.
減計(jì)數(shù)器方式的運(yùn)用大大增強(qiáng)了數(shù)據(jù)輸出的靈活性。在LED大屏幕顯示中,加、減計(jì)數(shù)器配合使用,可以使相同一塊控制卡輸出數(shù)據(jù)的顯示長度提高一倍。當(dāng)使用減計(jì)數(shù)器方式時(shí),為了與使用加方式時(shí)LED大屏幕上顯示的圖文一致,必須對(duì)與減計(jì)數(shù)器連接的RAM 的數(shù)據(jù)進(jìn)行上、下半屏交換處理,并且在輸出時(shí)要在程序中改變數(shù)據(jù)的起始點(diǎn),給出的行控制信號(hào)(RCK) 也應(yīng)做倒序處理(見圖4)。
?
圖4 加、減法模式下的數(shù)據(jù)組織與顯示
4 本方式使用時(shí)的注意事項(xiàng)
本方式使用時(shí)要注意計(jì)數(shù)器及RAM 芯片的讀寫速度必須與SPSCK 相匹配。SPI 方式的速率比較高,電路各器件讀取速度越高,數(shù)據(jù)出錯(cuò)的幾率就會(huì)越小。
此外還有其他一些原因也會(huì)引起讀數(shù)據(jù)時(shí)的錯(cuò)誤。如軟件編寫不當(dāng)導(dǎo)致數(shù)據(jù)地址超出RAM空間,電路設(shè)計(jì)未重視計(jì)數(shù)器高速工作時(shí)發(fā)熱對(duì)周邊器件與布線帶來的影響等。
使用SPSCK 信號(hào)讀取外部儲(chǔ)存器時(shí),同樣會(huì)產(chǎn)生SPI 主、從模式下的溢出錯(cuò)誤,即連續(xù)傳輸多個(gè)數(shù)據(jù)時(shí), 后一個(gè)數(shù)據(jù)覆蓋了前一個(gè)數(shù)據(jù)而產(chǎn)生的錯(cuò)誤。這種錯(cuò)誤產(chǎn)生的原因是從器件的傳輸標(biāo)志SPIF從相對(duì)于主器件的傳輸標(biāo)志SPIF主有一定的滯后,在主器件連續(xù)發(fā)送數(shù)據(jù)時(shí),會(huì)導(dǎo)致從器件的傳輸標(biāo)志和主器件下一個(gè)數(shù)據(jù)的傳輸標(biāo)志相重疊,而利用SPSCK 觸發(fā)計(jì)數(shù)器使地址遞加讀取數(shù)據(jù),第一個(gè)收到的數(shù)據(jù)也會(huì)被覆蓋。
這種傳輸錯(cuò)誤可以用軟、硬件的方法進(jìn)行改進(jìn)。在本文的設(shè)計(jì)中,后期在軟件編寫上采用了如下解決方法:先啟動(dòng)SPI 模式,再進(jìn)入計(jì)數(shù)器讀并行RAM ,浪費(fèi)一個(gè)時(shí)序?;蚴窃赗AM 中存入數(shù)據(jù)時(shí),全部存到它后一位的地址單元上,再用SPI 方式產(chǎn)生的脈沖去讀RAM ,就可得到正確的數(shù)據(jù)。
理論上本文方式可使顯示數(shù)據(jù)的輸出速度高至fOSC的1/ 4 ,但實(shí)際運(yùn)用時(shí)卻受到了RAM、鎖存器等輸出電路器件的參數(shù)限制。SPSCK 的速率設(shè)定要根據(jù)所選擇RAM 的參數(shù)確定,即要滿足RAM 最小的地址有效時(shí)間與數(shù)據(jù)有效時(shí)間的要求。
?
圖5 主、從SPIF 時(shí)序下的數(shù)據(jù)溢出錯(cuò)誤
5 結(jié) 語
通過此方法對(duì)輸出電路進(jìn)行改造,可極大地使原有控制系統(tǒng)滿足數(shù)據(jù)高速輸出的要求。本文給出的例子雖是基于LED大屏幕應(yīng)用的,但在LCD 或是其他對(duì)數(shù)據(jù)有高速輸出要求的系統(tǒng)中,同樣具有借鑒運(yùn)用意義。