基于PSoC的車用單片機(jī)試驗(yàn)裝置設(shè)計(jì)
引言
汽車單片機(jī)教學(xué)實(shí)驗(yàn)通常需要信號(hào)發(fā)生器、示波器等很多輔助設(shè)備,這不但給實(shí)驗(yàn)及教學(xué)帶來(lái)很多的麻煩,而且造價(jià)昂貴。
為了減少實(shí)驗(yàn)輔助設(shè)備,降低實(shí)驗(yàn)成本,本文在PSoC CY8C29466芯片的基礎(chǔ)上,開(kāi)發(fā)了一套集成有PWM輸出、不同頻率采集、UATR通信并可通過(guò)液晶LCD顯示相應(yīng)數(shù)據(jù)的裝置。該裝置在汽車電子單片機(jī)教學(xué)中可代替現(xiàn)行的大多數(shù)實(shí)驗(yàn)輔助設(shè)備,并可簡(jiǎn)化實(shí)驗(yàn)的操作步驟、降低實(shí)驗(yàn)成本,從而給實(shí)驗(yàn)及教學(xué)帶來(lái)很大方便。
1 系統(tǒng)組成結(jié)構(gòu)
SoC(System on Chip)是將整個(gè)電子系統(tǒng)集成在同一芯片上的片上系統(tǒng),或稱為系統(tǒng)級(jí)芯片。2000年,Cypress公司推出了完全基于通用IP核,由可編程選擇來(lái)構(gòu)成產(chǎn)品的SoC。這種可編程選擇的SoC取名為PSoC,它是由多種數(shù)字和模擬器件、微處理器、處理器外圍單元、外圍接口電路構(gòu)成的,在周圍集成的模擬和數(shù)字外圍器件陣列都是動(dòng)態(tài)可配置,而且利用芯片內(nèi)部的可編程互聯(lián)陣列,還可以有效地配置片上模擬和數(shù)字資源,從而構(gòu)成可編程片上系統(tǒng)。該裝置主要由PSoC CY8C29466芯片并擴(kuò)展以簡(jiǎn)單的外圍接口電路構(gòu)成。可通過(guò)PSoC芯片的開(kāi)發(fā)工具PSoC Designer4.3軟件來(lái)測(cè)量未知方波的頻率(0~200kHz)、輸出可調(diào)頻率和占空比的方波(0~500kHz)、進(jìn)行UART通信并顯示相應(yīng)的數(shù)據(jù)(00H~FFH)等功能。
本裝置的特點(diǎn)是將測(cè)量頻率、PWM輸出和UART通信集成到了一起,而且測(cè)量頻率的范圍比較大,且輸出的PWM精度高,最重要的是可在硬件上節(jié)省一部份外圍設(shè)備,因而縮減了印刷板的空間和功耗。
1.1 未知方波信號(hào)頻率的測(cè)量
該功能可用來(lái)監(jiān)測(cè)外部的事件和輸入信號(hào)。當(dāng)外部事件發(fā)生或信號(hào)發(fā)生變化時(shí),將在指定的輸入捕捉引腳上發(fā)生一個(gè)指定的沿跳變(上升沿),定時(shí)器捕捉到該特定的沿跳變后,捕獲事件將會(huì)把計(jì)數(shù)器當(dāng)前的數(shù)值傳輸?shù)綌?shù)據(jù)寄存器中,這樣,捕獲值就可以直接從數(shù)據(jù)讀出。然后,通過(guò)記錄輸入信號(hào)的跳變沿,就可用該軟件算出輸入信號(hào)的周期。
在其他的單片機(jī)上測(cè)量方波信號(hào)的頻率也可運(yùn)用定時(shí)器的輸入捕捉功能,由于定時(shí)器都是固化好的。且一般為8~16位,而PSoC芯片內(nèi)置8~32位的定時(shí)器和計(jì)數(shù)器,并且時(shí)鐘最高可達(dá)24MHz,故可任意調(diào)用以達(dá)到較高的測(cè)量范圍。
若定時(shí)器的系統(tǒng)時(shí)鐘SYSCLOCK為24 MHz,分頻之后為FCLOCK=SYSCLOCK/368.3,而周期寄存器的值PERIOD為65536.0;那么,采樣的數(shù)值將為:FSAMPLE=FCLOCK/PERIOD。這樣,當(dāng)定時(shí)器有溢出時(shí),頻率fFreqValue的計(jì)算公式如下:
f=(NFlow×65535+NTick)FSAMPLE;
而定時(shí)器沒(méi)有溢出時(shí)的計(jì)算公式為:
f=NTickFCLOCK/NCount;
式中,NFlow是定時(shí)器溢出的次數(shù),NTick是定時(shí)器當(dāng)前計(jì)數(shù)值,NCount是計(jì)數(shù)器當(dāng)前計(jì)數(shù)值。
整個(gè)系統(tǒng)選用的是數(shù)字模塊中的16位定時(shí)器和24位計(jì)數(shù)器,以及模擬模塊中的比較器。定時(shí)器的捕捉使能端與比較器相連,計(jì)數(shù)器的主要作用是為定時(shí)器提供一個(gè)采樣頻率。比較器的作用是將一個(gè)模擬量電壓信號(hào)與一個(gè)參考電壓相比較,并在二者幅度相等的附近輸出一個(gè)電壓的躍變信號(hào),然后再相應(yīng)輸出高電平或低電平。比較器的應(yīng)用既節(jié)省了外圍設(shè)備,又提高了測(cè)量的準(zhǔn)確性,同時(shí)也給測(cè)量帶來(lái)了很大的方便。
1.2 輸出可調(diào)頻率和占空比的方波
脈寬調(diào)制波(PWM)的輸出是利用定時(shí)器的比較功能。通過(guò)更改比較寄存器(CompareValue)值在0到周期(Period)寄存器填充值之間變化,定時(shí)器就可以輸出一定占空比的方波。當(dāng)比較條件滿足后,定時(shí)器輸出高電平;而在Period寄存器自動(dòng)裝入預(yù)置數(shù)的后一個(gè)周期,定時(shí)器將輸出低電平。所以,定時(shí)器輸出波形的占空比可用下式表示:
Duty=n/(N+1)
式中,Duty為輸出波形的占空比,n為比較寄存器的填充值,N為周期寄存器的填充值。
在計(jì)算定時(shí)時(shí)間時(shí),可設(shè)置定時(shí)器應(yīng)用程序接口以修改計(jì)數(shù)器Period值,其輸出周期值與填充周期的值之間的關(guān)系如下式所示:
T=t(N+1)
關(guān)鍵字:PSoC 車用單片機(jī)試驗(yàn)式中,t為定時(shí)器計(jì)一次數(shù)所需要的時(shí)間,N為周期寄存器的填充值,N加1是因?yàn)橛?jì)數(shù)器是計(jì)數(shù)到0結(jié)束而不是到1結(jié)束。因此,如果要實(shí)現(xiàn)可調(diào)占空比和周期的輸出,其硬件電路只需要兩個(gè)電位計(jì)即可,而在軟件編程中只要將采集到的A/D數(shù)據(jù)寄存器的值經(jīng)過(guò)計(jì)算之后再賦給定時(shí)器預(yù)置周期寄存器和對(duì)應(yīng)通道的輸出比較寄存器中,并通過(guò)計(jì)算得出相應(yīng)的頻率和占空比,就可通過(guò)調(diào)節(jié)電位計(jì)輸出不同周期和占空比的方波。其PWM輸出原理示意圖如圖1所示。
要實(shí)現(xiàn)可調(diào)頻率和占空比并不難,但要達(dá)到一定的范圍和精度,使用一般單片機(jī)就比較困難了。由于CY8C29466型PSoC芯片的定時(shí)器為8~32位,A/D轉(zhuǎn)換器為6~14位可調(diào),所以,本裝置選擇了12位ADCINC和24位計(jì)數(shù)器,并選擇調(diào)節(jié)精度較高的電位計(jì),因?yàn)檫@樣可以輸出較高范圍和精度的PWM波形。
在與汽車電子有關(guān)的教學(xué)和實(shí)驗(yàn)中,PWM波的應(yīng)用范圍很廣,電動(dòng)機(jī)控制中也廣泛使用PWM,此外,在發(fā)動(dòng)機(jī)電子控制中,噴油器噴射油量的控制一般也是由PWM控制的。
1.3 UART通信和相應(yīng)數(shù)據(jù)的顯示
通過(guò)UART (Universal Asynchronous Receiver/Transmitter)可實(shí)現(xiàn)串行通信中的異步數(shù)據(jù)傳輸,它是一個(gè)全雙工異步收發(fā)器,采用RS232通信協(xié)議,可通過(guò)兩根電纜同時(shí)接收和發(fā)送數(shù)據(jù)。PSoC中的UART用戶模塊是PSoC數(shù)字模塊,該模塊接收和發(fā)送的字符為一個(gè)數(shù)據(jù),數(shù)據(jù)包括4部分:起始位、數(shù)據(jù)位、奇偶校驗(yàn)位、停止位。另外,UART數(shù)據(jù)模塊也支持可編程時(shí)鐘、發(fā)送和接收中斷以及輪詢操作。UART數(shù)字模塊也可提供應(yīng)用程序接口(API)程序,以給編程帶來(lái)方便。它可由一個(gè)串行接收器和一個(gè)串行發(fā)送器組成,分別為RX UART和TX UART。
(1)通用異步接收器RX-UART
異步接收器需要有關(guān)通信類型的數(shù)字PSoC模塊,它有自己的RX緩沖區(qū)寄存器、RX移位寄存器以及RX控制寄存器??梢允褂肬ART用戶模塊固件中的API程序來(lái)對(duì)RX控制寄存器進(jìn)行初始化和配置。本裝置的RX初始化包括UART無(wú)奇偶校驗(yàn)、滿足RX寄存器條件的中斷使能。
當(dāng)檢測(cè)到RX輸入起始位到來(lái)時(shí),RX模塊中的除8時(shí)鐘開(kāi)始啟動(dòng),然后開(kāi)始對(duì)輸人的數(shù)據(jù)位進(jìn)行異步接收。而在下一個(gè)8位時(shí)鐘的上升沿到來(lái)時(shí),輸入的數(shù)據(jù)將被接收并送到RX移位寄存器中。當(dāng)在下一個(gè)時(shí)鐘的上升沿接收到停止位以后,RX控制寄存器中的RX寄存器滿的這一位被置位,同時(shí)接受中斷使能,并在中斷中記錄異步通信所接收到的值,然后在LCD中顯示。
(2)通用異步發(fā)送器TX-UART
異步發(fā)送器也需要一個(gè)通信類型的數(shù)字PSoC模塊。它有自己的TX緩沖區(qū)寄存器、TX移位寄存器以及TX控制寄存器??梢允褂肬ART用戶模塊固件API程序來(lái)對(duì)TX控制寄存器進(jìn)行初始化和配置。本裝置的TX初始化包括UART無(wú)奇偶校驗(yàn)、RX寄存器不產(chǎn)生中斷(輪詢操作發(fā)送數(shù)據(jù))。
當(dāng)TX控制寄存器的使能位被置位時(shí),TX模塊中的除8時(shí)鐘開(kāi)始啟動(dòng),此時(shí)在鍵盤中將會(huì)得到一個(gè)數(shù)據(jù)。把此數(shù)據(jù)送往LCD顯示,再把此數(shù)據(jù)字節(jié)通過(guò)API函數(shù)寫入到TX緩沖區(qū)寄存器中,然后清除TX控制寄存器的TX緩沖區(qū)空狀態(tài)位,再在下一個(gè)時(shí)鐘的上升沿到來(lái)時(shí)將緩沖區(qū)的數(shù)據(jù)發(fā)送到移位寄存器,然后將TX控制寄存器的TXBuffer Empty狀態(tài)位置位,即可完成數(shù)據(jù)發(fā)送。
2 系統(tǒng)軟件設(shè)計(jì)
單片機(jī)系統(tǒng)初始化后,首先運(yùn)行UART通信并顯示,然后由鍵盤中斷進(jìn)行選擇。每次進(jìn)入按鍵中斷便進(jìn)行了一次選擇,以選擇所需要執(zhí)行的另一個(gè)子程序。選擇完所有的子程序后系統(tǒng)又跳回UART通信子程序,如此循環(huán)。顯示程序便可把所執(zhí)行的子程序所得到的結(jié)果,用串口通信方式輸出到LCD并以顯示相應(yīng)的值。其軟件程序流程圖如圖2所示。
3 實(shí)驗(yàn)
將p[0]3與示波器相連接,可以觀察示波器所顯示的波形和LCD中顯示的周期和占空比,然后調(diào)節(jié)電位計(jì),即可觀察示波器和數(shù)碼管顯示是否保持一致。
把信號(hào)發(fā)生器與p[0]7和地線相連,并輸入一定頻率的方波,可以觀察信號(hào)發(fā)生器顯示的頻率值與LCD顯示的值,之后,可通過(guò)改變信號(hào)發(fā)生器的輸出頻率。來(lái)觀察兩個(gè)值的變化是否保持一致。
本實(shí)驗(yàn)需要硬件MAX232和軟件程序“串口調(diào)試助手V2.1”的支持。利用MAX232芯片可將串口通訊總線信號(hào)轉(zhuǎn)換為單片機(jī)可以接收和發(fā)送的信號(hào),從而使單片機(jī)與PC微機(jī)相連來(lái)實(shí)現(xiàn)串口通訊。在“串口調(diào)試助手V2.1”下邊的發(fā)送框中輸入任意數(shù)字或字符,然后選擇自動(dòng)或手動(dòng)發(fā)送,即可觀察LCD的接收區(qū)的顯示,然后調(diào)節(jié)裝置使其發(fā)送16進(jìn)制數(shù),最后就可以觀察軟件窗口上顯示區(qū)所顯示的數(shù)據(jù)。
4 結(jié)束語(yǔ)
多次實(shí)驗(yàn)表明:本裝置中LCD的顯示值均與其它實(shí)驗(yàn)設(shè)備的值相符,且誤差很小,響應(yīng)時(shí)間很短,穩(wěn)定性好,可靠性強(qiáng)且各項(xiàng)工作穩(wěn)定,可以達(dá)到較高的精度要求和測(cè)量范圍。所以,基于PSoC教學(xué)裝置的開(kāi)發(fā)具有較高的實(shí)用性和可靠性,而且體積小,經(jīng)濟(jì)性較好,可在教學(xué)和實(shí)驗(yàn)中實(shí)現(xiàn)一機(jī)多用,故可降低實(shí)驗(yàn)成本。