本文主要是關(guān)于tms320c6748的相關(guān)介紹,并著重對(duì)tms320c6748異步接口訪問相關(guān)問題進(jìn)行了詳盡的闡述。
tms320c6748
德州儀器 (TI) 宣布推出具有無與倫比連接選項(xiàng)與定點(diǎn)和浮點(diǎn)功能的四款全新處理器 —— TMS320C6748,同時(shí)這四款產(chǎn)品也是業(yè)界功耗最低的浮點(diǎn)數(shù)字信號(hào)處理器 (DSP),可充分滿足高能效、連通性設(shè)計(jì)對(duì)高集成度外設(shè)、更低熱量耗散以及更長(zhǎng)電池使用壽命的需求。
上述器件結(jié)合了一系列獨(dú)特的應(yīng)用優(yōu)化特性和外設(shè),能顯著降低工業(yè)、通信、醫(yī)療診斷和音頻等多種產(chǎn)品的總體系統(tǒng)成本。對(duì)諸如測(cè)量測(cè)試、公共安全無線電、音樂特效以及智能家居傳感器等需要高速數(shù)據(jù)傳輸和高容量存儲(chǔ)的應(yīng)用而言,這些處理器不僅具備通用并行端口 (uPP),同時(shí)也是 TI 首批集成串行高級(jí)技術(shù)附件 (SATA)的器件。
這些產(chǎn)品擁有高達(dá) 300 MHz 的性能,可通過動(dòng)態(tài)電壓與頻率縮放 (DVFS) 及多種省電模式管理片上電源。若配合 TI 電源管理軟件和配套模擬解決方案,開發(fā)人員無需成為節(jié)能技術(shù)專家即可優(yōu)化系統(tǒng),提高性能,降低功耗。為了簡(jiǎn)化設(shè)計(jì)工作,縮短開發(fā)時(shí)間,新產(chǎn)品都是引腳對(duì)引腳兼容,可與所有 TMS320C6000 器件實(shí)現(xiàn)代碼兼容,并配套提供低成本的實(shí)驗(yàn)板和功能齊備的評(píng)估板 (EVM)。
C6748 DSP 的關(guān)鍵特性與優(yōu)勢(shì):
·最低成本與最低功耗的 C6000 處理器以及業(yè)界最低功耗的浮點(diǎn) DSP 總功耗為 420mW,在特定使用情況下電壓為 1.0V時(shí)待機(jī)功耗為 7mW;
·待機(jī)功耗比市場(chǎng)上現(xiàn)有的浮點(diǎn) DSP 解決方案降低多達(dá) 9 倍;
·TI 首款集成 SATA 的處理器,可支持大容量數(shù)據(jù)存儲(chǔ);
·uPP 可實(shí)現(xiàn)與數(shù)模轉(zhuǎn)換器、FPGA 或其它 C6748處理器的高速連接;
·EMAC、多媒體卡/安全數(shù)據(jù)卡 (MMC/SD) 以及高速 USB 2.0/1.1 可全面滿足桌面、網(wǎng)絡(luò)或便攜式連接或存儲(chǔ)的需求;
·視頻端口能夠支持原始視頻的輸入輸出,而 LCD 控制器則使開發(fā)人員能夠方便地連接具有 VGA 分辨率的顯示屏;
·通過 DVFS 提供多個(gè)工作點(diǎn),可關(guān)閉不使用的外設(shè)并提供可選的 I/O 電壓,這些優(yōu)異特性有助于提高便攜性并降低產(chǎn)品的發(fā)熱量;
·配套提供的 TI TPS65070 電源管理產(chǎn)品可實(shí)施所有時(shí)序與默認(rèn)選項(xiàng),并可支持器件的低功耗模式;
·高達(dá) 300 MHz 的 C674x 內(nèi)核可為高精度及寬動(dòng)態(tài)范圍提供浮點(diǎn)工作能力以及能實(shí)現(xiàn)更高性能的定點(diǎn)工作能力;
·C6748 能實(shí)現(xiàn)引腳對(duì)引腳兼容,使客戶能采用同一軟件和硬件平臺(tái)擴(kuò)展整個(gè)產(chǎn)品系列;
·128 KB 至 448 KB 的片上存儲(chǔ)器可減少外部存儲(chǔ)器接入,并降低功耗。
德州儀器 (TI) 推出浮點(diǎn)功能的全新高性能處理器 —— TMS320C6748,這款芯片也是業(yè)界功耗最低的浮點(diǎn)數(shù)字信號(hào)處理器 (DSP),可充分滿足高能效、連通性設(shè)計(jì)對(duì)高集成度外設(shè)、更低熱量耗散以及更長(zhǎng)電池使用壽命的需求。不僅具備通用并行端口 (uPP),同時(shí)也是 TI 首批集成串行高級(jí)技術(shù)附件 (SATA)的器件。
廣州創(chuàng)龍推出的TL6748-EVM評(píng)估套件為開發(fā)者使用TI TMS320C6748處理器提供了完善的軟件開發(fā)環(huán)境,系統(tǒng)支持:裸機(jī)、SYS/BIOS、DSP/BIOS。提供參考底板原理圖,DSP C6748入門教程、豐富的Demo程序、完整的軟件開發(fā)包,以及詳細(xì)的C6748系統(tǒng)開發(fā)文檔,方便用戶快速評(píng)估TMS320C6748處理器、設(shè)計(jì)系統(tǒng)驅(qū)動(dòng)及其定制應(yīng)用軟件,也大大降低產(chǎn)品開發(fā)周期,讓客戶產(chǎn)品快速上市。主要面向電力、通信、工控、音視頻處理等數(shù)據(jù)采集處理行業(yè)。
TL6748-EVM評(píng)估套件是一個(gè)功能豐富的開發(fā)板,為嵌入式設(shè)計(jì)人員提供快捷簡(jiǎn)單的實(shí)踐方式來評(píng)估TMS320C674x系列處理器,是一個(gè)完整的實(shí)驗(yàn)評(píng)估平臺(tái)。
tms320c6748異步接口訪問相關(guān)問題
OMAPL138有多種地址數(shù)據(jù)總線如I2C、SPI、UART,這些接口能夠滿足一般的低速傳送要求,但是在高速協(xié)同中卻不能滿足數(shù)據(jù)傳輸?shù)男枨?。我們知道,并行?shù)據(jù)傳輸肯定要比串行傳輸快,TMS320C6748平臺(tái)上搭載了uPP(通用并行IO)。在Ti公司的66系列DSP中搭載了更高速的RapidIO接口,最高速率達(dá)10Gbps,相比TCPIP協(xié)議軟件開銷較低,與 FPGA互聯(lián)方便,是一種比較有前景的通信技術(shù)。
1、uPP硬件IO資源,通信時(shí)需要用到的管腳:
由上圖可看出uPP有兩個(gè)通道即通道A和通道B,通道A、B都具有各自START、ENABLE、WAIT、CLOCK信號(hào)控制管腳。而兩個(gè)十六位的數(shù)據(jù)管腳DATA[15:0]不直接對(duì)應(yīng)通道A、XDATA[15:0]也不直接對(duì)應(yīng)通道B。數(shù)據(jù)管腳DATA[15:0]、XDATA[15:0]與通道A、B的對(duì)應(yīng)關(guān)系是通過配置寄存器UPCTL來實(shí)現(xiàn)的。
UPCTL寄存器中的CHN、IWA、IWB決定A、B通道與DATA[15:0]、XDATA[15:0]的關(guān)系。IWA為高,A通道使用16bit數(shù)據(jù),反之則為8bit數(shù)據(jù),IWB同理;CHN為高,A、B通道均使能,反之只使用A通道。
2、時(shí)鐘選擇
無論是同步還是異步,都必須有時(shí)鐘源。uPP是同步的,發(fā)送方提供時(shí)鐘源。
傳輸模式使用內(nèi)部時(shí)鐘:
I/O Clock = Transmit Clock/(2 × (UPICR.CLKDIVn + 1))
上圖的transmit Clock通過查看相關(guān)的手冊(cè)可知是鎖相環(huán)得出的,來自PLL0_SYSCLK2,再將其二分頻后再經(jīng)過(UPICR.CLKDIV+1)分頻,得到CLOCK pin的頻率。
3、數(shù)據(jù)格式
uPP支持任何字長(zhǎng)介于8~16bit的數(shù)據(jù),顯然,要操作8bit、16bit很簡(jiǎn)單,那么對(duì)于數(shù)據(jù)字長(zhǎng)介于8bit~16bit之間的數(shù)據(jù)應(yīng)該怎么操作呢。下圖給出了12bit數(shù)據(jù)的打包方式。
Right-Justify, Zero Extend –很簡(jiǎn)單,就是字面上的意思,右對(duì)齊,高位空出的位清零。
Right-Justify, Sign Extend –右對(duì)齊,高位的狀態(tài)取決于最高bit的狀態(tài),當(dāng)為1那么所有空出的高位補(bǔ)1,例如ABCh(101010111100),最高位為1,轉(zhuǎn)換為16bit數(shù)據(jù)為FABCh。
Left-Justify, Zero Fill–左對(duì)齊,低位空出的位補(bǔ)零。
4、模式選擇
5、數(shù)據(jù)觸發(fā)方式
單倍數(shù)據(jù)傳輸:(SDR)數(shù)據(jù)信號(hào)只能在時(shí)鐘上升沿或者下降沿觸發(fā)有效
雙倍數(shù)據(jù)傳輸:(DDR)數(shù)據(jù)信號(hào)在時(shí)鐘上升沿和下降沿都觸發(fā)有效
uPP具有2個(gè)獨(dú)立的DMA模塊,分別稱為DMA模塊I,DMA模塊Q。
通道A、B在傳輸數(shù)據(jù)時(shí)是通過DMA模塊來實(shí)現(xiàn)的,DMA模塊與通道的對(duì)應(yīng)關(guān)系如下圖:
6、DMA專用術(shù)語(yǔ)Windows Address、Byte Count、Line Count、Line Offset Address在內(nèi)存中關(guān)系。
上圖很清楚的告訴我們Windows Address只指其起始地址,Line Offset Address是指其偏移地址。然后一個(gè)疑問是為什么在圖中看來,Line1和Line2永遠(yuǎn)都分開著,Line與Line之間是連續(xù)存放的還是無間隙的?
仔細(xì)閱讀datasheet會(huì)發(fā)現(xiàn),在述說這段的文字中總強(qiáng)調(diào)起始地址最好設(shè)置為aligned to a 64-bit (that is, the3 LSBs must equal 0)。再一琢磨,如果起始地址達(dá)到了alignedto a 64-bit 的要求,那Line與Line就是無縫連接了。而且在實(shí)際應(yīng)用中,Line與Line之間都是連續(xù)存放的,因?yàn)榕渲肈MA channel 的寄存器UPTCR只提供了64Bytes 128Bytes 256Bytes選項(xiàng)。
7、時(shí)序圖
(1)單倍數(shù)據(jù)發(fā)送
(2)單倍數(shù)據(jù)接收
(3)雙倍數(shù)據(jù)接收
上圖是單通道接收SDR模式,看似好好的時(shí)序圖,START信號(hào)高電平使能整個(gè)uPP接收,但是datasheet中卻表示START的極性是可以通過STARTx bit in UPICR來修改的,即START可以低電平觸發(fā)使能uPP。給人一種感覺:start、enalbe、wait信號(hào)又是可以禁止又是可以使能的,很容易迷惑人。到底怎么配置能達(dá)到通信要求,參考時(shí)序圖,還是發(fā)送方接收方不一樣配置?
回頭一想,start、enable的極性都可以自己定義,只要發(fā)送和接收配置成一致就行了,因?yàn)閡PP大多時(shí)候用于與adc的無縫連接,雖然adc都是高電平觸發(fā)使能的,但也沒準(zhǔn)有的adc是下降沿使能觸發(fā)的。即adc也可能是高電平使能也可能是低電平使能。start、enable信號(hào)極性使能的可配置型使得應(yīng)用adc更加自由不再拘束了。
8、程序
(1)uPP初始化文件
/*
*uPP.h
*
* Created on: 2015-7-2
* Author: JJS
*/
#ifndef UPP_H_
#define UPP_H_
#define M 256
Uint32 Buffer_Trans[1000];
Uint32 Buffer_Recv[1000];
/*
extern voidsetup_uPP_receive(void)
{
uppRegs-》UPPCR= (CSL_UPP_UPPCR_SWRST_RESET《《CSL_UPP_UPPCR_SWRST_SHIFT);//寄存器復(fù)位
delay(10);
uppRegs-》UPPCR= (CSL_UPP_UPPCR_SWRST_RUNNING《《CSL_UPP_UPPCR_SWRST_SHIFT);//離開復(fù)位模式
uppRegs-》UPCTL=0;
uppRegs-》UPICR=0;
uppRegs-》UPIVR=0;
uppRegs-》UPIES=0;
uppRegs-》UPDLB=0;
uppRegs-》UPPCR=0;
uppRegs-》UPTCR=0;
uppRegs-》UPCTL= (
(CSL_UPP_UPCTL_IWA_16BIT 《《 CSL_UPP_UPCTL_IWA_SHIFT)|//數(shù)據(jù)傳輸16Bit
(CSL_UPP_UPCTL_DRA_SINGLE 《《 CSL_UPP_UPCTL_DRA_SHIFT)|//單數(shù)據(jù)模式
(CSL_UPP_UPCTL_DPWA_FULL 《《CSL_UPP_UPCTL_DPWA_SHIFT)|//全數(shù)傳輸
(CSL_UPP_UPCTL_CHN_ONE 《《 CSL_UPP_UPCTL_CHN_SHIFT)|//雙通道
(CSL_UPP_UPCTL_MODE_RECEIVE 《《 CSL_UPP_UPCTL_MODE_SHIFT ));//A接
uppRegs-》UPICR= (( 0《《CSL_UPP_UPICR_CLKDIVB_SHIFT)|//通道的時(shí)鐘分頻
(0《《CSL_UPP_UPICR_CLKDIVA_SHIFT)|
(1《《CSL_UPP_UPICR_STARTA_SHIFT)|
(1《《CSL_UPP_UPICR_ENAA_SHIFT));
uppRegs-》UPTCR= (( CSL_UPP_UPTCR_TXSIZEB_64B《《CSL_UPP_UPTCR_TXSIZEB_SHIFT)|//數(shù)據(jù)發(fā)送門限
(CSL_UPP_UPTCR_TXSIZEA_64B《《CSL_UPP_UPTCR_TXSIZEA_SHIFT)|
(CSL_UPP_UPTCR_RDSIZEQ_64B《《CSL_UPP_UPTCR_RDSIZEQ_SHIFT)|
(CSL_UPP_UPTCR_RDSIZEI_64B《《CSL_UPP_UPTCR_RDSIZEI_SHIFT));
uppRegs-》UPIVR= ( (0x0AAA 《《CSL_UPP_UPIVR_VALB_SHIFT)| //空閑狀態(tài)下固定的數(shù)據(jù)值
(0x0AAA 《《CSL_UPP_UPIVR_VALA_SHIFT));
uppRegs-》UPIES= ((CSL_UPP_UPIES_EOLQ_SET《《CSL_UPP_UPIES_EOLQ_SHIFT)|//中斷標(biāo)志
(CSL_UPP_UPIES_EOWQ_SET《《CSL_UPP_UPIES_EOWQ_SHIFT)|
(CSL_UPP_UPIES_EOLI_SET《《CSL_UPP_UPIES_EOLI_SHIFT)|
(CSL_UPP_UPIES_EOWI_SET《《CSL_UPP_UPIES_EOWI_SHIFT));
//
uppRegs-》UPDLB=((CSL_UPP_UPDLB_BA_DISABLE《《CSL_UPP_UPDLB_BA_SHIFT )|
(CSL_UPP_UPDLB_AB_DISABLE《《CSL_UPP_UPDLB_AB_SHIFT));
uppRegs-》UPPCR= ((CSL_UPP_UPPCR_EN_ENABLE《《CSL_UPP_UPPCR_EN_SHIFT)|//使能接口
(CSL_UPP_UPPCR_SOFT_ENABLE《《CSL_UPP_UPPCR_SOFT_SHIFT)|
(CSL_UPP_UPPCR_RTEMU_ENABLE《《CSL_UPP_UPPCR_RTEMU_SHIFT));
}
*/
void setup_uPP_LoopBack(void)
{
uppRegs-》UPPCR= (CSL_UPP_UPPCR_SWRST_RESET《《CSL_UPP_UPPCR_SWRST_SHIFT);//寄存器復(fù)位
delay(300);
uppRegs-》UPPCR= (CSL_UPP_UPPCR_SWRST_RUNNING《《CSL_UPP_UPPCR_SWRST_SHIFT);//離開復(fù)位模式
uppRegs-》UPCTL =0;
uppRegs-》UPICR=0;
uppRegs-》UPIVR=0;
uppRegs-》UPIES=0;
uppRegs-》UPDLB =0;
uppRegs-》UPPCR=0;
uppRegs-》UPTCR=0;
uppRegs-》UPCTL = ((CSL_UPP_UPCTL_IWB_16BIT 《《 CSL_UPP_UPCTL_IWB_SHIFT)|//數(shù)據(jù)傳輸16Bit
(CSL_UPP_UPCTL_IWA_16BIT 《《 CSL_UPP_UPCTL_IWA_SHIFT)|//數(shù)據(jù)傳輸16Bit
(CSL_UPP_UPCTL_DRB_SINGLE 《《 CSL_UPP_UPCTL_DRB_SHIFT)|//單數(shù)據(jù)模式
(CSL_UPP_UPCTL_DRA_SINGLE 《《 CSL_UPP_UPCTL_DRA_SHIFT)|//單數(shù)據(jù)模式
(CSL_UPP_UPCTL_DPWB_FULL 《《 CSL_UPP_UPCTL_DPWB_SHIFT)|//全數(shù)傳輸
(CSL_UPP_UPCTL_DPWA_FULL 《《CSL_UPP_UPCTL_DPWA_SHIFT)|//全數(shù)傳輸
(CSL_UPP_UPCTL_CHN_TWO 《《 CSL_UPP_UPCTL_CHN_SHIFT)|//雙通道
(CSL_UPP_UPCTL_MODE_DUPLEX1 《《 CSL_UPP_UPCTL_MODE_SHIFT ));//A發(fā)B接
uppRegs-》UPICR= (( 2《《CSL_UPP_UPICR_CLKDIVB_SHIFT)|//通道的時(shí)鐘分頻
(2《《CSL_UPP_UPICR_CLKDIVA_SHIFT)|
// (2《《CSL_UPP_UPICR_STARTA_SHIFT)|//開始信號(hào)(僅配置接收)
// (2《《CSL_UPP_UPICR_ENAA_SHIFT))|//使能信號(hào)(僅配置接收)
(2《《CSL_UPP_UPICR_STARTB_SHIFT)|//開始信號(hào)(僅配置接收)
(2《《CSL_UPP_UPICR_ENAB_SHIFT));//使能信號(hào)(僅配置接收);
uppRegs-》UPTCR= ((CSL_UPP_UPTCR_TXSIZEB_64B《《CSL_UPP_UPTCR_TXSIZEB_SHIFT)|//數(shù)據(jù)發(fā)送門限
(CSL_UPP_UPTCR_TXSIZEA_64B《《CSL_UPP_UPTCR_TXSIZEA_SHIFT)|
( CSL_UPP_UPTCR_RDSIZEQ_64B《《CSL_UPP_UPTCR_RDSIZEQ_SHIFT)|
(CSL_UPP_UPTCR_RDSIZEI_64B《《CSL_UPP_UPTCR_RDSIZEI_SHIFT));
uppRegs-》UPIVR= ( (0x0AAA 《《CSL_UPP_UPIVR_VALB_SHIFT)| //空閑狀態(tài)下固定的數(shù)據(jù)值
(0x0AAA 《《CSL_UPP_UPIVR_VALA_SHIFT));
uppRegs-》UPIES= ((CSL_UPP_UPIES_EOLQ_SET《《CSL_UPP_UPIES_EOLQ_SHIFT)|//中斷標(biāo)志
(CSL_UPP_UPIES_EOWQ_SET《《CSL_UPP_UPIES_EOWQ_SHIFT)|
(CSL_UPP_UPIES_EOLI_SET《《CSL_UPP_UPIES_EOLI_SHIFT)|
(CSL_UPP_UPIES_EOWI_SET《《CSL_UPP_UPIES_EOWI_SHIFT));
uppRegs-》UPDLB =((CSL_UPP_UPDLB_BA_DISABLE《《CSL_UPP_UPDLB_BA_SHIFT )|//B發(fā)A收
(CSL_UPP_UPDLB_AB_ENABLE《《CSL_UPP_UPDLB_AB_SHIFT ));//A發(fā)B收
uppRegs-》UPPCR= ((CSL_UPP_UPPCR_EN_ENABLE《《CSL_UPP_UPPCR_EN_SHIFT)|//使能接口
(CSL_UPP_UPPCR_SOFT_ENABLE《《CSL_UPP_UPPCR_SOFT_SHIFT)|
(CSL_UPP_UPPCR_RTEMU_ENABLE《《CSL_UPP_UPPCR_RTEMU_SHIFT));
}
extern void uPP_Loopback()
{
/*******B通道*******/
// setup_uPP_reset();
uppRegs-》UPQD0= (Uint32)&Buffer_Recv;//發(fā)送數(shù)組地址,8Bit對(duì)齊
uppRegs-》UPQD1 = 0x00010000+M*4*3;//128*2*4*2
uppRegs-》UPQD2 = 0x00010000;
// setup_uPP_reset();
/*******A通道*******/
uppRegs-》UPID0= (Uint32)&Buffer_Trans;//接收數(shù)組地址,8Bit對(duì)齊
uppRegs-》UPID1 = 0x00010000+M*4*3;//128*2*4
uppRegs-》UPID2 = 0x00010000;
}
(2)uPP功能程序
extern void uPP_Resiver()
{
// setup_uPP_reset();
/*******A通道*******/
uppRegs-》UPID0= (Uint32)&Buffer_Recv;//接收數(shù)組地址,8Bit對(duì)齊
uppRegs-》UPID1 = 0x00010000+M*4*3;//128*2*4
uppRegs-》UPID2 = 0x00010000;
}
extern void uPP_Transfer()
{
// setup_uPP_reset();
/*******B通道*******/
uppRegs-》UPQD0= (Uint32)&Buffer_Recv;//接收數(shù)組地址,8Bit對(duì)齊
uppRegs-》UPQD1 = 0x00010000+M*4*3;//128*2*4
uppRegs-》UPQD2 = 0x00010000;
}
#endif /* UPP_H_ */
(3)uPP功能主程序
int jj=0;
int kk=0;
//float data;
//int PaRAM_event10_Buffer_Ping();
void main(void)
{
//setup_uPP_receive();
setup_uPP_LoopBack();
for(kk=0;kk《768;kk++)
{
Buffer_Trans[kk]=kk;
}
//uPP_Transfer();
//uPP_Resiver();
uPP_Loopback();
while(1);
}
結(jié)語(yǔ)
關(guān)于tms320c6748的相關(guān)介紹就到這了,如有不足之處歡迎指正。
相關(guān)閱讀推薦:基于TMS320C6416的USB數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)
-
SPI
+關(guān)注
關(guān)注
17文章
1688瀏覽量
91202 -
TMS320C6748
+關(guān)注
關(guān)注
3文章
42瀏覽量
13077
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論