黃 亮
(江蘇省數(shù)字化電化學(xué)加工重點實驗室(常州工學(xué)院),江蘇 常州 213002)
隨著芯片技術(shù)的發(fā)展,直接數(shù)字頻率合成器(Direct Digital Frequency Synthesis簡稱 DDS或DDFS)的發(fā)展已經(jīng)很成熟,它不僅成本低、功耗小、集成化程度高,而且產(chǎn)生的信號具有分辨率高、頻率轉(zhuǎn)換時間短、控制靈活和全數(shù)字化等諸多優(yōu)點,因此已成為近年來頻率合成領(lǐng)域中的主流技術(shù)。AD9850是AD公司出品的一款采用CMOS工藝的低功耗專用DDS芯片,采用28腳SSOP封裝。AD9850內(nèi)含可編程DDS系統(tǒng)和高速模擬比較器,能通過并行或串行方式實現(xiàn)全數(shù)字編程控制的頻率合成。CY7C68013A是 Cypress符合USB2.0協(xié)議的高性能51內(nèi)核單片機,它可通過USB2.0協(xié)議進行高速數(shù)據(jù)傳輸,另外還帶有UART等通信端口。利用這些通信端口與外部設(shè)備通信,讓51內(nèi)核了解外部設(shè)備的具體要求,通過串行方式控制AD9850產(chǎn)生外部設(shè)備所要求的頻率輸出,實現(xiàn)數(shù)字化的DDS控制。模塊化設(shè)計可非常方便地與各種外部設(shè)備接駁,也方便在此基礎(chǔ)進行軟、硬件的二次開發(fā)。
系統(tǒng)硬件框圖如圖1,電源系統(tǒng)為各工作單元提供5 V和3.3 V直流工作電壓。5 V電壓可由USB提供,也可利用外接直流電源經(jīng)7805穩(wěn)壓得到。CY7C68013A單片機系統(tǒng)負(fù)責(zé)接收處理來自USB和兩串口的數(shù)據(jù),控制AD9850輸出特定的頻率,并不斷刷新LCD12832液晶顯示實時的參數(shù)信息,按鍵可用于DDS頻率或其他參數(shù)的手動輸入。AD9850輸出電流波形經(jīng)過電流電壓轉(zhuǎn)換、低通濾波后可獲得兩路相位正交的正弦波信號,正弦波經(jīng)內(nèi)部高速模擬比較器又可獲得兩路相位反相的矩形波輸出。
圖1 硬件框圖
CY7C68013A有3種封裝,這里采用具有雙串口的100引腳QFP封裝,圖2為CY7C68013A最小系統(tǒng)簡圖,沒有連接的引腳和IO口沒有標(biāo)出,所有的VCC腳都接到+3.3 V電源,所有的GND都接到電源負(fù)極。AVCC和AGND可以分別通過一個電感接VCC和GND。使用頻率為24 MHz外部晶振以適應(yīng) UBS 2.0的通信速率。DPLUS和DMINUS引腳為USB的通信端口,通過一個 MINIUSB母口與計算機連接,實現(xiàn)和USB主機的高速數(shù)據(jù)傳輸。復(fù)位RESET和喚醒WAKEUP都通過一RC電路接到電源和負(fù)極,為方便固件程序調(diào)試,在復(fù)位端增加一輕觸按鍵連接一小阻值電阻R15到電源負(fù)極,用來實現(xiàn)手動復(fù)位。AT24LC64用來存儲USB固件程序,根據(jù)要求A0地址線需接高電平。跳線JP2和JP3用于在調(diào)試階段隔離AT24C64的數(shù)據(jù)線和時鐘線,跳線開路時可直接通過Cypress官方提供的控制臺程序?qū)⒐碳螺d到單片機內(nèi)部運行;固件完善后可短接跳線,將IIC文件下載到此存儲器內(nèi)進行C2方式加載運行。系統(tǒng)3.3 V電源由5 V電源經(jīng)LM1117-3.3穩(wěn)壓后得到。
圖2 CY7C68013A最小系統(tǒng)
外圍硬件電路如圖3,其中圖3(a)為串口0引出接口,通過CZ7使用3.3 V TTL電平和其他嵌入式系統(tǒng)通信。圖3(b)為LCD液晶接口,液晶采用深圳晶聯(lián)訊公司的JLX12832點陣液晶模塊,此款液晶使用ST7565作為驅(qū)動IC,可使用串行方式進行連接,只占用5根IO口線,節(jié)省了硬件資源。圖3(c)是串口1接口,使用MAX3232電平轉(zhuǎn)換后,通過CZ5實現(xiàn)與外部的RS232通信,方便與具有RS232接口的工控系統(tǒng)通信。圖3(d)為鍵盤接口,按鍵采用獨立式鍵盤,每個按鍵占用1個IO口線,可根據(jù)具體需要增減按鍵數(shù)目。圖3(e)是 AD9850芯片及其外圍元件,AD9850采用125 MHz有源晶振作為時鐘源,與單片機的接口采用串行方式,為此需將D0和D1接到高電平,D2~D6接到低電平,D7用作串行通信數(shù)據(jù)線。IOUT和IOUTB輸出兩路正弦電流信號,流經(jīng)R29和R26后得到電壓信號,通過C40和C36耦合輸出,方波的產(chǎn)生需將兩路正弦電壓信號輸入到內(nèi)部高速模擬比較器,在比較器的VOUTP和VOUTN端得到兩路反相的方波信號。
圖3 外圍硬件電路
圖4 流程圖
軟件采用模擬操作系統(tǒng)的方式編寫,程序流程圖如圖4,USB在上電設(shè)備枚舉過程中會進行初始化。初始化LCD后顯示復(fù)位時的默認(rèn)頻率,同時控制AD9850輸出該初始頻率,之后主循環(huán)開始輪詢USB、串口0以及串口1的有效標(biāo)志位。如相應(yīng)的標(biāo)志位為1,說明在該通信模式下收到有效數(shù)據(jù),外部有改變輸出頻率的請求,主循環(huán)檢測到標(biāo)志位后便根據(jù)要求改變DDS的輸出頻率,同時清除該標(biāo)志位。圖3(b)、(c)、(d)分別為自定義UBS請求串口0、串口1的中斷流程圖,在各自通信協(xié)議內(nèi)進行數(shù)據(jù)的接收和協(xié)議的解析,扮演了消息投遞者的角色。一旦檢測到有效數(shù)據(jù)流便設(shè)置相應(yīng)的標(biāo)志位,相當(dāng)于把消息投遞給主程序,主程序不斷查詢這些標(biāo)志位,一旦收到消息便及時處理,更新DDS頻率輸出,并不斷刷新LCD顯示,使顯示信息和輸出頻率保持一致。如需手動輸入頻率或其他工作參數(shù)可在主循環(huán)中加入掃鍵程序。
Cypress公司提供了比較完善的USB固件代碼范例,只需在固件范例的基礎(chǔ)上增加相應(yīng)的功能代碼便可實現(xiàn)具體的用戶功能。在main()函數(shù)中有一個TD_Init()函數(shù),用來初始化各種變量和外圍硬件。用戶只要把自己的各類初始化功能代碼添加到此函數(shù)的結(jié)尾部分,單片機復(fù)位后便會調(diào)用這些初始化代碼,具體C語言程序?qū)崿F(xiàn)如下:
用戶的任務(wù)函數(shù)則放在while(TRUE)主循環(huán)的TD_Poll()中,主程序會不斷地循環(huán)執(zhí)行,C語言程序?qū)崿F(xiàn)如下:
對于COM0和COM1的通信,都采用中斷方式接收外部數(shù)據(jù),每收到1個字節(jié)便會產(chǎn)生對應(yīng)的中斷。只要自定義一種數(shù)據(jù)流格式,規(guī)定開頭字節(jié)、結(jié)尾字節(jié)、數(shù)據(jù)長度及校驗字節(jié),串口中斷程序便可根據(jù)此格式處理收到的數(shù)據(jù)。開始先查找起始字節(jié),如找到則連續(xù)接收后面固定長度的數(shù)據(jù),如最后一個字節(jié)正好為規(guī)定的結(jié)尾字節(jié),則進行數(shù)據(jù)校驗,校驗正確后設(shè)置相應(yīng)有效標(biāo)志,中間有任意一個環(huán)節(jié)出錯則丟棄全部數(shù)據(jù),然后重新進行起始字節(jié)的查找。
CY7C68013A的USB中斷由固件統(tǒng)一管理,每個USB設(shè)備都必須具備端點0,以控制傳輸?shù)姆绞矫杜e設(shè)備,USB協(xié)議使用差錯控制和重試機制來保證數(shù)據(jù)傳輸?shù)恼_性和可靠性,因此采用控制傳輸通信是非常可靠的,可以省去校驗過程。具體實現(xiàn)過程是在固件的SetupCommand()函數(shù)中添加自定義請求,相關(guān)C語言程序如下:
自定義的REQ_DDS是一個宏代換,在FX2.H頭文件中進行定義,需要注意的是不能和標(biāo)準(zhǔn)請求宏發(fā)生沖突,若0xA1沒有被使用,就可以這樣定義:#define REQ_DDS 0xA1。
上電后液晶顯示初始化界面,并輸出1 000 Hz頻率。
在進行USB接口調(diào)試時,可以用Cypress控制臺程序向設(shè)備發(fā)送A1請求,后面跟上需要產(chǎn)生的頻率信息,如A1 00 00 01 23 45,可以解析為產(chǎn)生12.345 kHz的頻率輸出,發(fā)送A1的DDS自定義請求后,就可以用示波器在正弦波輸出端測量到該頻率信號。
串口0和串口1的調(diào)試方法基本相同,只是串口0可以用3.3 V的TTL232直接進行調(diào)試,串口1需用RS232方式,上位機都采用串口調(diào)試軟件,約定每次發(fā)送16個字節(jié),以0xE1開頭,0xEA結(jié)尾。0xE1后面跟上頻率信息,0xEA前1個字節(jié)即倒數(shù)第2個字節(jié)為校驗字節(jié),它等于前面14個字節(jié)累加的和,用以簡單的數(shù)據(jù)校驗。需要產(chǎn)生12.345 kHz頻率時,可以用串口調(diào)試軟件發(fā)送如下16個字節(jié):
其中4A為其前14個字節(jié)的累加和。以HEX方式發(fā)送到設(shè)備后,同樣可以觀測到正弦波形,同時可以在AD9850的比較器輸出端觀測到同頻率的兩路反相方波信號。
該DDS信號發(fā)生器結(jié)合了比較高級的CY7C68013A單片機,實現(xiàn) USB2.0、TTL232以及RS232的通信控制,非常方便與各種外設(shè)進行互聯(lián),也方便在此基礎(chǔ)進行軟、硬件的進一步開發(fā),信號輸出穩(wěn)定,性價比高,正弦頻譜單純凈,頻率分辨率高。
[1]Cypress Semiconductor Corporation.EZ-USB ? FX2LPTMUSB Microcontroller High-Speed USB Peripheral Controller[EB/OL].[2012 -11 -01].http://www.cypress.com/?docID=34060.
[2]薛園園,趙建領(lǐng).USB應(yīng)用開發(fā)寶典[M].北京:人民郵電出版社,2011.
[4]趙燕徐,鄭茹瓊,蔡順燕.基于AD9850的可編程信號源的設(shè)計[J].信息技術(shù),2010(7):116-118.
[3]許德志,丁才成.一種基于DDS技術(shù)的信號發(fā)生器研究與實現(xiàn)[J].電子科技,2010(3):60-61.