《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > DSP編程的關鍵問題分析
DSP編程的關鍵問題分析
摘要: 在實際通信應用中,一個突發之后,程序必須為下一個突發作準備。因此一般采用串口的DMA多幀方式但在串口以DMA方式傳輸數據時卻有一些問題要討論。
關鍵詞: DSP 編程
Abstract:
Key words :

  1 McBSP(Multichannel Buffered Serial Port)串口利用DMA中的多幀(Multi-Frame)方式通信的中斷處理

  在實際通信應用中,一個突發之后,程序必須為下一個突發作準備。因此一般采用串口的DMA多幀方式但在串口以DMA方式傳輸數據時卻有一些問題要討論。首先DMA的傳輸同步事件應設McBSP的傳輸事件即XEVT,這樣一字節傳輸后會自動準備另一字節(McBSP的READY上升沿觸發DMA傳輸)。中斷發生時意味著一個塊已傳完,這時DMA的使能自動關閉,McBSP的READY將一直保持高狀態。但是在下一次突發傳輸直接使能DMA時卻啟動不了傳輸(相信會有許多我遇到此類問題)。這是因為無法產生McBSP觸發啟動所需的READY上升沿。解決辦法是在中斷程序中先關閉McBSP的發送,使 READY="0",隨后在程序中發送使能DMA,再打開McBSP的發送即可。如先打開McBSP的發送后打開DMA,也是不會工作的。因為McBSP的 READY已經由0變到1了,無法再產生READY上升沿。

  2 關閉DMA與關閉McBSP的區別

  在通信領域,為了充分利用DSP的片上外設資源,常常利用DMA把從串口來的數據或要發的數據放入緩沖區,再處理。對DMA而言,只要其在數據緩沖區的指針指向了中斷應發生的位置,就產生中斷。但此時最后一個數據只是進入了McBSP而并未真正發出去,所以在傳送結束的中斷程序中只能關閉DMA不能關閉McBSP。因為此時McBSP的發寄存器DXR中還有一個字沒有發出。

  3 McBSP串口配置的關鍵時序

  主要是寄存器SPCR2的配置:在保持RRST、XRST、FRST各位為0的前提下,配置好其它串口控制寄存器。等待至少2個CLKR/T時鐘以確保DSP內部的同步。

  (1)可以向DXR裝載數據或使能DMA。

  (2)使能GRST(GRST=1)(如果需要DSP內部產生采樣時鐘)。

  (3)使能RRST或XRST,注意此時要保證SPCR中僅有此一位發生改變。

  (4)使能FRST(FRST=1)(如果需要DSP內部產生幀同步)。

  (5)等待2個R/T CLK時鐘周期后,收或發端便會有效。

  4 匯編語言程序中的變量

  匯編語言程序中的公用變量應在文件中定義,如.def carry。匯編語言程序中使用的局部變量不需定義,可直接聲明,例如trn_num .word 00h。如果在兩個asm文件中有兩個都沒有定義的同名變量,則編譯程序會認為分他們不是同一變量。在匯編程序的開頭應有.mmregs宏語句。它一方面表示對默認定義的確認(ah,bh,trn等),另一方面可以對所用寄存器重新定義。如:.mmregs DMPREC .set 54h ;定義DMA優先和使能寄存器地址在54h DMSA .set 55h DMSDN .set 57h DXR10 .set 23h ;定義串口1的發送寄存器地睛在23h。

  5 ST1寄存器中CPL位的影響

  CPL位是編譯模式控制位,它表示在相對直接尋址時采用哪種指針。當CPL=0時,使用頁指針DP;當CPL=1時,使用堆棧指針SP。實際使用中二者沒有什么差別,但使用SP尋址的程序更易讀。在程序中經常使用CPL=1。

  1 McBSP(Multichannel Buffered Serial Port)串口利用DMA中的多幀(Multi-Frame)方式通信的中斷處理

  在實際通信應用中,一個突發之后,程序必須為下一個突發作準備。因此一般采用串口的DMA多幀方式但在串口以DMA方式傳輸數據時卻有一些問題要討論。首先DMA的傳輸同步事件應設McBSP的傳輸事件即XEVT,這樣一字節傳輸后會自動準備另一字節(McBSP的READY上升沿觸發DMA傳輸)。中斷發生時意味著一個塊已傳完,這時DMA的使能自動關閉,McBSP的READY將一直保持高狀態。但是在下一次突發傳輸直接使能DMA時卻啟動不了傳輸(相信會有許多我遇到此類問題)。這是因為無法產生McBSP觸發啟動所需的READY上升沿。解決辦法是在中斷程序中先關閉McBSP的發送,使 READY="0",隨后在程序中發送使能DMA,再打開McBSP的發送即可。如先打開McBSP的發送后打開DMA,也是不會工作的。因為McBSP的 READY已經由0變到1了,無法再產生READY上升沿。

  2 關閉DMA與關閉McBSP的區別

  在通信領域,為了充分利用DSP的片上外設資源,常常利用DMA把從串口來的數據或要發的數據放入緩沖區,再處理。對DMA而言,只要其在數據緩沖區的指針指向了中斷應發生的位置,就產生中斷。但此時最后一個數據只是進入了McBSP而并未真正發出去,所以在傳送結束的中斷程序中只能關閉DMA不能關閉McBSP。因為此時McBSP的發寄存器DXR中還有一個字沒有發出。

  3 McBSP串口配置的關鍵時序

  主要是寄存器SPCR2的配置:在保持RRST、XRST、FRST各位為0的前提下,配置好其它串口控制寄存器。等待至少2個CLKR/T時鐘以確保DSP內部的同步。

  (1)可以向DXR裝載數據或使能DMA。

  (2)使能GRST(GRST=1)(如果需要DSP內部產生采樣時鐘)。

  (3)使能RRST或XRST,注意此時要保證SPCR中僅有此一位發生改變。

  (4)使能FRST(FRST=1)(如果需要DSP內部產生幀同步)。

  (5)等待2個R/T CLK時鐘周期后,收或發端便會有效。

  4 匯編語言程序中的變量

  匯編語言程序中的公用變量應在文件中定義,如.def carry。匯編語言程序中使用的局部變量不需定義,可直接聲明,例如trn_num .word 00h。如果在兩個asm文件中有兩個都沒有定義的同名變量,則編譯程序會認為分他們不是同一變量。在匯編程序的開頭應有.mmregs宏語句。它一方面表示對默認定義的確認(ah,bh,trn等),另一方面可以對所用寄存器重新定義。如:.mmregs DMPREC .set 54h ;定義DMA優先和使能寄存器地址在54h DMSA .set 55h DMSDN .set 57h DXR10 .set 23h ;定義串口1的發送寄存器地睛在23h。

  5 ST1寄存器中CPL位的影響

  CPL位是編譯模式控制位,它表示在相對直接尋址時采用哪種指針。當CPL=0時,使用頁指針DP;當CPL=1時,使用堆棧指針SP。實際使用中二者沒有什么差別,但使用SP尋址的程序更易讀。在程序中經常使用CPL=1。

  6 指令的歧義

  6.1 比較下面指令STLM B,AR4 ;把bl內容送入寄存器AR4 (×)

  STLM B,*AR4 ;把bl內容送入寄存器AR4 (√)

  前者實際執行的是把bl內容送入一個系統用的緩沖區,后者也可用:MVDM BL,AR4 ;把bl內容送入寄存器AR4 (√)

  其他易導致歧義的語句還有:

  LD AR5,A ;把AR5的內容送入寄存器A (×)

  LDM AR5,A ;把AR5的內容送入寄存器A (√)

  ANDM #0x107e,AR4;把#107e加到寄存器AR4 (×)

  ANDN #0x107e,*AR4;把#107e加到寄存器AR4 (√)

  僅對某些寄存器有效的指令:

  MVDD * AR2+,*AR3+ ;把以AR2為地址的內容拷入AR3的地址中此類指令用作數據塊搬移特別有效,但僅對AR2、AR3、AR4、AR5有效。

  易錯語句中對程序運行危害最大的是:

  ST #0,*(bsp0_out_sign) ;bsp0_out_sign是一個變量名(√)

  STM #0,bsp0_out_sign ;此語句被編譯為STM #0,PMST或STM #0,IMR (×)

  這種語句會導致程序運行中的隨機故障,且極難發現。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲大胆女人| 亚洲性感激情| 国产午夜精品久久久| 欧美日韩妖精视频| 欧美噜噜久久久xxx| 免费欧美网站| 免费成人网www| 蜜桃久久av| 老司机精品视频网站| 久久亚洲免费| 男女精品网站| 欧美电影专区| 欧美巨乳波霸| 欧美日韩国产丝袜另类| 欧美阿v一级看视频| 免费日韩av片| 欧美电影资源| 欧美—级高清免费播放| 欧美精品久久久久久久| 欧美精品成人在线| 欧美日韩国产精品一区| 欧美了一区在线观看| 欧美精品日韩| 欧美日韩一区二区免费在线观看| 欧美日韩在线一区二区| 欧美日韩在线播放| 国产精品久久久久久久久搜平片| 国产精品免费看| 国产嫩草影院久久久久 | 欧美电影美腿模特1979在线看| 女仆av观看一区| 欧美日韩国产小视频| 欧美日韩久久不卡| 国产精品久久久久久久久久尿| 国产嫩草一区二区三区在线观看| 国产亚洲亚洲| 亚洲高清资源| 99精品视频免费在线观看| 亚洲午夜精品国产| 久久高清一区| 99视频热这里只有精品免费| 亚洲在线播放电影| 久久久久国产精品午夜一区| 欧美v日韩v国产v| 欧美午夜精品久久久久久人妖 | 欧美理论电影在线观看| 国产精品大全| 国内精品嫩模av私拍在线观看 | 亚洲精品中文字幕在线| 亚洲天堂免费在线观看视频| 香蕉尹人综合在线观看| 老司机一区二区| 欧美日韩亚洲一区三区| 国产精品一区二区久久| 尤物99国产成人精品视频| 日韩视频免费观看高清完整版| 亚洲综合国产精品| 亚洲日本一区二区三区| 午夜精品99久久免费| 久久综合久久88| 国产精品成人在线| 激情婷婷亚洲| 一区二区三区精品视频| 久久精品国产综合精品| 一区二区三区视频在线看| 久久久精品动漫| 欧美日韩在线三区| 狠狠色丁香婷婷综合影院| 一区二区久久| 亚洲国产91色在线| 亚洲女同同性videoxma| 老司机午夜精品视频| 国产精品女主播在线观看| 在线观看中文字幕亚洲| 亚洲专区在线| 在线视频一区观看| 久久综合久久综合这里只有精品| 国产精品a久久久久| 禁久久精品乱码| 亚洲欧美日韩久久精品| 一区二区三区产品免费精品久久75 | 在线视频免费在线观看一区二区| 久久精精品视频| 国产精品mv在线观看| 在线免费日韩片| 久久av二区| 午夜国产不卡在线观看视频| 欧美另类女人| 在线观看欧美日韩国产| 午夜免费久久久久| 亚洲无毛电影| 久久综合电影一区| 国产偷久久久精品专区| 亚洲一区二区在线视频| 一区二区久久久久久| 欧美18av| 精品成人久久| 欧美一区二区三区免费观看| 亚洲欧美久久| 欧美午夜免费影院| 亚洲精品一二三| 日韩视频在线一区二区| 欧美暴力喷水在线| 在线观看91精品国产入口| 午夜影院日韩| 欧美专区18| 国产农村妇女精品| 亚洲制服丝袜在线| 午夜欧美电影在线观看| 国产精品福利在线| 亚洲视频你懂的| 亚洲专区免费| 欧美特黄a级高清免费大片a级| 亚洲精品乱码久久久久久蜜桃麻豆 | 夜夜爽www精品| 亚洲一级影院| 欧美三级视频在线播放| 亚洲作爱视频| 亚洲在线播放电影| 国产精品久久久久久久久免费桃花| 99这里只有久久精品视频| 一区二区三区欧美在线观看| 欧美日韩成人精品| 亚洲九九九在线观看| 夜夜嗨av一区二区三区网站四季av| 欧美激情一区二区在线| 亚洲激情中文1区| 日韩视频免费看| 欧美日一区二区三区在线观看国产免| 日韩五码在线| 午夜精品国产| 国产免费观看久久| 久久精彩免费视频| 欧美gay视频激情| 亚洲日本理论电影| 一区二区三区福利| 国产精品乱看| 欧美一级成年大片在线观看| 久久久久久久一区二区| 一区二区视频免费完整版观看| 亚洲国产裸拍裸体视频在线观看乱了中文| 老司机免费视频久久| 在线免费观看一区二区三区| 亚洲精品久久久久中文字幕欢迎你| 欧美多人爱爱视频网站| av72成人在线| 久久狠狠一本精品综合网| 一区在线观看视频| 99亚洲视频| 国产精品一区二区三区四区| 久久成人精品| 欧美久久久久免费| 亚洲一区欧美二区| 久久久精品日韩| 亚洲国产精品成人综合| 亚洲一区在线直播| 国产一区二区成人| 日韩午夜免费| 国产精品美女主播| 久久精品一二三| 欧美日韩一区综合| 欧美一区影院| 欧美屁股在线| 亚洲欧美日韩国产一区二区| 欧美aⅴ一区二区三区视频| 夜夜爽99久久国产综合精品女不卡| 羞羞色国产精品| 在线电影院国产精品| 亚洲综合成人婷婷小说| 国产伦精品一区二区三区视频孕妇| 亚洲国产精品一区制服丝袜 | 亚洲乱码国产乱码精品精| 性久久久久久久| 亚洲电影在线| 香蕉久久夜色精品| 亚洲国产精品小视频| 亚洲欧美综合网| 亚洲国产精品成人综合| 欧美一区2区视频在线观看 | 性欧美长视频| 欧美日韩国产系列| 久久精品夜色噜噜亚洲a∨| 欧美视频在线观看视频极品 | 欧美不卡福利| 午夜精品久久久久久99热软件| 欧美激情一区二区在线| 欧美一级淫片播放口| 欧美日韩免费在线观看| 亚洲福利国产精品| 国产精品国内视频| 亚洲人午夜精品| 国产视频不卡| 亚洲欧美大片| 亚洲日韩欧美视频一区| 久久人人精品| 午夜视频一区| 欧美午夜精品理论片a级大开眼界| 亚洲黄一区二区三区| 国产欧美一区二区三区沐欲| 一区二区三区免费观看|