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

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

  在實(shí)際通信應(yīng)用中,一個(gè)突發(fā)之后,程序必須為下一個(gè)突發(fā)作準(zhǔn)備。因此一般采用串口的DMA多幀方式但在串口以DMA方式傳輸數(shù)據(jù)時(shí)卻有一些問(wèn)題要討論。首先DMA的傳輸同步事件應(yīng)設(shè)McBSP的傳輸事件即XEVT,這樣一字節(jié)傳輸后會(huì)自動(dòng)準(zhǔn)備另一字節(jié)(McBSP的READY上升沿觸發(fā)DMA傳輸)。中斷發(fā)生時(shí)意味著一個(gè)塊已傳完,這時(shí)DMA的使能自動(dòng)關(guān)閉,McBSP的READY將一直保持高狀態(tài)。但是在下一次突發(fā)傳輸直接使能DMA時(shí)卻啟動(dòng)不了傳輸(相信會(huì)有許多我遇到此類問(wèn)題)。這是因?yàn)闊o(wú)法產(chǎn)生McBSP觸發(fā)啟動(dòng)所需的READY上升沿。解決辦法是在中斷程序中先關(guān)閉McBSP的發(fā)送,使 READY="0",隨后在程序中發(fā)送使能DMA,再打開(kāi)McBSP的發(fā)送即可。如先打開(kāi)McBSP的發(fā)送后打開(kāi)DMA,也是不會(huì)工作的。因?yàn)镸cBSP的 READY已經(jīng)由0變到1了,無(wú)法再產(chǎn)生READY上升沿。

  2 關(guān)閉DMA與關(guān)閉McBSP的區(qū)別

  在通信領(lǐng)域,為了充分利用DSP的片上外設(shè)資源,常常利用DMA把從串口來(lái)的數(shù)據(jù)或要發(fā)的數(shù)據(jù)放入緩沖區(qū),再處理。對(duì)DMA而言,只要其在數(shù)據(jù)緩沖區(qū)的指針指向了中斷應(yīng)發(fā)生的位置,就產(chǎn)生中斷。但此時(shí)最后一個(gè)數(shù)據(jù)只是進(jìn)入了McBSP而并未真正發(fā)出去,所以在傳送結(jié)束的中斷程序中只能關(guān)閉DMA不能關(guān)閉McBSP。因?yàn)榇藭r(shí)McBSP的發(fā)寄存器DXR中還有一個(gè)字沒(méi)有發(fā)出。

  3 McBSP串口配置的關(guān)鍵時(shí)序

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

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

  (2)使能GRST(GRST=1)(如果需要DSP內(nèi)部產(chǎn)生采樣時(shí)鐘)。

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

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

  (5)等待2個(gè)R/T CLK時(shí)鐘周期后,收或發(fā)端便會(huì)有效。

  4 匯編語(yǔ)言程序中的變量

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

  5 ST1寄存器中CPL位的影響

  CPL位是編譯模式控制位,它表示在相對(duì)直接尋址時(shí)采用哪種指針。當(dāng)CPL=0時(shí),使用頁(yè)指針DP;當(dāng)CPL=1時(shí),使用堆棧指針SP。實(shí)際使用中二者沒(méi)有什么差別,但使用SP尋址的程序更易讀。在程序中經(jīng)常使用CPL=1。

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

  在實(shí)際通信應(yīng)用中,一個(gè)突發(fā)之后,程序必須為下一個(gè)突發(fā)作準(zhǔn)備。因此一般采用串口的DMA多幀方式但在串口以DMA方式傳輸數(shù)據(jù)時(shí)卻有一些問(wèn)題要討論。首先DMA的傳輸同步事件應(yīng)設(shè)McBSP的傳輸事件即XEVT,這樣一字節(jié)傳輸后會(huì)自動(dòng)準(zhǔn)備另一字節(jié)(McBSP的READY上升沿觸發(fā)DMA傳輸)。中斷發(fā)生時(shí)意味著一個(gè)塊已傳完,這時(shí)DMA的使能自動(dòng)關(guān)閉,McBSP的READY將一直保持高狀態(tài)。但是在下一次突發(fā)傳輸直接使能DMA時(shí)卻啟動(dòng)不了傳輸(相信會(huì)有許多我遇到此類問(wèn)題)。這是因?yàn)闊o(wú)法產(chǎn)生McBSP觸發(fā)啟動(dòng)所需的READY上升沿。解決辦法是在中斷程序中先關(guān)閉McBSP的發(fā)送,使 READY="0",隨后在程序中發(fā)送使能DMA,再打開(kāi)McBSP的發(fā)送即可。如先打開(kāi)McBSP的發(fā)送后打開(kāi)DMA,也是不會(huì)工作的。因?yàn)镸cBSP的 READY已經(jīng)由0變到1了,無(wú)法再產(chǎn)生READY上升沿。

  2 關(guān)閉DMA與關(guān)閉McBSP的區(qū)別

  在通信領(lǐng)域,為了充分利用DSP的片上外設(shè)資源,常常利用DMA把從串口來(lái)的數(shù)據(jù)或要發(fā)的數(shù)據(jù)放入緩沖區(qū),再處理。對(duì)DMA而言,只要其在數(shù)據(jù)緩沖區(qū)的指針指向了中斷應(yīng)發(fā)生的位置,就產(chǎn)生中斷。但此時(shí)最后一個(gè)數(shù)據(jù)只是進(jìn)入了McBSP而并未真正發(fā)出去,所以在傳送結(jié)束的中斷程序中只能關(guān)閉DMA不能關(guān)閉McBSP。因?yàn)榇藭r(shí)McBSP的發(fā)寄存器DXR中還有一個(gè)字沒(méi)有發(fā)出。

  3 McBSP串口配置的關(guān)鍵時(shí)序

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

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

  (2)使能GRST(GRST=1)(如果需要DSP內(nèi)部產(chǎn)生采樣時(shí)鐘)。

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

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

  (5)等待2個(gè)R/T CLK時(shí)鐘周期后,收或發(fā)端便會(huì)有效。

  4 匯編語(yǔ)言程序中的變量

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

  5 ST1寄存器中CPL位的影響

  CPL位是編譯模式控制位,它表示在相對(duì)直接尋址時(shí)采用哪種指針。當(dāng)CPL=0時(shí),使用頁(yè)指針DP;當(dāng)CPL=1時(shí),使用堆棧指針SP。實(shí)際使用中二者沒(méi)有什么差別,但使用SP尋址的程序更易讀。在程序中經(jīng)常使用CPL=1。

  6 指令的歧義

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

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

  前者實(shí)際執(zhí)行的是把bl內(nèi)容送入一個(gè)系統(tǒng)用的緩沖區(qū),后者也可用:MVDM BL,AR4 ;把bl內(nèi)容送入寄存器AR4 (√)

  其他易導(dǎo)致歧義的語(yǔ)句還有:

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

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

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

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

  僅對(duì)某些寄存器有效的指令:

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

  易錯(cuò)語(yǔ)句中對(duì)程序運(yùn)行危害最大的是:

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

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

  這種語(yǔ)句會(huì)導(dǎo)致程序運(yùn)行中的隨機(jī)故障,且極難發(fā)現(xiàn)。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲美女诱惑| 亚洲国产精品久久人人爱蜜臀 | 久久久久九九视频| 亚洲欧美日韩一区| 亚洲视频狠狠| 亚洲一级片在线观看| 一区二区三区欧美激情| 夜夜嗨一区二区三区| 一区二区不卡在线视频 午夜欧美不卡在| 亚洲激情二区| 亚洲欧洲在线看| 91久久久亚洲精品| 91久久夜色精品国产九色| 亚洲国产精品黑人久久久| 亚洲成色精品| 91久久在线播放| 日韩视频在线观看一区二区| 99热这里只有成人精品国产| 夜夜嗨av一区二区三区四区| 亚洲午夜av| 香蕉免费一区二区三区在线观看| 午夜精品久久久久久99热软件| 香蕉乱码成人久久天堂爱免费| 欧美亚洲一区三区| 久久疯狂做爰流白浆xx| 久久久久青草大香线综合精品| 久久亚洲欧美国产精品乐播| 麻豆成人综合网| 欧美精品色综合| 欧美日韩一区二区欧美激情 | 国产精品a久久久久| 国产精品免费久久久久久| 国产精品久久影院| 国产日韩精品久久久| 国内精品久久久久久久97牛牛| 黄色一区二区在线| 91久久精品国产| 一区二区av| 午夜精品网站| 亚洲国产精品一区二区三区| 日韩视频一区二区三区在线播放| 亚洲午夜久久久| 欧美一区二视频| 欧美1区2区3区| 国产精品成人观看视频免费| 国产亚洲综合在线| 亚洲激情网站免费观看| 亚洲无线一线二线三线区别av| 欧美一区=区| 日韩一区二区高清| 欧美一区二区三区免费视| 美女露胸一区二区三区| 欧美日韩伦理在线| 国产日本亚洲高清| 亚洲国产精品综合| 在线视频免费在线观看一区二区| 欧美一区二区三区四区在线观看地址 | 亚洲美女中出| 先锋影音久久久| 亚洲人屁股眼子交8| 亚洲尤物影院| 久久婷婷亚洲| 欧美亚一区二区| 在线看片一区| 亚洲午夜一区二区| 亚洲人成人一区二区三区| 亚洲欧美日韩电影| 欧美大片免费观看| 国产女优一区| 99精品国产高清一区二区| 欧美一区二区三区另类| 一区二区日韩伦理片| 另类av一区二区| 国产精品美女久久| 亚洲国产美女久久久久| 午夜视频一区二区| 亚洲一区二区三区精品在线| 男女精品网站| 国产亚洲一区二区三区在线观看| 一区二区三区不卡视频在线观看| 91久久精品国产91性色tv| 欧美中文在线观看| 欧美三级视频在线播放| 亚洲福利专区| 久久精品国产2020观看福利| 午夜精品久久久99热福利| 欧美人成免费网站| 在线欧美不卡| 欧美专区中文字幕| 午夜精品视频在线观看| 欧美日韩激情小视频| 影音先锋成人资源站| 欧美亚洲专区| 欧美一级淫片aaaaaaa视频| 欧美日韩国产精品| 亚洲高清av| 亚洲国产欧美一区| 久久久久久久久久久久久女国产乱 | 国产精品一区二区三区四区五区| 亚洲免费观看高清在线观看| 91久久久久久久久| 另类综合日韩欧美亚洲| 国产一区二区三区四区| 亚洲欧美激情四射在线日| 亚洲视频一区| 欧美三级日本三级少妇99| 亚洲伦理在线| 一本久道久久久| 欧美日韩国产片| 亚洲精品美女在线| 日韩一级免费观看| 欧美激情成人在线视频| 亚洲电影下载| 亚洲国产综合视频在线观看| 久久午夜精品一区二区| 国产一区二区三区在线观看免费视频| 亚洲免费小视频| 欧美一区三区三区高中清蜜桃| 欧美午夜无遮挡| 在线亚洲+欧美+日本专区| 一区二区三区成人精品| 欧美日韩综合不卡| 9国产精品视频| 亚洲一区二区三区四区视频| 欧美午夜电影在线观看| 中国成人黄色视屏| 香蕉久久一区二区不卡无毒影院| 国产精品网曝门| 亚洲欧美影院| 久久精品国产99| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲成人直播| 欧美成人性生活| 亚洲精品视频在线| 亚洲天堂久久| 国产麻豆精品theporn| 香蕉国产精品偷在线观看不卡| 久久精品在线播放| 一区二区三区在线观看欧美| 亚洲人线精品午夜| 欧美日韩免费一区| 亚洲一区二区三区高清不卡| 欧美一级一区| 国内欧美视频一区二区| 亚洲激情影视| 欧美日韩一区二区三区四区在线观看| 亚洲午夜国产成人av电影男同| 欧美一区二区啪啪| 黄色小说综合网站| 日韩午夜av电影| 国产精品久久波多野结衣| 小处雏高清一区二区三区 | 亚洲欧美日韩一区在线| 久久蜜臀精品av| 91久久极品少妇xxxxⅹ软件| 亚洲自拍电影| 国产一区视频网站| 日韩亚洲视频在线| 国产精品久久999| 亚洲高清视频的网址| 欧美日韩精品二区第二页| 亚洲一区二区三区777| 美日韩在线观看| 亚洲少妇最新在线视频| 久久久999国产| 亚洲欧洲在线一区| 欧美在线黄色| 亚洲国产高清视频| 午夜精品福利在线观看| 亚洲电影在线播放| 性做久久久久久久免费看| 伊人天天综合| 亚洲欧美日韩国产精品| 悠悠资源网亚洲青| 午夜一区二区三区在线观看| 1204国产成人精品视频| 亚洲在线一区二区| 在线精品国精品国产尤物884a| 亚洲欧美成人网| 在线欧美小视频| 午夜一级在线看亚洲| 91久久精品日日躁夜夜躁欧美| 先锋影音久久久| 亚洲精品乱码久久久久久黑人 | 国产精品成人一区二区| 亚洲国产日韩美| 国产精品欧美久久| 亚洲精品乱码久久久久久日本蜜臀 | 久久精品一区二区三区不卡牛牛| 欧美性猛片xxxx免费看久爱| 亚洲国产成人av好男人在线观看| 欧美性猛交xxxx乱大交退制版 | 亚洲国产成人精品久久| 亚欧成人精品| 亚洲乱亚洲高清| 欧美成人一品| 久久精品国产亚洲一区二区三区| 国产精品久久久久影院色老大| 亚洲精品一区二区三区婷婷月 | 亚洲高清av在线|