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