<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 數(shù)字示波器中的波形存儲、錄制與回放

          數(shù)字示波器中的波形存儲、錄制與回放

          作者: 時(shí)間:2011-12-19 來源:網(wǎng)絡(luò) 收藏

          對FLASH的操作主要有復(fù)位、寫、讀和擦除操作。其中寫操作只能將FLASH的數(shù)據(jù)由1寫為0,如果試圖將0寫為1就會(huì)出錯(cuò)。如果該區(qū)域已經(jīng)寫過就只能先擦除,而FLASH的擦除只能以塊為單位,如果對FLASH頻繁擦除會(huì)減少壽命,因此給A1,A2;2個(gè)區(qū)各分2個(gè)塊。假設(shè)每1塊可以10幅。當(dāng)?shù)?塊存滿10幅數(shù)據(jù)后,下一幅在第2塊中,同時(shí)擦除第1塊,注意必須是在開始寫第2塊之后才能擦除第1塊,這樣可以避免有效數(shù)據(jù)被擦除。當(dāng)?shù)?塊數(shù)據(jù)寫滿之后重新寫第1塊,并擦除第2塊,這樣整體看來,20幅波形才會(huì)對一個(gè)塊進(jìn)行擦除,避免了頻繁擦除FLASH的某些位置。波形存儲流程示意圖如圖1所示。

          本文引用地址:http://www.ex-cimer.com/article/194611.htm

          b.jpg


          存儲1幅波形(例如通道1的正常觸發(fā)時(shí)候的波形)的具體過程如下:
          (1)A1區(qū)中包含2個(gè)塊(a、b)可以存儲該波形。確定每一個(gè)塊最多可以存儲波形數(shù)量(count),a塊的起始地址ADDR_START;b塊起始地址就是ADDR_START+0x08000,定義一個(gè)實(shí)際的存儲地址FLASH_addr。
          (2)從FM24LC02中讀取該區(qū)中已存波形的邏輯位置N1,N1+1就是現(xiàn)在要存波形的邏輯位置。
          如果N1≤count,數(shù)據(jù)存儲在a中,地址是FLASH_addr=ADDR_START+(N1-1)K1。
          如果N1=count+1,數(shù)據(jù)存儲在b中,地址是FLASH_addr=ADDR_START+0x08000+(N1-count-1)K1,數(shù)據(jù)存儲之后擦除a中的數(shù)據(jù)。
          如果count+1N12count,數(shù)據(jù)存儲在b中,地址是FLASH_addr=ADDR_START+0x08000+(N1-count-1)K1。
          如果N1=2count,數(shù)據(jù)存儲在b中,地址是FLASH_addr=ADDR_START+0x08000+(N1-count-1)K1,存儲之后,N1=0。下一幅波形存儲在a中,然后擦除b中的數(shù)據(jù)。
          (3)將邏輯位置N1存儲在FM24CL04的X1的位置。
          注意,DSP接收到采樣數(shù)據(jù)后,需要根據(jù)時(shí)基通過軟件再次抽點(diǎn)后的數(shù)據(jù)才是需要顯示的波形數(shù)據(jù)。FLASH中存儲的波形數(shù)據(jù)是軟件抽點(diǎn)以前的數(shù)據(jù),這樣在調(diào)出波形數(shù)據(jù)以后可以根據(jù)用戶的要求做相應(yīng)處理。
          調(diào)出FLASH中的波形只需要計(jì)算出該波形在FLASH中的位置就可以。根據(jù)觸發(fā)模式從鐵電存儲器中的對應(yīng)位置讀出對應(yīng)波形的邏輯位置N,根據(jù)N來計(jì)算數(shù)據(jù)的起始地址。如果N≤count,F(xiàn)LASH_addr=ADDR_START+(N-1)K,如果N>count,F(xiàn)LASH_addr=ADDR_START+(N-count-1)K,根據(jù)計(jì)算出的地址按照對應(yīng)波形數(shù)據(jù)的大小讀取數(shù)據(jù)。
          存儲與過程的重點(diǎn)在于對FLASH進(jìn)行操作的程序,主要是對FLASH內(nèi)部的命令寄存器按照一定的時(shí)序?qū)懭朊睢?br />2.2 波形錄制與
          用戶在使用示波器時(shí),常常遇到一些瞬態(tài)信號,在還沒有來得及捕捉之前信號已經(jīng)消失,這樣就需要波形錄制與功能,將波形錄制下來,事后再慢慢尋找并觀察。波形錄制是將波形數(shù)據(jù)存儲在SDRAM中。本設(shè)計(jì)中最多可以錄制100幅波形,并且是最近的100幅,如果已經(jīng)錄制滿之后就會(huì)替換最先錄制的波形數(shù)據(jù),而每副波形數(shù)據(jù)大小為400個(gè)點(diǎn),這樣就需要分配出400×100大小的空間。本設(shè)計(jì)中使用ADSP BF531
          的DMA方式,把顯示緩存中的波形數(shù)據(jù)直接傳送給波形錄制的緩存,這樣可以不經(jīng)過CPU就實(shí)現(xiàn)了數(shù)據(jù)的高速存儲,本設(shè)計(jì)中采用的是Memory到Memory之間的DMA方式。BF531中的具體配置如下:
          c.jpg
          d.jpg
          以上是目的地址的DMA設(shè)置。注意數(shù)據(jù)源的DMA必須在目的地址的DMA使能之前使能。
          每次波形顯示之后啟動(dòng)DMA方式把波形數(shù)據(jù)存儲到錄制緩存中。錄制滿100幅波形之后就必須剔除最先錄制的波形,定義一個(gè)波形數(shù)目wave_data,一個(gè)波形覆蓋數(shù)目cover_data,cover_data在0~99之間循環(huán)變化。錄制緩存的首地址為Luzhi_addr,每存儲一幅波形wave_data加1。
          如果wave_data100,波形錄制的地址為Luzhi_addr+400*wave_data。
          如果wave_data=100,wave_data保持100不變,cover_data加1,波形錄制的地址為Luzhi_addr+400*(cover_data-1)。cover_data在0~100之間循環(huán)。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();