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