NXP2214實(shí)現(xiàn)多路韋根信號(hào)采集硬件設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
韋根傳感器是一種當(dāng)交變磁場(chǎng)經(jīng)過(guò)時(shí)產(chǎn)生輸出電壓脈沖的傳感器。脈沖的幅度是由激勵(lì)磁場(chǎng)的場(chǎng)強(qiáng)決定的。因此,韋根傳感器不需要外界電源供電。韋根傳感器的工作頻率從0速率到20KHZ,脈沖的極性由激勵(lì)磁場(chǎng)的極性所決定。由于韋根傳感器非常容易和數(shù)字系統(tǒng)相匹配,并且系統(tǒng)沒(méi)有可動(dòng)的部件或半導(dǎo)體器件,這使得它們能適用于惡劣的環(huán)境和長(zhǎng)期無(wú)人監(jiān)控的場(chǎng)所。
1 韋根信號(hào)簡(jiǎn)介
韋根信號(hào)是兩根數(shù)據(jù)線傳輸二進(jìn)制數(shù)據(jù),在空閑時(shí)端,兩線的對(duì)0V的電源都為T(mén)TL電平的水平,也就是5V,一般通過(guò)5K電阻上拉,當(dāng)有數(shù)據(jù)傳輸時(shí),兩根線交替地發(fā)送400uS低脈沖,當(dāng)Data0線發(fā)脈沖時(shí),數(shù)據(jù)是0;當(dāng)Data1發(fā)脈沖時(shí),發(fā)送的數(shù)據(jù)是1,不能兩根線同時(shí)發(fā)脈沖。脈沖的間隔時(shí)間是1mS。在設(shè)計(jì)讀卡器時(shí),為防止使用者連接錯(cuò)線,造成數(shù)據(jù)口損壞,在電路設(shè)計(jì)上一定要給數(shù)據(jù)輸出上加驅(qū)動(dòng)級(jí)并加電阻限流。
2 接口硬件構(gòu)成
接收韋根信號(hào)的上層控制設(shè)備通常是一個(gè)單片機(jī)控制系統(tǒng),承擔(dān)了I/O口驅(qū)動(dòng)、以太網(wǎng)通信、數(shù)據(jù)處理、液晶顯示等任務(wù)。韋根信號(hào)脈沖寬度僅為40~100μs,如果采用掃描I/O口的方式,只有滿足掃描周期<40 μs的條件(即采樣頻率高于25 kHz),才能夠捕獲一個(gè)信息幀內(nèi)所有的下降脈沖信號(hào),否則將因出現(xiàn)“脈沖遺漏”造成讀數(shù)錯(cuò)誤。如此高的掃描速度將極大地消耗CPU資源,阻塞單片機(jī)系統(tǒng)其他任務(wù)的正常執(zhí)行,每個(gè)韋根接頭都連接到CPU的一個(gè)中斷信號(hào)引腳上,以中斷觸發(fā)的方式處理。由于CPU外部中斷數(shù)量的限制,CPU包括運(yùn)算邏輯部件、寄存器部件和控制部件。CPU從存儲(chǔ)器或高速緩沖存儲(chǔ)器中取出指令,放入指令寄存器,并對(duì)指令譯碼。它把指令分解成一系列的微操作,然后發(fā)出各種控制命令,執(zhí)行微操作系列,從而完成一條指令的執(zhí)行。指令是計(jì)算機(jī)規(guī)定執(zhí)行操作的類型和操作數(shù)的基本命令。指令是由一個(gè)字節(jié)或者多個(gè)字節(jié)組成,其中包括操作碼字段、一個(gè)或多個(gè)有關(guān)操作數(shù)地址的字段以及一些表征機(jī)器狀態(tài)的狀態(tài)字和特征碼。有的指令中也直接包含操作數(shù)本身。
為了能夠接收多路信號(hào),可以由另一個(gè)獨(dú)立的單片機(jī)構(gòu)成一個(gè)從機(jī)系統(tǒng),以循環(huán)掃描數(shù)據(jù)總線的方式工作,專門(mén)負(fù)責(zé)多路信號(hào)的采集與處理,并將處理后的ID信息通過(guò)串行或并行方式發(fā)給主控單片機(jī)。但是這種方式增加了系統(tǒng)的復(fù)雜度,從而給可靠性帶來(lái)隱患,同時(shí)也增加了成本。
本設(shè)計(jì)中主控制器是NXP2214,采用中斷觸發(fā)綜合掃描I/O的新方法,只用一個(gè)CPU的中斷信號(hào),實(shí)現(xiàn)多路韋根接口信號(hào)的采集。韋根接口硬件電路如圖2所示。韋根接口是5 V的電平,而ARM內(nèi)核的CPU是3.3 V的電平,因此韋根信號(hào)首先通過(guò)芯片SN74LVC4245轉(zhuǎn)換成3.3 V電平。然后,輸入到NXP2214的P0.8~P0.15引腳上,這些引腳通過(guò)I/O方式掃描信號(hào)。
當(dāng)有任何一路韋根接口產(chǎn)生低電平時(shí),經(jīng)過(guò)SN74-HC30D都會(huì)產(chǎn)生中斷;微控制器立刻響應(yīng)中斷,掃描輸入信號(hào)獲取完整的信號(hào)幀后退出中斷。這樣,只需要一個(gè)中斷信號(hào),只在有信號(hào)時(shí)掃描I/O,不但不會(huì)阻塞系統(tǒng)其他任務(wù)的正常執(zhí)行,而且可以擴(kuò)展出更多的韋根接口。
[!--empirenews.page--]3 接口軟件設(shè)計(jì)
為了快速響應(yīng),使用最高級(jí)的中斷優(yōu)先級(jí),當(dāng)外部4路韋根接口有任何一路信號(hào)產(chǎn)生有效電平時(shí),NXP2214都可以產(chǎn)生中斷。在中斷處理程序中,并行掃描4路韋根接口,并分別保存到變量。如果大于脈沖周期的時(shí)間間隔內(nèi)(如2.5 ms),都沒(méi)有發(fā)現(xiàn)任何一路信號(hào)產(chǎn)生有效電平,則認(rèn)為傳輸完畢。接著處理數(shù)據(jù)和發(fā)送消息通知其他任務(wù),然后退出中斷。并行I/O掃描的流程如圖3所示。
具體的掃描判斷過(guò)程如下:在定時(shí)器沒(méi)有超時(shí)時(shí),首先讀入韋根信號(hào)引腳的電平到cur變量;接著判斷pre是否等于(cur&pre),即判斷是否產(chǎn)生1到0變化的有效電平,通過(guò)下降沿判斷的方式,防止誤把1次0當(dāng)成多個(gè)0讀入。如果產(chǎn)生了下降沿,則判斷信號(hào)是哪路韋根信號(hào),對(duì)應(yīng)存入變量WG[0]~wG。如果是DATA0產(chǎn)生,則直接把變量左移1位;如果是DATA1產(chǎn)生,則變量加1后再左移。
該并行掃描處理的方法,能夠保證韋根接口在同時(shí)有多路信號(hào)產(chǎn)生的情況下,也可以正確操作。中斷觸發(fā)掃描過(guò)程,一個(gè)掃描結(jié)束后信號(hào)都保存到WG[0]~WG[3]中。
本文采用的是標(biāo)準(zhǔn)韋根輸出,信號(hào)幀由26位二進(jìn)制數(shù)組成,幀格式如下:
奇偶校驗(yàn)判斷正確后,將變量中的數(shù)據(jù)去除校驗(yàn)位變成有效數(shù)據(jù);然后調(diào)用OSMboxPost函數(shù)發(fā)送消息,以通知其他任務(wù)處理。
4 結(jié) 論
本文的程序和硬件均在實(shí)際產(chǎn)品中調(diào)試通過(guò)。實(shí)驗(yàn)表明,在8個(gè)通道同時(shí)完成輸入連續(xù)的韋根信號(hào)的情況下,微控制器NXP2214不僅能夠全部正確接收讀卡器的韋根數(shù)據(jù),還能同時(shí)完成處理TCP/IP、液晶顯示以及其他任務(wù),達(dá)到了設(shè)計(jì)要求。