基于DSP的絕對式光電編碼器串行接口設計
一般SSI標準信號為25位,若不足25位要用零補齊,本文用到的編碼器為單圈16位4 096圈的高精度編碼器,總位數28位,它遵循的SSI傳輸格式如圖5所示。本文引用地址:http://www.j9360.com/article/148331.htm
由圖5可知,對于單圈位數和多圈位數超過25位的編碼器,在編寫通信程序時,需要產生32個CLOCK時序才可以將編碼器的所有數據傳輸并接收完畢。由硬件電路可知,利用DSP的GPIOF7(CANRXA)口來模擬產生絕對式編碼器讀數時所需的同步時鐘信號,用GPIOF6(CANTXA)口接收數據,具體通信過程如流程圖6所示。
在整個流程過程中,產生CLOCK同步時鐘時序以及數據處理是關鍵部分。整個實現過程如下:
(1)GPIOF7產生一個高到低跳變的電平,并適當延時,此時啟動數據開始轉換;
(2)GPIOF7產生一個低到高跳變的電平,并適當延時,此時已將最高有效位數據MSB傳送至數據口,并讀取數據到數據寄存器GPFDAT;
(3)連續產生32個同步時鐘CLOCK信號,依次將傳輸32位數據到數據寄存器GPFDAT,本文讀取數據方法是按位讀取,每次在新加數據時,將前數據左移1位然后再加,直到完成所有數據位讀取完畢;
(4)GPIOF7產生一個低到高跳變的電平,高電平保持時間相對前面CLOCK同步時鐘時序長一點,數據轉換完畢。
下面給出InitGpio(void)函數的部分與本文有關的代碼。
5 實驗結果
實驗結果如圖7所示,由圖可見,CH2通道為32個CLOCK時序圖,CH1通道為32個CLOCK時序下對應輸出的DATA數據波形圖,該絕對式編碼器單圈數值為0~25 536,經4 096圈可輸出范圍0~268 435 456數值,檢測精度為0.001 5%,運行穩定可靠。
6 結語
本文提供了一種基于DSP芯片TMS320F2812的通用I/O口與絕對式編碼器SSI接口之間通信的硬件原理圖、軟件流程、程序實現步驟和部分代碼。采用軟件控制DSP的I/O口模擬時鐘信號的方法,成功地解決了絕對式編碼器SSI接口與微處理器通信的技術瓶頸,具有良好的通用性、易于實現,已成功應用于電機伺服控制系統,為微處理器與其他串行外設的通信提供了設計參考,具有一定的實用價值。
評論