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