<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于DSP的絕對式光電編碼器串行接口設(shè)計

          基于DSP的絕對式光電編碼器串行接口設(shè)計

          作者: 時間:2012-10-22 來源:網(wǎng)絡(luò) 收藏

          一般SSI標(biāo)準(zhǔn)信號為25位,若不足25位要用零補齊,本文用到的編碼器為單圈16位4 096圈的高精度編碼器,總位數(shù)28位,它遵循的SSI傳輸格式如圖5所示。

          本文引用地址:http://www.ex-cimer.com/article/148331.htm

          a.JPG


          由圖5可知,對于單圈位數(shù)和多圈位數(shù)超過25位的編碼器,在編寫通信程序時,需要產(chǎn)生32個CLOCK時序才可以將編碼器的所有數(shù)據(jù)傳輸并接收完畢。由硬件電路可知,利用的GPIOF7(CANRXA)口來模擬產(chǎn)生絕對式編碼器讀數(shù)時所需的同步時鐘信號,用GPIOF6(CANTXA)口接收數(shù)據(jù),具體通信過程如流程圖6所示。
          在整個流程過程中,產(chǎn)生CLOCK同步時鐘時序以及數(shù)據(jù)處理是關(guān)鍵部分。整個實現(xiàn)過程如下:
          (1)GPIOF7產(chǎn)生一個高到低跳變的電平,并適當(dāng)延時,此時啟動數(shù)據(jù)開始轉(zhuǎn)換;
          (2)GPIOF7產(chǎn)生一個低到高跳變的電平,并適當(dāng)延時,此時已將最高有效位數(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ù)轉(zhuǎn)換完畢。
          下面給出InitGpio(void)函數(shù)的部分與本文有關(guān)的代碼。
          h.JPG

          5 實驗結(jié)果
          實驗結(jié)果如圖7所示,由圖可見,CH2通道為32個CLOCK時序圖,CH1通道為32個CLOCK時序下對應(yīng)輸出的DATA數(shù)據(jù)波形圖,該絕對式編碼器單圈數(shù)值為0~25 536,經(jīng)4 096圈可輸出范圍0~268 435 456數(shù)值,檢測精度為0.001 5%,運行穩(wěn)定可靠。

          b.JPG



          6 結(jié)語
          本文提供了一種基于芯片的通用I/O口與絕對式編碼器SSI接口之間通信的硬件原理圖、軟件流程、程序?qū)崿F(xiàn)步驟和部分代碼。采用軟件控制的I/O口模擬時鐘信號的方法,成功地解決了絕對式編碼器SSI接口與微處理器通信的技術(shù)瓶頸,具有良好的通用性、易于實現(xiàn),已成功應(yīng)用于電機伺服控制系統(tǒng),為微處理器與其他串行外設(shè)的通信提供了設(shè)計參考,具有一定的實用價值。


          上一頁 1 2 3 下一頁

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();