基于CPLD的DSP多SPI端口通信設(shè)計
引言
本文引用地址:http://m.butianyuan.cn/article/257461.htm目前在電氣自動化控制裝置中,廣泛采用各種通信手段以完成上層與底層控制器、底層控制器以及控制芯片之間的信息傳遞,并實現(xiàn)相應(yīng)的控制功能;各種通信功能的設(shè)計與實現(xiàn)已成為自動化裝置設(shè)計的重要組成部分。本文以一種超聲波電機運動控制裝置為應(yīng)用背景,討論了基于CPLD的DSP控制芯片多SPI端口通信技術(shù)。
串行同步外設(shè)端口(SPI)通常也稱為同步外設(shè)端口,具有信號線少、協(xié)議簡單、傳輸速度快的特點,大量用在微控制器與外圍芯片的通信中。目前SPI通信方式已被普遍接受,帶有SPI端口的芯片越來越多,如Flash、RAM、A/D轉(zhuǎn)換、LED顯示、控制專用 DSP芯片等。
本文介紹一種采用運動控制專用DSP芯片DSP56F801設(shè)計的超聲波電機運動控制裝置。由于該超聲波電機需要采用兩相四路對稱.PWM信號來實現(xiàn)驅(qū)動控制,而DSP芯片無法直接產(chǎn)生所需PWM信號,采用軟件方法又會占用大量的DSP計算時間,于是設(shè)計了基于可編程邏輯器件(CPLD)的對稱PWM信號發(fā)生器。該信號發(fā)生器在DSP的控制下,可以實現(xiàn)輸出兩相PWM控制信號的占空比及相位差調(diào)節(jié);同時采用具有SPI接口的可編程振蕩器LTC6903,實現(xiàn)在DSF。控制下的PWM控制信號頻率調(diào)節(jié)[1]。由此可見,為了實現(xiàn)DsP對PwM控制信號占空比、相位差及頻率的控制,需要采用適當(dāng)?shù)耐ㄐ欧绞綄崿F(xiàn)DSP與CPLD及LTC6903之間的控制信息傳遞。DSP56F801芯片具有一個SPI通信端口。本文在分析SPI 數(shù)據(jù)傳輸時序關(guān)系的基礎(chǔ)上,設(shè)計并實現(xiàn)了基于CPLD的多SPI接口通信。
1 工作原理
SPI是一個同步協(xié)議接口,所有的傳輸都參照一個共同的時鐘。在同一個SPI端口可以實現(xiàn)一個主機芯片與多個從機芯片的相連,這時主機通過觸發(fā)從設(shè)備的片選輸入引腳來選擇從設(shè)備,沒有被選中的從設(shè)備將不參與SPI傳輸。SPI主使用4個信號:主機輸出/從機輸人(MOSI)、主機輸入/從機輸出(MISO)、串行時鐘信號SCLK和外設(shè)芯片選擇信號(SS)。主機和外設(shè)都包含一個串行移位寄存器,主機通過向它的SPI串行移位寄存器寫入一個字節(jié)來發(fā)起一次傳輸。寄存器是通過MOSI引腳將字節(jié)傳送給從設(shè)備,從設(shè)備也將自己移位寄存器中的內(nèi)容通過MISO信號線返回給主機。這樣,兩個移位寄存器中的內(nèi)容就被交換了。外設(shè)的寫操作和讀操作是同步完成的,因此SPI成為一個很有效的串行通信協(xié)議[2]。
SPI端口的通信網(wǎng)絡(luò)結(jié)構(gòu)框圖如圖1所示。為了使信號發(fā)生器輸出可調(diào)頻、調(diào)壓和調(diào)相輸出的兩相四路PWM波,需要DSP向CPLD電路輸出參數(shù)。這4個控制參數(shù)的傳遞是在小型的通信網(wǎng)絡(luò)中實現(xiàn)的。在該網(wǎng)絡(luò)中,DSP的SPl只是進行數(shù)據(jù)輸出端口的寫操作,即輸出電壓控制字、相位控制字和頻率控制字。數(shù)據(jù)流程:主機DSP向cPLD傳輸數(shù)據(jù),在傳輸數(shù)據(jù)時,數(shù)據(jù)在MOSI引腳上輸出,同時數(shù)據(jù)在時鐘信號的作用下實現(xiàn)同步移位輸出。由于不需要從機向主機回送任何數(shù)據(jù),主機在數(shù)據(jù)傳輸結(jié)束之后,結(jié)束這次傳送。由于sPI端口工作時沒有應(yīng)答信號,并且數(shù)據(jù)在發(fā)送時無需校驗位,所以要求主、從器件的數(shù)據(jù)發(fā)送與接收必須完全符合設(shè)定的SPI時序要求,否則數(shù)據(jù)傳輸將出現(xiàn)錯誤。
2 基于CPLD的串口SPI設(shè)計
2.1移位寄存器設(shè)計
本設(shè)計為一個12位的SPI串行接收端口。圖1中移位寄存器是由12個D觸發(fā)器和1個計數(shù)器組成的,實現(xiàn)移位接收和串并轉(zhuǎn)換。在傳輸過程中,先使能移位寄存器和計數(shù)器,啟動傳輸,同時計數(shù)器開始計數(shù)。當(dāng)計數(shù)到16時,進位端輸出一個脈沖寬度的高電平脈沖,進行數(shù)據(jù)鎖存,其電路如圖2所示。
實驗中為保證時序正確,測出了使能信號和計數(shù)器進位脈沖的輸出時序,如圖3、圖4 所示。其中十六進制計數(shù)器采用的是上升沿計數(shù),在第16個上升沿到來時,跳變?yōu)楦唠娖?,保證數(shù)據(jù)的正確接收鎖存。
2.2鎖存器設(shè)計
鎖存器的工作特點:當(dāng)gate引腳上輸入高電平信號時,鎖存器工作開始鎖存總線上的數(shù)據(jù);當(dāng)gate引腳上是低電平時,鎖存器不工作,即當(dāng)總線上的數(shù)據(jù)發(fā)生變化時,鎖存器的輸出不發(fā)生變化。由于本設(shè)計需要多個參數(shù)傳輸,通過地址選擇的方法把這3個數(shù)據(jù)從一條總線上區(qū)分出來,設(shè)置傳輸數(shù)據(jù)的低兩位為地址選擇位。地址選擇位經(jīng)移位寄存器,串并轉(zhuǎn)換,作為三輸入與門的兩個輸人端,進行地址選擇。每次16位的數(shù)據(jù)移位結(jié)束,數(shù)據(jù)穩(wěn)定時,在計數(shù)器高電平作用下,相應(yīng)gate的引腳上輸出高電平,數(shù)據(jù)鎖存入相應(yīng)的鎖存器。例如,可以設(shè)置低兩位是“ll”時,DSP送入PWM電路的是ll位的調(diào)相信號;當(dāng)?shù)蛢晌辉O(shè)置成“01”時,DSP送入PwM電路的是10位調(diào)節(jié)A 相占空比的信號;當(dāng)?shù)蛢晌辉O(shè)置成“10”時,。DSP送入PWM電路的是10位調(diào)節(jié)B相占空比的信號。由此可以在電路中設(shè)計一個三輸入的與門,當(dāng)16位數(shù)據(jù)傳輸完畢,即在相應(yīng)gate的引腳上輸出高電平時,數(shù)據(jù)存入對應(yīng)的鎖存器,如圖5所示。
評論