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