《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 基于TMS320C6713的McBSP和EDMA實現串口通信

基于TMS320C6713的McBSP和EDMA實現串口通信

2009-05-19
作者:林培杰,黃比得,黃春暉

  摘 ?要: 針對TI公司的DSP芯片TMS320C6713,利用片上同步多通道緩沖串行口(McBSP)和增強型直接存儲器存取(EDMA)實現了串口通信功能。該方案解決了芯片只有同步串口而不能進行異步傳輸的問題,豐富了接口功能。
  關鍵詞: TMS320C6713;多通道緩沖串行口;增強型直接存儲器存??;串口通信

?

  數字信號處理器因其高性能及強大的數據處理能力,而在通信和信號處理、自動控制等領域得到越來越廣泛的應用。TMS320C6713(簡稱C6713)作為TI公司TMS320C6000系列的DSP,經常被用于圖像、語音處理等方面。在大多數應用系統中,往往需要實現DSP與PC機或者其他外設之間的異步串行通信。但C6713所提供的串口是同步串口,并不支持通用異步串行收發器標準[1-2]。本文設計了一種利用C6713已有的同步串口McBSP與EDMA實現異步串口通信的方法[3]。
1 硬件接口電路設計
  C6713有兩個McBSP(McBSP0,McBSP1)口,每個端口有7 個引腳,除數據收發引腳(DX、DR) 之外,還包括發送時鐘(CL KX)、接收時鐘(CL KR)、發送幀同步(FSX)、接收幀同步(FSR)和外部輸入時鐘(CL KS)等引腳,分別用于傳送數據、時鐘和幀同步,實現同步串行通信。
  當McBSP工作在串行口方式時,McBSP與串口的連接圖如圖1所示。對于McBSP 而言,不論外部如何連接,始終認為工作在同步方式下。當串口發送的數據中有幀信息和數據信息時,串口的TxD與McBSP的DR、FSR相連,就可以將數據線上的電平跳變直接引入到FSR端;當FSR檢測到數據線上一幀的第一個下跳沿時,McBSP認為幀同步信號到來。

?

2 C6713上的程序設計
  為了實現 McBSP與UART通信,本文使用過采樣的方法將同步串口模擬成異步串口進行通信,即將 McBSP發送接收數據的時鐘頻率設置為UART發送接收波特率的16倍。當McBSP發送數據時,軟件將每一位擴展為16 bit發送出去,即1被編碼為Oxffff,0被編碼為0x0000;當McBSP接收數據時,軟件同樣也要將接收到的每個16 bit字解碼還原為1 bit。這樣做使同步串口以比特為單位發送數據,可以很方便地模擬出異步串口的數據格式。同時,為了讓DSP不需要頻繁地對McBSP進行讀/寫操作,采用EDMA方式發送接收數據,提高了DSP的工作效率。McBSP與數據緩存之間的數據傳送由EDMA的通道14和通道15完成。通道14完成數據發送,通道15完成數據接收。
2.1 初始化程序
  初始化程序流程如圖2所示。在初始化程序中主要對McBSP及EDMA的一些參數進行設置。


  假設傳輸以8IN1的格式,發送接收都設為雙相幀模式,第一相是開始位和8個數據位,第二相是停止位。停止位編碼為8 bit字,以便于調整為1.5 bit停止位。應該對McBSP相關寄存器位的值初始化,以及EDMA進行相應操作[4]。
2.1.1 McBSP的參數配置
  (1)引腳控制寄存器(PCR)的配置
  FSXM=1 FSXP=1:允許采樣率發生器產生低電平有效的起始位;
  FSRM=0 FSRP=1:低電平有效的起始位用作McBSP 的接收幀同步輸入端;
  CLKRM=1 CLKXM=1:用內部采樣率發生器產生串行時鐘;
  PCR的值為0xB0C。
  (2)接收/發送控制寄存器(RCR/XCR)的配置
  (R/X)PHASE=1:使能雙相位幀傳輸模式;
  (R/X)FRLEN1=8:數據幀的前半部為9個字;
  (R/X)FRLEN2=1:數據幀的后半部為2個字;
  (R/X)WDLEN1=2:數據幀的前半部均為16 位的字;
  (R/X)WDLEN2=0:數據幀的后半部均為8位的字;
  (R/X)COMPAND=0:不進行壓縮;
  (R/X)FIG=1:忽略幀同步的數據傳輸;
  (R/X)DATDLY=0:數據傳輸不延遲;
  RCR和XCR的值都為0x11040840。
  (2)采樣率發生器寄存器(SRGR)的配置
  FSGM=0:當數據從DXR向XSR拷貝時產生接收幀同步信號;
  CLKSM=1:采樣率發生器的時鐘來源于內部CPU時鐘信號;
  CLKGDV=(McBSP的時鐘頻率)/(16×波特率)-1,時鐘頻率必須進行適當的配置,以便產生16 倍波特率的頻率。本文采用的C6713的CPU時鐘頻率為225 MHz,McBSP的時鐘頻率為112.5 MHz,波特率為57 600 b/s。此時計算得到CLKGDV=121;SRGR的值為0x20000079。
2.1.2 EDMA的設置
  (1)打開通道:采用CSL中的EDMA_open函數打開相應的通道,返回值賦給hEdma14、hEdma15。設置如下:
  hEdma14=EDMA_open(EDMA_CHA_XEVT1,EDMA_OPEN_
RESET);
  hEdma15=EDMA_open(EDMA_CHA_REVT1,EDMA_OPEN_
RESET);
  (2)分配鏈接表地址
  采用CSL中的EDMA_allocTable(-1)函數,系統將自動隨機地在參數RAM中專門為鏈接提供的地址空間內分配一個地址作為鏈接使用。函數的返回值就是分配到的地址,把它分別賦值給hEdmaLINK與hEdmaLINK2。設置如下:
  hEdmaLINK=EDMA_allocTable(-1);
  hEdmaLINK2=EDMA_allocTable(-1);
  設置源和目的地址:CSL中方便地提供了一個獲得McBSP的DRR和DXR寄存器的地址函數。只需要定義一個句柄MCBSP_Handle hMcbsp1,在主程序中必須先對hMcbsp1進行賦值,利用MCBSP_open函數打開一個McBSP通道,如:
  hMcbsp1=MCBSP_open(MCBSP_DEV1,MCBSP_OPEN_RESET);
  定義完hMcBSP1后就可以把hMcBSP1作為參數帶入MCBSP_getXmtAddr函數。引用結構體成員,就能對其賦值:
  edmaXmitParam.dst=MCBSP_getXmtAddr(hMcbsp1);
  edmaRcvParam.src=MCBSP_getRcvAddr(hMcbsp1);
  (3)配置EDMA鏈接
  根據CSL中提供的函數,采用以下方法進行鏈接:
  EDMA_config(hEdma14,&edmaXmitParam);
  EDMA_config(hEdma15,&edmaRcvParam);
  EDMA_link(hEdma14,hEdmaLINK);
  EDMA_link(hEdmaLINK,hEdmaLINK);
  EDMA_link(hEdma15,hEdmaLINK2);
  EDMA_link(hEdmaLINK2,hEdmaLINK2);
  (4)使能EDMA通道與關閉
  采用CSL提供的庫函數進行使能EDMA通道:
  EDMA_enableChannel(hEdma14);
  EDMA_enableChannel(hEdma15);
  同時,在EDMA使用完之后要用如下語句對其復位及關閉操作。
  EDMA_RSET(CIER,0x0);
  EDMA_close(hEdma14);
  EDMA_close(hEdma15);?
2.2 發送子程序
  發送時,用發送轉換子程序void ProcessTransmitData(void)把一塊數據轉變為UART發送的字,即擴展每個數據位為 16 bit的字。發送轉換子程序把這個發送字塊放人發送緩沖器,并且幀開始位(0x0000)和停止位(0xffff)也放在了特定的位置。發送子程序框圖如圖3所示。

2.3 接收子程序及容錯程序
  接收時,EDMA從 DRR寄存器中讀取擴展的數據,并把數據寫人接收緩沖區。當 EDMA將所有數據移人接收緩沖區后,會發出中斷給 CPU,然后軟件才調用接收轉換子程序void ProcessReceive-Data(void),把接收到的數據進行解碼。接收子程序框圖如圖4所示。

?


  值得注意的是:由于McBSP在接收數據過程中使用的是內部時鐘方式,接收的數據可能會有一定的偏移量,所以解碼過程應對數據進行容錯處理。調用一個數據邏輯判斷子程序unsigned short vote logic(unsigned short value),用以確定每一個數據位的值,每解碼一個字時該函數先屏蔽掉高6位和低6位,只檢測中間的4 bit數據;當等于1011、1100、1101、1110、1111、0111時,對應解碼為“1”,否則為“0”。
3 PC機程序設計
  本方案利用PC機與C6713進行串行通信。下傳時通過對數據文件讀取,將數據傳入DSP;上傳時在主機端把數據寫入文件進行保存。PC機軟件采用VC++平臺開發,其中包括以下幾部分功能[5]
  (1)串口初始化。采用CreateFile( )函數獲得串口設備的句柄,利用SetupComm( )函數設置緩沖區,并使用SetCommState( )重新初始化串口;
  (2)串口讀寫:調用ReadFile( )函數進行串口數據接收,調用WriteFile( )函數進行串口數據發送;
  (3)關閉串口:利用PurgeComm( )停止收發數據,清除緩沖區,調用CloseHandle(hCom)關閉串口設備句柄。
  在進行批量數據傳輸,例如靜態圖像傳輸時,還規定了主機與從機雙方必須共同遵守一些協議,包括控制命令、數據收送、超時重發等協議來完成通信,確保數據發送的完整性。
4 傳輸性能分析
??? 將系統應用于靜態圖像壓縮應用,以傳輸圖像為例,下載一幅256×256的BMP圖像,上傳壓縮后的JPEG圖像,一次傳輸的緩存區設置為2 048 B。先來討論下載過程中的實際用時,實際下載時間=數據傳輸時間+程序運行時間。圖像下載的理論用時可以用下式來表示:
  

  估算結果表明,實際用時大約是理論用時的1.5倍。對于實際用時大于理論用時并不難理解,實際下載時間=數據傳輸時間+程序運行時間。其中,程序運行時間又包括串口緩沖區的讀寫時間以指令執行時間。這里的緩沖區讀寫時間是雙方面的,包括上位機與DSP。在VC++中,由于使用的是MsCommon控件,在接收數據包時,這個控件通常用于傳輸控制命令,并不適用于做大量數據通信,需要手動進行延時350 ms才能完整地收到大小為2 048的數據包。這里的350 ms包括了等待每一幀2 048數據傳輸的時間0.28 s加上VC++中讀緩沖區的延時時間。對于下載來說,圖像大小正好是2 048的整數倍,可分為96次來傳輸。對于上傳JPEG數據流來說,壓縮后實際大小是8 455 B,并且4.13,但程序中可分為5次來傳輸。因此實際傳輸時間是5×0.28=1.4 s,再加上延時間與代碼執行時間就大概符合實際測試的2.2 s。
  通過C6713的McBSP和EDMA實現異步串行通信。目前,已經完成了軟硬件調試,并已將它應用靜態圖像數據的傳輸。試驗結果表明,該方法硬件結構簡單可靠,基本滿足實時性要求,取得了很好的效果,具有一定的應用價值。


參考文獻
[1] TMS320C6000 McBSP:UART,TI Incorporated[J/OL],2004.http://www.TI.com.
[2] TMS320C6000 Peripherals Reference Guide,TI Incorporated[J/OL],2004.http://www.ti.com.
[3] TMS320C6000 DSP enhanced direct memory access(EDMA)controller reference guide.TI Incorporated[J/OL].http://www.ti.com.
[4] 任麗香,馬淑芬,李方慧.TMS320C6000系列DSPs的原理與應用[M].北京:電子工業出版社,2000.
[5] 龔建偉,熊光明.VC++/Turbo C串口通信編程實踐[M].北京:電子工業出版社,2004.

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          亚洲国产欧美久久| 欧美精品三级在线观看| 樱桃成人精品视频在线播放| 国产精品免费福利| 在线成人av网站| 欧美成人久久| 欧美午夜精品久久久久免费视| 在线午夜精品| 亚洲精品自在在线观看| 欧美激情第10页| 精品91久久久久| 久久高清一区| 欧美美女bb生活片| 亚洲国产一区在线观看| 国产精品jizz在线观看美国| 美女性感视频久久久| 亚洲第一精品夜夜躁人人躁| 亚洲人成毛片在线播放女女| 美女黄网久久| 亚洲激情视频网站| 亚洲欧美日韩国产综合| 亚洲精品一区二区三区蜜桃久| 亚洲精品国产精品国自产观看浪潮| 国产精品嫩草99av在线| 欧美一区二区三区播放老司机| 久久精品国产亚洲高清剧情介绍| 一区二区欧美在线观看| 亚洲大胆女人| 久久婷婷av| 国产一区二区精品久久| 羞羞视频在线观看欧美| 日韩视频国产视频| 国产一区二区中文字幕免费看| 亚洲视频网站在线观看| 伊人色综合久久天天五月婷| 亚洲国产高潮在线观看| 国产伦精品一区二区三区在线观看| 欧美在线啊v一区| 在线视频亚洲一区| 久久成人精品| 制服丝袜亚洲播放| 亚洲综合视频网| 国产亚洲欧美日韩在线一区| 欧美日韩亚洲91| 亚洲日韩欧美视频一区| 欧美jizz19hd性欧美| 性色av一区二区三区在线观看| 亚洲国产精品一区二区三区| 欧美日韩日本国产亚洲在线| 一区二区三区四区在线| 国产在线日韩| 国产精品日韩一区二区| 欧美一区二区成人| 亚洲少妇中出一区| 一区二区三区精品久久久| 国产精品伦一区| 中国成人黄色视屏| 裸体素人女欧美日韩| 性欧美大战久久久久久久久| 伊伊综合在线| 99在线精品观看| 黄色日韩网站视频| 欧美亚韩一区| 久久精品日产第一区二区三区| 一区二区三区在线免费观看| 在线一区二区日韩| 一区二区三区 在线观看视频| 一本色道久久| 一区二区三区欧美视频| 9久re热视频在线精品| 欧美国产在线观看| 久久日韩粉嫩一区二区三区| 美女脱光内衣内裤视频久久网站| 国产午夜精品理论片a级探花| 日韩视频在线免费| 欧美激情在线狂野欧美精品| 日韩午夜一区| 狠狠久久亚洲欧美专区| 国产亚洲福利| 亚洲一品av免费观看| 99re6这里只有精品视频在线观看| 欧美日韩三区| 国产亚洲电影| 欧美精品日韩一区| 国产精品伦一区| 国产精品久久久久秋霞鲁丝| 国产日韩欧美在线一区| 开心色5月久久精品| 在线日韩视频| 久久久国产成人精品| 亚洲国产综合91精品麻豆| 在线视频欧美日韩| 性欧美办公室18xxxxhd| 国产精品久久久久一区二区三区| 欧美成人乱码一区二区三区| 在线观看视频免费一区二区三区| 久久久蜜桃一区二区人| 国产亚洲女人久久久久毛片| 久久激五月天综合精品| 国产精品久久| 欧美国产一区在线| 欧美日韩在线视频观看| 欧美另类久久久品| 国内精品福利| 国产精品久久久久久妇女6080| 欧美国产日韩一区| 欧美日韩国产一级片| 国产视频一区三区| 欧美成年人视频网站欧美| 先锋a资源在线看亚洲| 性色av一区二区三区在线观看| 麻豆久久久9性大片| 国内精品久久久久影院 日本资源| 国产日韩欧美亚洲| 国产一级揄自揄精品视频| 黑人操亚洲美女惩罚| 久久国产成人| 亚洲淫性视频| 欧美国产日韩亚洲一区| 亚洲看片网站| 亚洲永久字幕| 亚洲一区精品电影| 欧美日在线观看| 亚洲日韩欧美一区二区在线| 亚洲日本中文字幕区| 亚洲影院高清在线| 猛男gaygay欧美视频| 欧美日韩精品免费观看视频完整| 国产精品另类一区| 亚洲日本免费电影| 久久久www免费人成黑人精品| 久久久久久电影| 欧美日本不卡高清| 久久精品盗摄| 欧美一级网站| 欧美日韩国产成人在线| 久久女同精品一区二区| 欧美激情一区在线| 国产日韩在线亚洲字幕中文| aa亚洲婷婷| 亚洲三级免费| 国产啪精品视频| 午夜欧美大尺度福利影院在线看| 亚洲欧美日韩中文播放| 韩国免费一区| 欧美日韩一区二区国产| 亚洲欧洲三级| 久久精品国语| 久久久久九九九| 国产欧美短视频| 黄色一区二区在线观看| 亚洲国产精品成人va在线观看| 欧美 日韩 国产一区二区在线视频| 久久久久久亚洲精品不卡4k岛国| 亚洲国产精品va在线看黑人动漫| 亚洲一区影院| 亚洲一区日韩在线| 欧美国产日韩亚洲一区| 国产拍揄自揄精品视频麻豆| 欧美一级理论片| 欧美激情免费在线| 狠狠色综合色区| 久久精品免费播放| 国产免费观看久久黄| 亚洲字幕一区二区| 国产自产女人91一区在线观看| 亚洲一级网站| 一区二区三区精品久久久| 欧美人与禽性xxxxx杂性| 亚洲欧美在线高清| 久久午夜国产精品| 午夜在线一区| 女生裸体视频一区二区三区| 久久久久**毛片大全| 亚洲免费视频在线观看| 欧美一区二区三区成人| 亚洲天堂免费在线观看视频| 欧美日韩国产成人| 欧美色欧美亚洲另类二区| 国产伦精品一区二区三区| 精品9999| 久久精品国产99国产精品澳门| 欧美日本韩国一区二区三区| 欧美成人第一页| 欧美精品1区2区| 久久精品一区二区三区四区| 激情成人综合| 亚洲高清电影| 亚洲国产二区| 亚洲伦理在线免费看| 欧美一区午夜视频在线观看| 亚洲欧洲av一区二区| 亚洲人成人77777线观看| 亚洲一二三四区| 激情久久五月天| 亚洲国产精品成人综合色在线婷婷| 欧美激情一区二区三区在线| 一区二区精品在线| 日韩午夜一区| 欧美激情日韩| 欧美日韩精品久久| 欧美日韩在线视频一区二区| 国产精品高清在线| 好吊色欧美一区二区三区四区| 鲁鲁狠狠狠7777一区二区| 国产伦精品一区二区三区四区免费| 一区二区日韩欧美| 99精品欧美一区| 国产精品久久久久久福利一牛影视| 亚洲黑丝一区二区| 亚洲精品美女免费| 一区二区亚洲精品| 性欧美1819sex性高清| 国产日韩1区| 久久福利视频导航| 欧美日韩综合| 在线免费观看视频一区| 亚洲精品中文字| 欧美一区二区久久久| 国产日韩欧美成人| 久久精品一区四区| 欧美在线观看一区二区三区| 欧美国产日韩精品免费观看| 好男人免费精品视频| 欧美韩日亚洲| 亚洲精品一区在线| 狠狠色伊人亚洲综合网站色| 久久久人人人| 亚洲影院免费| 欧美成人国产一区二区| 亚洲精品在线电影| 欧美精品一区在线| 日韩视频免费观看高清在线视频| 91久久综合| 韩国女主播一区| 久久国产66| 国产精品一区二区三区成人| 欧美日韩国产在线播放网站| 一区二区在线观看视频在线观看| 一本久久综合亚洲鲁鲁五月天| 亚洲一区制服诱惑| 国产喷白浆一区二区三区| 国产亚洲精久久久久久| 在线观看日韩| 国产精品嫩草99a| 久久精品视频免费观看| a4yy欧美一区二区三区| 免费视频一区二区三区在线观看| 国产精品日韩在线| 激情久久久久| 欧美午夜在线| 欧美日韩网站| 韩国av一区二区三区四区| 午夜国产精品视频免费体验区| 欧美成人精品不卡视频在线观看| 中国成人黄色视屏| 亚洲免费激情| 欧美日韩亚洲一区在线观看| 亚洲日本一区二区| 欧美日韩成人综合在线一区二区| 欧美片网站免费| 国产精品资源在线观看| 国产综合久久久久久| 亚洲欧美日韩高清| 亚洲精品乱码久久久久久日本蜜臀| 久久一区二区视频| 国产美女精品在线| 好吊色欧美一区二区三区四区| 国产精品美女黄网| 欧美视频国产精品| 欧美日韩一区二区三区在线视频| 国产精品乱码人人做人人爱| 在线观看视频一区二区欧美日韩| 国产伦精品一区二区三区在线观看| 欧美成人四级电影| 欧美午夜激情小视频| 欧美日韩综合另类| 亚洲黄色小视频| 麻豆九一精品爱看视频在线观看免费| 久久久999成人| 国产精品v欧美精品v日本精品动漫| 亚洲伦理中文字幕| 午夜精品一区二区三区在线视| 欧美经典一区二区三区| 国产日韩在线看| 亚洲精品日本| 国产精品久久久久久久9999| 久久久久久穴| 日韩亚洲精品视频| 亚洲一区激情| 久久影院亚洲| 狼狼综合久久久久综合网| 欧美一二区视频| 亚洲在线一区二区| 欧美成人精品一区| 欧美一区二区三区视频在线观看| 亚洲先锋成人| 欧美专区亚洲专区| 国产欧美一区二区三区久久人妖| 欧美黄色日本| 亚洲欧美精品伊人久久| 欧美一二三区精品| 性欧美1819性猛交| 激情一区二区| 1024欧美极品| 欧美午夜精品久久久久免费视| 欧美日本在线看| 久久精品日韩一区二区三区| 在线看视频不卡| 亚洲欧美中文日韩v在线观看| 一本一道久久综合狠狠老精东影业| 久久综合给合久久狠狠狠97色69| 国产精品美女www爽爽爽视频| 久久在精品线影院精品国产| 亚洲欧美日韩国产一区二区三区| 国产精品国产三级国产a| 欧美精品一区二区三| 久久久女女女女999久久| 韩国自拍一区| 亚洲日韩中文字幕在线播放| 亚洲国产日韩欧美在线动漫| 欧美久久电影| 国产伦精品一区二区三区在线观看| 在线免费观看日本欧美| 久久久久久久久久看片| 狠狠色狠狠色综合| 在线亚洲美日韩| 欧美aa在线视频|