帶自舉功能的DSP外設(shè)擴(kuò)展模塊設(shè)計(jì)
摘要:TMS320VC54x系列DSP(Digital Signal processor)沒(méi)有AD、DA等常用外設(shè)且缺少程序存儲(chǔ)器,故其應(yīng)用系統(tǒng)通常需進(jìn)行外設(shè)擴(kuò)展模塊與自舉模塊設(shè)計(jì),針對(duì)傳統(tǒng)解決方案將兩個(gè)模塊分別實(shí)現(xiàn)存在擴(kuò)展器件多、系統(tǒng)集成度不高等問(wèn)題,本文提出了一種帶自舉功能的DSP外設(shè)擴(kuò)展模塊。該模塊通過(guò)將C8051F330單片機(jī)作為唯一的外擴(kuò)芯片,利用其片F(xiàn)LASH存儲(chǔ)DSP自單程序代碼,并采用其片上AD、DA實(shí)現(xiàn)DSP的外設(shè)擴(kuò)展。實(shí)驗(yàn)表明本文提出的DSP外設(shè)擴(kuò)展模塊合理可行。
本文引用地址:http://2s4d.com/article/201610/308143.htmTMS320VC54x系列DSP由于具有快速運(yùn)算能力,其指令執(zhí)行速度最高可達(dá)160 MIPS,因此在消費(fèi)電子、通信等領(lǐng)域應(yīng)用廣泛。但此系列DSP片上沒(méi)有AD、DA等工業(yè)常用外設(shè),常需要對(duì)其進(jìn)行外設(shè)擴(kuò)展模塊設(shè)計(jì),另外,此系列DSP也沒(méi)有FLASH、EEPROM等便于改寫(xiě)的片內(nèi)程序存儲(chǔ)器,掉電后不能保存用戶(hù)程序代碼,因此還需要對(duì)其擴(kuò)展自舉模塊。文獻(xiàn)給出了不同的DSP外設(shè)擴(kuò)展模塊設(shè)計(jì)方案,而文獻(xiàn)則給出了不同的DSP自舉模塊設(shè)計(jì)方案,上述將外設(shè)擴(kuò)展模塊與自舉模塊分別實(shí)現(xiàn)的設(shè)計(jì)方案,存在外擴(kuò)器件較多、集成度不高、成本較高等問(wèn)題。為此,文中提出了一種帶自舉功能的DSP外設(shè)擴(kuò)展模塊,該模塊僅用外擴(kuò)一個(gè)芯片,就能一體實(shí)現(xiàn)DSP的外設(shè)擴(kuò)展與自舉,具有擴(kuò)展器件少、系統(tǒng)集成度高、穩(wěn)定性好、成本較低等特點(diǎn)。
1 方案設(shè)計(jì)
文中提出的DSP外設(shè)擴(kuò)展模塊,借助C8051F330豐富的片上外設(shè)資源對(duì)DSP實(shí)現(xiàn)10位AD、DA擴(kuò)展,同時(shí)利用C8051F330片內(nèi)FLASH存儲(chǔ)DSP用戶(hù)程序代碼,并用標(biāo)準(zhǔn)串行總線實(shí)現(xiàn)自舉,模塊原理框圖如圖1所示。圖1中虛線框部分為本文設(shè)計(jì)的DSP外設(shè)擴(kuò)展模塊,其中C8051F330是本模塊的唯一外擴(kuò)芯片。一方面,目標(biāo)板中的DSP通過(guò)將其片上McBSP0配置為SPI工作模式,實(shí)現(xiàn)控制C8051F330片上的AD采樣數(shù)據(jù)或DA形成模擬波形,從而完成對(duì)DSP的AD、DA外設(shè)擴(kuò)展。上述SPI通信中,TMS320VC5416為主設(shè)備,C8051F330為從設(shè)備。另外,考慮到只有SPI主設(shè)備才能啟動(dòng)數(shù)據(jù)傳輸,為了將SPI從設(shè)備的AD采樣數(shù)據(jù)第一時(shí)間傳輸給SPI主設(shè)備,SPI從設(shè)備通過(guò)I/O引腳觸發(fā)SPI主設(shè)備的外部中斷,從而使SPI主設(shè)備啟動(dòng)SPI通信。另一方面,利用C8051F330片內(nèi)FLASH的剩余空間(從0x0BB7到0x1FF)存儲(chǔ)DSP程序代碼,同時(shí),利用5個(gè)I/O引腳模擬DSP的標(biāo)準(zhǔn)串行自舉接口,從而實(shí)現(xiàn)DSP的標(biāo)準(zhǔn)串行自舉模塊設(shè)計(jì)。DSP有多種自舉模式,標(biāo)準(zhǔn)串行自舉模式占用的DSP硬件資源最少,故本文模塊選用了標(biāo)準(zhǔn)串行自舉模式。但在此模式下,自舉模塊必須與DSP的McBSP0接口相連,為了進(jìn)一步減少對(duì)DSP硬件資源的占用,本文將C8051F330的SPI接口與5個(gè)I/O引腳模擬的標(biāo)準(zhǔn)串行自舉接口復(fù)用DSP的McBSP0接口。
2 硬件設(shè)計(jì)
文中提出的DSP外設(shè)擴(kuò)展模塊硬件主要包括如下幾部分:自舉模塊,SPI通信模塊,外設(shè)擴(kuò)展模塊以及C8051F330最小系統(tǒng)模塊,考慮到介紹C8051F330最小系統(tǒng)的文獻(xiàn)較多,此處不再贅述,這里主要給出其他模塊的硬件連接關(guān)系,如圖2所示。
圖2虛線框1為自舉模塊(標(biāo)準(zhǔn)串行自舉方式)引腳連接關(guān)系,其中與標(biāo)準(zhǔn)串行自舉直接相關(guān)的DSP引腳為接收時(shí)鐘信號(hào)(BCLKR0),多通道緩沖接收引腳(BDR0),幀同步接收信號(hào)(BFSR0),因?yàn)镈SP與單片機(jī)啟動(dòng)不同步,因此需要設(shè)置RS引腳在單片機(jī)上電后對(duì)DSP進(jìn)行復(fù)位,設(shè)置XF引腳在DSP準(zhǔn)備好后觸發(fā)單片機(jī)的INT0啟動(dòng)自舉操作。另外,DSP的自舉方式有多種,且標(biāo)準(zhǔn)串行自舉模式比較靠后,所以必須在硬件上對(duì)DSP的INT2、INT3和BIO引腳進(jìn)行上拉保護(hù),從而確保DSP上電后,其片上Bootloader進(jìn)入標(biāo)準(zhǔn)串行自舉方式。圖2虛線框2給出了SPI通信模塊中DSP與單片機(jī)對(duì)應(yīng)引腳連接關(guān)系,本文采用4線主從方式實(shí)現(xiàn)SPI通信,DSP的BCKLX0為時(shí)鐘控制引腳,BFSX0為片選引腳,為了最大限度節(jié)省DSP硬件資源,自舉模塊和SPI通信模塊中的BDR0引腳進(jìn)行了復(fù)用。為使主從設(shè)備更好地進(jìn)行通信,SPI通信過(guò)程中設(shè)置了主從握手函數(shù),P16為握手中斷控制引腳。圖2虛線框3說(shuō)明了外設(shè)擴(kuò)展模塊引腳連接關(guān)系,外設(shè)擴(kuò)展模塊介紹了AD、DA及參考電壓硬件設(shè)置,P17引腳為AD波形輸入端,實(shí)驗(yàn)時(shí)配置為模擬輸入,開(kāi)漏輸出。P01引腳為DA的波形輸出端,P00引腳為參考電壓接入引腳,配置為模擬輸入,開(kāi)漏輸出,AD采樣必須設(shè)置電壓基準(zhǔn),C8051F330的電壓基準(zhǔn)可以被配置為外部電壓基準(zhǔn)、內(nèi)部電壓基準(zhǔn)或電源電壓VDD,為了使硬件設(shè)計(jì)更加簡(jiǎn)單,本文選用內(nèi)部電壓基準(zhǔn)。
3 軟件設(shè)計(jì)
DSP外設(shè)擴(kuò)展模塊軟件設(shè)計(jì)分為兩部分:代碼轉(zhuǎn)換程序設(shè)計(jì)和C8051F330單片機(jī)程序設(shè)計(jì)。代碼轉(zhuǎn)換程序是為了將用戶(hù)在DSP開(kāi)發(fā)軟件CCS下編譯生成的.out文件(一種公共目標(biāo)文件格式,包含了許多冗余信息)去除冗余信息,變?yōu)槿坑杏玫腄SP自舉文件格式,具體過(guò)程參見(jiàn)文獻(xiàn)。下面詳細(xì)介紹單片機(jī)程序的具體內(nèi)容。
C8051F330單片機(jī)程序包括四部分:DSP與單片機(jī)之間的通信協(xié)議、兩次初始化程序、自舉程序及片上外設(shè)驅(qū)動(dòng)程序。C8051F330單片機(jī)程序主流程圖如圖3所示,圖3中,單片機(jī)系統(tǒng)上電后,程序便開(kāi)始運(yùn)行,首先要禁止看門(mén)狗,防止程序跑飛,因DSP啟動(dòng)速度比C8051F330快,故自舉前,先要初始化單片機(jī)端口并復(fù)位DSP,等待DSP的XF引腳觸發(fā)P07中斷后啟動(dòng)自舉操作。自舉完成后,就要利用C8051F330單片機(jī)的片上AD、DA對(duì)DSP進(jìn)行外設(shè)擴(kuò)展,DSP的外設(shè)擴(kuò)展是建立在SPI通信基礎(chǔ)上的,通信前,需要對(duì)單片機(jī)進(jìn)行第二次初始化,避免引腳沖突。通信過(guò)程中,單片機(jī)與DSP需要通過(guò)SPI_handshaking()函數(shù)進(jìn)行握手,握手成功后,單片機(jī)便可通過(guò)SPI通道讀取DSP發(fā)送的AD命令或DA命令進(jìn)行AD DA擴(kuò)展。
3.1 DSP與單片機(jī)之間通信協(xié)議
為了使DSP和單片機(jī)進(jìn)行良好的通信,本文設(shè)置了SPI通信協(xié)議,具體如圖4所示,下面對(duì)此協(xié)議的制定作簡(jiǎn)要介紹。協(xié)議中一幀數(shù)據(jù)包括4個(gè)字節(jié):第一字節(jié)為起始標(biāo)志字節(jié),值為0xC5,對(duì)應(yīng)的二進(jìn)制數(shù)為11000011,起始標(biāo)志字節(jié)在數(shù)據(jù)傳輸中發(fā)揮著巨大作用,它標(biāo)志著傳輸數(shù)據(jù)是否有意義;第二字節(jié)為命令字節(jié),DSP在數(shù)據(jù)傳輸過(guò)程中處于兩種命令狀態(tài),如果第二字節(jié)的6—7位值為01,則DSP處于AD命令狀態(tài),6—7位為10則DSP處于DA命令狀態(tài);第三、四字節(jié)分別裝載的是10位AD、DA高、低8位數(shù)據(jù)。
3.2 兩次初始化程序設(shè)計(jì)
單片機(jī)需要進(jìn)行兩次初始化,第一次初始化是在自舉之前,包括端口初始化、時(shí)鐘初始化和中斷初始化,第二次初始化是在自舉之后,在第一次初始化的基礎(chǔ)上還需進(jìn)行SPI初始化、AD初始化、DA初始化,兩次初始化期間,時(shí)鐘只能初始化一次,否則單片機(jī)初始化不會(huì)成功。時(shí)鐘初始化時(shí)被配置為24.5 MHz。之所以要對(duì)單片機(jī)進(jìn)行兩次初始化是因?yàn)樽耘e和SPI通信過(guò)程中,DSP的McBSP0接口進(jìn)行了復(fù)用,而且這樣設(shè)計(jì)可以節(jié)省更多的硬件資源,降低設(shè)計(jì)成本。下面主要介紹下AD、DA和SPI初始化過(guò)程。AD初始化如下所示:
AMXOP =0x0F://P17引腳為AD輸入端
AMXON =0x11://單端工作方式
ADCOCF =0x00;//右對(duì)齊
ADCOCN =0x80;//使能ADC
DA初始化如下所示:IDAOCN=0xF2;//使能DA
SPI初始化如下所示:SPIOCN=0x05;//使能SPI
SPIOCKR=0x5;//SPIO時(shí)鐘速率為1.8432 MHz
3.3 自舉程序設(shè)計(jì)
標(biāo)準(zhǔn)串行自舉邏輯時(shí)序圖如圖5所示,圖5指出模擬標(biāo)準(zhǔn)串行自舉只需3個(gè)I/O引腳,但本文卻用5個(gè)I/O口,其中另設(shè)了XF和RS引腳。因?yàn)镈SP啟動(dòng)速度與單片機(jī)不同步,因此需設(shè)置RS引腳讓單片機(jī)上電后對(duì)DSP進(jìn)行復(fù)位,設(shè)置XF引腳讓DSP觸發(fā)單片機(jī)的外部中斷INT0,啟動(dòng)自舉模塊。圖5中的邏輯時(shí)序圖說(shuō)明為保證DSP正常運(yùn)行,以下條件必須滿(mǎn)足:傳輸每個(gè)字節(jié)數(shù)據(jù)需至少保證40個(gè)DSP時(shí)鐘周期的延時(shí)時(shí)間,單片機(jī)時(shí)鐘(BCLKR0)不可超過(guò)DSP時(shí)鐘頻率的1/2。發(fā)送幀同步信號(hào)之前應(yīng)先發(fā)送2個(gè)時(shí)鐘信號(hào),幀同步信號(hào)置高期間發(fā)送1.5個(gè)時(shí)鐘,幀同步信號(hào)置底后開(kāi)始按位發(fā)送數(shù)據(jù),一字節(jié)數(shù)據(jù)發(fā)送完成后再發(fā)送兩個(gè)時(shí)鐘信號(hào)。
3.4 片上外設(shè)驅(qū)動(dòng)程序設(shè)計(jì)
片上外設(shè)驅(qū)動(dòng)程序包括SPI通信驅(qū)動(dòng)程序、AD與DA驅(qū)動(dòng)程序。SPI通信是DSP外設(shè)擴(kuò)展模塊的軟件基礎(chǔ),通信前,單片機(jī)先拉低DPS_INT0觸發(fā)DSP的外部中斷INT0,再讀取一個(gè)無(wú)意義的SPI數(shù)據(jù)和DSP進(jìn)行握手,握手成功后,主從設(shè)備便可通過(guò)SPI通道互相寫(xiě)數(shù)據(jù)或讀取對(duì)方發(fā)送dat[]中的數(shù)據(jù)。SPI通信讀函數(shù)驅(qū)動(dòng)程序如下所示,程序中SPIODAT為SPI0數(shù)據(jù)寄存器,C8051F330在SPI通信中通過(guò)讀SPIODAT來(lái)讀取接收緩沖器中的數(shù)據(jù)。
SPI通信讀函數(shù)驅(qū)動(dòng)程序:
C8051F330內(nèi)部AD有6種轉(zhuǎn)換啟動(dòng)方式,本文采用寫(xiě)‘1’ 到ADCOCN的ADOBUSY位,向ADOBUSY寫(xiě)‘1’方式提供了用軟件控制ADCO轉(zhuǎn)換的能力。ADOBUSY位在轉(zhuǎn)換期間被置‘1’,轉(zhuǎn)換結(jié)束后賦‘0’。單片機(jī)初始化完成,給C8051F330的P17端口輸入正弦波(由于實(shí)驗(yàn)設(shè)備仍需完
善,正弦波頻率限制在0~20 Hz,幅值限制在0~3.3 V)進(jìn)行AD采樣,本文采用查詢(xún)方式進(jìn)行AD采樣,使用AD中斷標(biāo)志(ADOINT)來(lái)不斷查詢(xún)AD轉(zhuǎn)換是否完成。當(dāng)ADOINT位為邏輯‘1’時(shí),AD數(shù)據(jù)寄存器(ADCOH:ADCOL)中的轉(zhuǎn)換結(jié)果有效。采樣完后,單片機(jī)通過(guò)SPI通道將采樣值傳送給DSP,DSP通過(guò)SPI_READ0函數(shù)從SPI讀取采樣數(shù)據(jù)。C8051F330片內(nèi)DA為電流模式數(shù)/模轉(zhuǎn)換器(IDAC)。IDAC的最大輸出電流可以有3種不同的設(shè)置:0.5 mA、1mA和2 mA,此程序中設(shè)置為2 mA。DA轉(zhuǎn)換時(shí),DSP通過(guò)SPI_WRITE()函數(shù)將需要進(jìn)行DA的數(shù)據(jù)寫(xiě)給單片機(jī),最終單片機(jī)再將DSP發(fā)來(lái)的數(shù)據(jù)進(jìn)行DA處理,AD采樣驅(qū)動(dòng)程序如下所示:
4 實(shí)驗(yàn)
為驗(yàn)證本文設(shè)計(jì)模塊的可行性,下面以TMS320VC5416目標(biāo)板為例,設(shè)計(jì)了如下兩個(gè)實(shí)驗(yàn):一、16位標(biāo)準(zhǔn)串行自舉實(shí)驗(yàn);二、片上AD與DA擴(kuò)展實(shí)驗(yàn)。
實(shí)驗(yàn)一:16位標(biāo)準(zhǔn)串行自舉實(shí)驗(yàn)
實(shí)驗(yàn)一是為了驗(yàn)證C8051F330單片機(jī)可否成功實(shí)現(xiàn)TMS320VC5416處理器的16位標(biāo)準(zhǔn)串行自舉。為了使實(shí)驗(yàn)結(jié)果便于觀察,本文用CCS編寫(xiě)了液晶顯示程序,顯示內(nèi)容為“基于C8051F330的DSP自舉模塊液晶顯示自舉測(cè)試等”。由上文可知,須將編寫(xiě)程序代碼在CCS軟件下編譯生成.out文件,再將.out文件去除冗余信息,變?yōu)槿坑杏玫腄SP程序代碼,移植到C8051F330單片機(jī)中才能使用,結(jié)合所編寫(xiě)的自舉程序上電運(yùn)行后可得到如圖6所示結(jié)果,從圖6中可以觀察到DSP完全可以脫離仿真器,從C8051F330單片機(jī)讀取DSP用戶(hù)程序,以上結(jié)果說(shuō)明自舉模塊設(shè)計(jì)合理可行。
實(shí)驗(yàn)二:AD與DA擴(kuò)展實(shí)驗(yàn)
實(shí)驗(yàn)二是為了驗(yàn)證在完全脫離DSP仿真器的情況下,利用C8051F330片上AD、DA對(duì)TMS320VC5416進(jìn)行片上外設(shè)擴(kuò)展的可行性。實(shí)驗(yàn)中由TMS320VC5416控制C8051F330片上的AD、DA采樣數(shù)據(jù)或形成模擬波形,為了使實(shí)驗(yàn)結(jié)果便于觀察,用示波器對(duì)AD采樣前的波行與DA重構(gòu)波形進(jìn)行雙通道跟蹤,實(shí)驗(yàn)時(shí),通過(guò)DSP試驗(yàn)箱給單片機(jī)的P17口接入頻率為20 Hz、最大幅值為1.31 V的正弦波,如圖7中黃色波形所示。單片機(jī)的P01端口為DA輸出端,C8051F330的DA輸出為電流輸出,因?yàn)橐檬静ㄆ黠@示DA輸出波形,所以需在P01端口接入電阻,將電流輸出轉(zhuǎn)換為電壓輸出,DA輸出波形如圖7中藍(lán)色波形所示。觀察示波器波形,可看到DA重構(gòu)波形與AD采樣前的波形吻合。以上結(jié)果說(shuō)明,該模塊設(shè)計(jì)的利用C8 051F330片上外設(shè)資源對(duì)TMS320VC5416處理器進(jìn)行AD與DA擴(kuò)展是合理可行的。
5 結(jié)束語(yǔ)
文中提出了一種帶自舉功能的DSP外設(shè)擴(kuò)展模塊,該模塊利用C8051F330的片內(nèi)FLASH存儲(chǔ)DSP用戶(hù)程序,并利用5個(gè)I/O引腳模擬的標(biāo)準(zhǔn)串行總線實(shí)現(xiàn)DSP自舉,從而以一種占用DSP硬件資源最少的方式解決了DSP掉電后不能保存用戶(hù)程序的問(wèn)題;利用C8051F330的片上外設(shè)資源對(duì)DSP進(jìn)行10位AD、DA外設(shè)擴(kuò)展,同時(shí)C8051F330的SPI接口同標(biāo)準(zhǔn)串行自舉接口復(fù)用DSP的McBSP0接口,從而在實(shí)現(xiàn)DSP外設(shè)擴(kuò)展的同時(shí),最大限度地節(jié)省了DSP的硬件資源。該模塊用一塊單片機(jī)一體實(shí)現(xiàn)DSP外設(shè)擴(kuò)展及自舉,具有擴(kuò)展器件少、集成度高、系統(tǒng)穩(wěn)定性好、成本低廉等優(yōu)點(diǎn)。另外,C8051F330的FLASH內(nèi)存為8K字節(jié),除去單片機(jī)程序,可存儲(chǔ)5K字節(jié)左右的DSP程序,因此該模塊可廣泛用于程序代碼不超過(guò)5K字節(jié)的DSP系統(tǒng)中。
評(píng)論