RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用SPI總線設(shè)計(jì)正交編碼器計(jì)數(shù)器

科技觀察員 ? 來源:allaboutcircuits ? 作者:Muhammad Shahbaz ? 2022-04-27 16:26 ? 次閱讀

本應(yīng)用筆記描述了一個(gè)SLG46140V設(shè)計(jì),該設(shè)計(jì)實(shí)現(xiàn)了一個(gè)帶有正交編碼器輸入的16位加/減計(jì)數(shù)器。GreenPAK設(shè)備減輕了主機(jī)的實(shí)時(shí)輸入要求,并允許輕松連接多個(gè)編碼器。

旋轉(zhuǎn)編碼器廣泛用于感測(cè)軸和機(jī)器零件的方向,以及作為用戶界面輸入設(shè)備。大多數(shù)旋轉(zhuǎn)編碼器輸出一對(duì)正交信號(hào),將軸運(yùn)動(dòng)編碼為一系列脈沖。

為了跟蹤編碼器位置,必須對(duì)每個(gè)脈沖進(jìn)行計(jì)數(shù)。通常,中斷引腳用于此目的,計(jì)數(shù)在軟件中實(shí)現(xiàn)。許多微控制器包括專門的外設(shè)來讀取正交信號(hào)。然而,基于中斷的計(jì)數(shù)限制了最大脈沖速率并占用了CPU時(shí)間,而專用外設(shè)限制了可連接到單個(gè)微控制器的編碼器數(shù)量。此外,在非實(shí)時(shí)平臺(tái)(例如PC)上,這兩個(gè)選項(xiàng)都不可用。

本應(yīng)用筆記演示了SLG46140VGreenPAK器件如何實(shí)現(xiàn)具有16位向上/向下計(jì)數(shù)器和SPI總線接口的正交編碼器接口。主機(jī)應(yīng)用程序可以按所需的時(shí)間間隔讀取編碼器的當(dāng)前位置,而輔助設(shè)備會(huì)跟蹤每個(gè)輸入脈沖。此外,SPI總線允許鏈接多個(gè)設(shè)備以將靈活數(shù)量的編碼器連接到單個(gè)處理器。

高級(jí)設(shè)計(jì)

本應(yīng)用筆記設(shè)計(jì)具有來自編碼器的三個(gè)輸入信號(hào):A、B和Z。信號(hào)A和B是正交信號(hào),它們以00、10、11、01格雷碼序列交替切換狀態(tài)。信號(hào)Z是一個(gè)可選的編碼器零索引輸入,它將計(jì)數(shù)器復(fù)位到零位置。

poYBAGJo_iyAfjXeAAB7cnRmg04561.png

圖1.一個(gè)編碼器設(shè)備的系統(tǒng)連接。

所描述的SPI由nCS片選信號(hào)、SCK串行時(shí)鐘和MISO(主機(jī)輸入,從機(jī)輸出)串行輸出組成。片選低電平有效,當(dāng)nCS為高電平時(shí),總線可以被其他SPI設(shè)備使用。本應(yīng)用筆記中使用的SPI傳輸格式為CPOL=0,CPHA=1,這意味著SCK在空閑時(shí)處于低電平狀態(tài),并且在下降沿采樣數(shù)據(jù)。

pYYBAGJo_i2APfX4AADSSbvoKJA103.png

圖2.具有多個(gè)編碼器的系統(tǒng)連接。

使用Chain_IN和Chain_OUT信號(hào)可以將多個(gè)設(shè)備鏈接在同一總線上,這些信號(hào)在內(nèi)部延遲16個(gè)SCK時(shí)鐘周期的數(shù)據(jù)。因此,主機(jī)接收的前16位將來自第一個(gè)編碼器,接下來的16位來自第二個(gè)編碼器,依此類推。所有編碼器將在第一個(gè)SCK時(shí)鐘沿同時(shí)進(jìn)行采樣。

GreenPAK設(shè)備內(nèi)部的實(shí)現(xiàn)由三部分組成:

正交編碼器輸入模塊:將正交信號(hào)轉(zhuǎn)換為計(jì)數(shù)器的KEEP/UP信號(hào)對(duì),并將信號(hào)與內(nèi)部時(shí)鐘同步。

16位向上/向下計(jì)數(shù)器:兩個(gè)鏈接的8位計(jì)數(shù)器對(duì)編碼器脈沖進(jìn)行計(jì)數(shù)并向SPI模塊提供并行數(shù)據(jù)。

SPI總線:SPI鎖存并行數(shù)據(jù),并在nCS有效時(shí)串行輸出。

正交輸入模塊和計(jì)數(shù)器由內(nèi)部環(huán)形振蕩器時(shí)鐘運(yùn)行,而SPI由SPI主控從外部提供時(shí)鐘。以下部分包含每個(gè)組件的詳細(xì)說明。

正交編碼器輸入模塊

來自編碼器的信號(hào)最初進(jìn)入一對(duì)延遲塊。它們既可用作毛刺濾波器又可用作同步器,確保其輸出信號(hào)僅在時(shí)鐘上升沿發(fā)生變化。延遲值設(shè)置為最小值,給出2個(gè)時(shí)鐘周期的延遲??蛇x地,對(duì)于噪聲信號(hào),可以增加延遲以濾除來自輸入的任何毛刺脈沖,但這種過濾也會(huì)限制最大脈沖速率。

延遲塊的輸出被傳遞到一對(duì)D觸發(fā)器,它們保留前一個(gè)時(shí)鐘周期的信號(hào)狀態(tài)。然后將當(dāng)前狀態(tài)和先前狀態(tài)與4輸入XNOR門進(jìn)行比較。如果任一信號(hào)發(fā)生變化,XNOR門將為KEEP信號(hào)輸出0值,使計(jì)數(shù)器模塊開始計(jì)數(shù)。

poYBAGJo_i6ARezBAADxXBty2og786.png

圖3.正交信號(hào)輸入模塊

通過比較當(dāng)前狀態(tài)At和Bt與先前狀態(tài)Bt-1來檢測(cè)編碼器方向,如表1所示。檢測(cè)邏輯已編程到3位LUT0組件,該組件向計(jì)數(shù)器輸出UP信號(hào)。

表1.信號(hào)狀態(tài)的方向檢測(cè)

pYYBAGJo_i-AOUyZAAA1CUE0gkY373.jpg

一些編碼器有一個(gè)額外的零位傳感器,可用于在重新啟動(dòng)后找到系統(tǒng)的絕對(duì)位置。此Z信號(hào)上的高電平會(huì)將計(jì)數(shù)器重置為零。如果不需要此功能,可以不連接信號(hào),因?yàn)檩斎胍_已配置下拉電阻。

16位加/減計(jì)數(shù)器

SLG46140V器件包含兩個(gè)計(jì)數(shù)器/有限狀態(tài)機(jī)模塊,具有與SPI模塊的并行數(shù)據(jù)連接。它們中的每一個(gè)都可以輸出一個(gè)8位的計(jì)數(shù),并且通過鏈接兩個(gè)計(jì)數(shù)器可以制成一個(gè)16位的計(jì)數(shù)器。計(jì)數(shù)器在任一方向從0x0000環(huán)繞到0xFFFF。

pYYBAGJo_jCAVbHjAAA59EcQTJE418.png

圖4.Z輸入信號(hào)的邏輯

默認(rèn)情況下,CNT3塊從可配置的起始值向下計(jì)數(shù)到0或向上到255,然后以配置的值重新啟動(dòng)。通過將起始值設(shè)置為255可以實(shí)現(xiàn)向下計(jì)數(shù)的回繞,但要同時(shí)獲得向上計(jì)數(shù)的回繞,則需要額外的邏輯。

pYYBAGJo_jGAHqsOAADC4PiM2BU515.png

圖5.低8位計(jì)數(shù)器的執(zhí)行和環(huán)繞邏輯

當(dāng)計(jì)數(shù)器處于其極值時(shí),計(jì)數(shù)器的OUT信號(hào)激活。當(dāng)KEEP=0和OUT=1時(shí),LUT0輸出一個(gè)進(jìn)位脈沖到下一個(gè)計(jì)數(shù)器以增加它的計(jì)數(shù)。同時(shí),如果UP=1,LUT1將激活復(fù)位信號(hào)。DFF2對(duì)復(fù)位信號(hào)進(jìn)行采樣,以便計(jì)數(shù)器在時(shí)鐘上升沿同步復(fù)位。

來自編碼器Z輸入的CLEAR信號(hào)連接到DFF2的異步置位輸入,這會(huì)導(dǎo)致計(jì)數(shù)器立即復(fù)位。計(jì)數(shù)器在下一個(gè)時(shí)鐘上升沿繼續(xù)計(jì)數(shù)。

poYBAGJo_jKAXXBQAACxfw-m41Q007.png

圖6.高8位計(jì)數(shù)器的環(huán)繞邏輯

第二個(gè)計(jì)數(shù)器級(jí)的連接方式類似,因?yàn)樵摷?jí)不需要單獨(dú)的進(jìn)位信號(hào)。這三個(gè)信號(hào)都連接到一個(gè)LUT組件。當(dāng)UP=1、KEEP=0和OUT=1時(shí),它將計(jì)數(shù)器重置為零。

SPI總線

SLG46140和SLG46620中的并串轉(zhuǎn)換器接口作為現(xiàn)成的功能塊提供。在nCS變低后,該塊在第一個(gè)SCK邊沿鎖存來自兩個(gè)計(jì)數(shù)器的并行數(shù)據(jù),然后逐位移出數(shù)據(jù)。

外部產(chǎn)生的SCK信號(hào)與計(jì)數(shù)器使用的內(nèi)部時(shí)鐘不同步,因此兩個(gè)模塊需要以某種方式同步,以便在它們之間可靠地傳輸數(shù)據(jù)。SPI模塊提供了一個(gè)內(nèi)置選擇,用于在發(fā)生數(shù)據(jù)傳輸時(shí)將FSM時(shí)鐘門控兩個(gè)時(shí)鐘周期。在此應(yīng)用中,不希望對(duì)FSM時(shí)鐘進(jìn)行門控,因?yàn)樗赡軙?huì)在時(shí)鐘被禁用時(shí)導(dǎo)致脈沖丟失。相反,DFF5用于將外部SCK信號(hào)與內(nèi)部環(huán)形振蕩器時(shí)鐘同步。這確保了當(dāng)FSM數(shù)據(jù)穩(wěn)定時(shí),SPI模塊看到的SCK時(shí)鐘沿發(fā)生在環(huán)形振蕩器時(shí)鐘沿。

在本應(yīng)用筆記中,基本SPI通過數(shù)據(jù)鏈接邏輯進(jìn)行了擴(kuò)展。這允許在同一SPI總線上輕松連接多個(gè)編碼器,并同時(shí)對(duì)它們的計(jì)數(shù)器值進(jìn)行采樣。

鏈接功能基于管道延遲功能塊。這個(gè)塊有一個(gè)由16個(gè)觸發(fā)器組成的鏈,它們將在時(shí)鐘信號(hào)的每個(gè)上升沿移入和移出一位。來自鏈中前一個(gè)設(shè)備的MISO信號(hào)連接到輸入,輸出到下一個(gè)設(shè)備。

由于MISO信號(hào)直接連接到硬件的12號(hào)引腳,Chain_OUT必須在外部與其并聯(lián)。輸出使能邏輯確保一次只有一個(gè)引腳處于活動(dòng)狀態(tài)。

pYYBAGJo_jOAK0djAADx_WWwxSk367.png

圖7.SPI和數(shù)據(jù)鏈邏輯

對(duì)于前16個(gè)時(shí)鐘周期,在nCS變?yōu)榈碗娖胶?,每個(gè)設(shè)備保持MISO啟用并輸出其計(jì)數(shù)器值。同時(shí),管道延遲模塊存儲(chǔ)從鏈中第N-1個(gè)設(shè)備接收到的信號(hào)。

16個(gè)時(shí)鐘周期后,SPIINTR輸出變?yōu)楦唠娖揭灾甘緜鬏斀Y(jié)束。LUT2或門然后使DFF4觸發(fā)器變高,禁用PIN12并啟用PIN13。PipeDelay模塊移出第N-1個(gè)值,同時(shí)移入第N-2個(gè)值。這一直持續(xù)到所有值都被讀取并且主機(jī)產(chǎn)生一個(gè)nCS信號(hào),這將DFF4重置回其初始狀態(tài)。

poYBAGJo_jSAHBv2AACqbtJqilg389.png

圖8.使用兩個(gè)設(shè)備捕獲SPI信號(hào)

圖8顯示了一個(gè)SPI通信示例,其中設(shè)備首先發(fā)送自己的16位數(shù)據(jù)值,然后從鏈中的下一個(gè)設(shè)備轉(zhuǎn)發(fā)16位值。

時(shí)鐘速率限制

延遲和計(jì)數(shù)器模塊由內(nèi)部環(huán)形振蕩器提供時(shí)鐘,該振蕩器以大約27MHz的頻率運(yùn)行,具有1、4、8或16的可選分頻器。最大時(shí)鐘速率取決于邏輯元件的延遲,并隨電源電壓。

設(shè)計(jì)中最長(zhǎng)的邏輯鏈從輸入DLY0/1塊通過4位LUT0變化檢測(cè)器、2位LUT0執(zhí)行邏輯和3位LUT1環(huán)繞邏輯到FSM塊。這些模塊的延遲值在SLG46140數(shù)據(jù)表中定義,并在表2中進(jìn)行了總結(jié)。由于布線延遲和部件差異,理論上可能的6.8MHz頻率不適用于GreenPAK輸入電壓范圍的最低端(VDD=1.8V),而使用3.4MHz時(shí)鐘。

表2.模塊延遲和最大工作頻率

pYYBAGJo_jWAY4u-AABtdiMOCI8533.jpg

工作頻率將限制正交輸入的最小脈沖寬度。輸入毛刺濾波器通過至少三個(gè)時(shí)鐘周期長(zhǎng)的脈沖并過濾掉任何低于兩個(gè)時(shí)鐘周期的脈沖。

測(cè)試結(jié)果

以兩種方式測(cè)試功能。使用AMT203旋轉(zhuǎn)編碼器的正交輸出進(jìn)行手動(dòng)測(cè)試,以驗(yàn)證兩個(gè)方向的計(jì)數(shù)是否按預(yù)期工作并跟隨編碼器運(yùn)動(dòng)。

使用模擬正交信號(hào)的微控制器生成的信號(hào)源驗(yàn)證了最大脈沖率和計(jì)數(shù)可靠性。微控制器被配置為以給定的步進(jìn)頻率輸出8000步。正交信號(hào)中的脈沖寬度是步距的兩倍,因?yàn)橐淮沃挥幸粋€(gè)信號(hào)改變狀態(tài)。當(dāng)通過SPI總線讀取數(shù)據(jù)時(shí),該步驟系列重復(fù)了幾次。僅當(dāng)每次都正確計(jì)算所有步驟時(shí),才將測(cè)試用例標(biāo)記為成功。

表3總結(jié)了測(cè)試結(jié)果。正如預(yù)期的那樣,短于兩個(gè)時(shí)鐘周期的脈沖會(huì)被毛刺濾波器拒絕并導(dǎo)致計(jì)數(shù)為零。當(dāng)在每個(gè)電壓下接近最小脈沖寬度工作時(shí),會(huì)有一些丟失的步驟。這可能是由不對(duì)稱的上升/下降延遲引起的,這可能會(huì)在某些脈沖通過邏輯時(shí)稍微縮短一些脈沖。

結(jié)論

介紹了一種將正交編碼器連接到SPI總線的設(shè)計(jì)。該設(shè)計(jì)可以按原樣使用,也可以將各個(gè)組件重新用于不同的應(yīng)用。正交輸入部分可以修改為直接輸出適合不同設(shè)備的信號(hào),例如步進(jìn)驅(qū)動(dòng)器。16位加/減計(jì)數(shù)器模塊為測(cè)量多種脈沖源提供了有用的工具。可鏈接的SPI可用于同時(shí)從多個(gè)GreenPAK設(shè)備進(jìn)行采樣和讀取,數(shù)據(jù)源可以來自計(jì)數(shù)器或ADC。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 計(jì)數(shù)器
    +關(guān)注

    關(guān)注

    32

    文章

    2255

    瀏覽量

    94438
  • SPI
    SPI
    +關(guān)注

    關(guān)注

    17

    文章

    1703

    瀏覽量

    91458
  • SPI總線
    +關(guān)注

    關(guān)注

    4

    文章

    103

    瀏覽量

    27583
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    請(qǐng)問有沒有計(jì)數(shù)器輸出的計(jì)數(shù)值是串行數(shù)據(jù)(最好是SCI總線

    我要用計(jì)數(shù)器計(jì)數(shù)編碼器的脈沖,單片機(jī)的IO口不夠,但有還有SCI或SPI總線接口!
    發(fā)表于 02-07 11:06

    基于dsPIC單片機(jī)的正交計(jì)數(shù)器設(shè)計(jì) 求大神給思路

    本設(shè)計(jì)利用dsPIC單片機(jī)技術(shù)和正交編碼技術(shù),設(shè)計(jì)一個(gè)正交計(jì)數(shù)器。實(shí)現(xiàn)對(duì)光柵尺、光電編碼器等傳感
    發(fā)表于 03-26 09:51

    【數(shù)據(jù)采集分享】怎樣將正交編碼器和數(shù)據(jù)采集卡配合使用

    完整地旋轉(zhuǎn)一圈。這個(gè)值以脈沖/轉(zhuǎn)表示。有兩種不同的正交編碼器,在操作上稍有不同。下面我們就來講述如何使用NI數(shù)據(jù)采集板卡上的計(jì)數(shù)器從差分以及單端的正交
    發(fā)表于 12-05 10:43

    LS7366R 32 位正交編碼脈沖計(jì)數(shù)器模塊

    完整的開箱即用體驗(yàn)和快速發(fā)展。該模塊與硬件板直接兼容。它卸載所有的計(jì)算跟蹤編碼器和接口直接與 Arduino 板通過 SPI 和 IOs。特點(diǎn):?6 通道板載正交編碼脈沖
    發(fā)表于 04-17 16:06

    正交編碼器原理碼盤

    。方向:A相和B相相差一個(gè)相位,一般來說是90°。A相信號(hào)在前表示正轉(zhuǎn),B相信號(hào)在前表示反轉(zhuǎn)。計(jì)數(shù):在每個(gè)上升沿或者下降沿檢測(cè),檢測(cè)到計(jì)數(shù)器就加+1。線數(shù)和脈沖數(shù)的關(guān)系:假如一個(gè)編碼器是102...
    發(fā)表于 08-12 07:10

    正交編碼器原理什么是正交?

    1.正交編碼器原理什么是正交?如果兩個(gè)信號(hào)相位相差90度,則這兩個(gè)信號(hào)稱為正交。由于兩個(gè)信號(hào)相差90度,因此可以根據(jù)兩個(gè)信號(hào)哪個(gè)先哪個(gè)后來判斷方向。如下圖所示。
    發(fā)表于 01-10 08:04

    正交編碼器測(cè)速的方法

    1.正交編碼器的原理通常,光電式編碼器的輸出信號(hào)有A信號(hào)和B信號(hào),部分還會(huì)有Z信號(hào),也叫做零點(diǎn)信號(hào),本平臺(tái)使用的電機(jī)只有A/B信號(hào),當(dāng)電機(jī)旋轉(zhuǎn)時(shí),A/B兩路信號(hào)輸出正交脈沖信號(hào),這是測(cè)
    發(fā)表于 01-10 06:00

    基于VHDL的正交編碼脈沖電路解碼計(jì)數(shù)器設(shè)計(jì)

    針對(duì)正交編碼脈沖電路脈沖(quadratureencoderpulse,QEP)的解碼和計(jì)數(shù)的問題,給出了QEP解碼計(jì)數(shù)器的解決方案.本方案在復(fù)雜可編程邏輯
    發(fā)表于 03-01 16:36 ?98次下載

    編碼器正交編碼工作原理

    正交編碼器(又名雙通道增量式編碼器),用于將線性移位轉(zhuǎn)換為脈沖信號(hào)。
    發(fā)表于 08-02 08:50 ?3.2w次閱讀

    STM32的正交編碼器模式讀取編碼器的角度數(shù)據(jù)和速度

    STM32的正交編碼器模式讀取編碼器的角度數(shù)據(jù)和速度
    發(fā)表于 12-08 17:06 ?144次下載
    STM32的<b class='flag-5'>正交</b><b class='flag-5'>編碼器</b>模式讀取<b class='flag-5'>編碼器</b>的角度數(shù)據(jù)和速度

    開關(guān)高速脈沖計(jì)數(shù)器Modbus RTU編碼器模塊IBF150

    ? 產(chǎn)品特點(diǎn): ●?編碼器解碼轉(zhuǎn)換成標(biāo)準(zhǔn)Modbus RTU協(xié)議 ●?可用作編碼器計(jì)數(shù)器或者轉(zhuǎn)速測(cè)量 ●?支持編碼器計(jì)數(shù),可識(shí)別正反轉(zhuǎn) ●?
    的頭像 發(fā)表于 07-11 11:42 ?2009次閱讀
    開關(guān)高速脈沖<b class='flag-5'>計(jì)數(shù)器</b>Modbus RTU<b class='flag-5'>編碼器</b>模塊IBF150

    轉(zhuǎn)速DI計(jì)數(shù)器編碼器AB解碼轉(zhuǎn)換rs485/232ModbusRTU

    編碼器解碼轉(zhuǎn)換成標(biāo)準(zhǔn)Modbus RTU協(xié)議 ● 可用作編碼器計(jì)數(shù)器或者轉(zhuǎn)速測(cè)量 ● 支持8個(gè)編碼器同時(shí)計(jì)數(shù),可識(shí)別正反轉(zhuǎn) ● 也可以設(shè)
    的頭像 發(fā)表于 12-28 15:31 ?1132次閱讀
    轉(zhuǎn)速DI<b class='flag-5'>計(jì)數(shù)器</b><b class='flag-5'>編碼器</b>AB解碼轉(zhuǎn)換rs485/232ModbusRTU

    1路編碼器脈沖計(jì)數(shù)器或2路DI高速計(jì)數(shù)器,Modbus RTU模塊 YL150

    產(chǎn)品特點(diǎn):● 編碼器解碼轉(zhuǎn)換成標(biāo)準(zhǔn)Modbus RTU協(xié)議● 可用作編碼器計(jì)數(shù)器或者轉(zhuǎn)速測(cè)量● 支持編碼器計(jì)數(shù),可識(shí)別正反轉(zhuǎn)● 也可以設(shè)置作
    發(fā)表于 10-31 09:17 ?0次下載

    1路編碼器脈沖計(jì)數(shù)器或2路DI高速計(jì)數(shù)器,Modbus RTU模塊 YL150

    1路編碼器脈沖計(jì)數(shù)器或2路DI高速計(jì)數(shù)器,ModbusRTU模塊YL150產(chǎn)品特點(diǎn):●編碼器解碼轉(zhuǎn)換成標(biāo)準(zhǔn)ModbusRTU協(xié)議●可用作編碼器
    發(fā)表于 11-03 14:19 ?0次下載

    正交解碼計(jì)數(shù)器

    正交解碼計(jì)數(shù)器
    發(fā)表于 09-06 11:41 ?0次下載
    RM新时代网站-首页