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