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