浓毛老太交欧美老妇热爱乱,蜜臀性色av免费,妺妺窝人体色www看美女,久久久久久久久久久大尺度免费视频,麻豆人妻无码性色av专区

位置:51電子網(wǎng) » 技術(shù)資料 » 集成電路

USB數(shù)據(jù)通信接□模塊的程序設(shè)計

發(fā)布時間:2008/11/25 0:00:00 訪問次數(shù):786

  本文主要介紹pdiusbd12的固件編程問題。

  usb通信固件設(shè)計的目標(biāo)為使pdiusbd12在usb上達(dá)到最大的傳輸速率。

  1.總體規(guī)劃

  cpu忙于處理許多設(shè)備控制和數(shù)據(jù)處理等任務(wù)。通信固件設(shè)計成完全的中斷驅(qū)動方式,當(dāng)cpu處理前臺任務(wù) 時,usb的傳輸可在后臺進行,這就確保了最佳的傳輸速率和更好的軟件結(jié)構(gòu),同時簡化了編程和調(diào)試。

  后臺中斷服務(wù)程序和前臺主程序循環(huán)之間的數(shù)據(jù)交換通過事件標(biāo)志和數(shù)據(jù)緩沖區(qū)來實現(xiàn),例如,pdiusbd12 的批量輸出端點可使用循環(huán)的數(shù)據(jù)緩沖區(qū),當(dāng)diusbd12從usb收到一個數(shù)據(jù)包時,就對cpu產(chǎn)生一個中斷請求 ,cpu立即響應(yīng)中斷。

  在中斷服務(wù)程序中固件將數(shù)據(jù)包從pdiusbd12內(nèi)部緩沖區(qū)移到循環(huán)數(shù)據(jù)緩沖區(qū),并在隨后清除diusbd12的內(nèi) 部緩沖區(qū),以使其能接收新的數(shù)據(jù)包,cpu可以繼續(xù)它當(dāng)前的前臺任務(wù)直到完成。

  然后返回到主循環(huán),檢查循環(huán)緩沖區(qū)內(nèi)是否有新的數(shù)據(jù),若有就對其進行處理,否則開始其他的前臺任務(wù) 。中斷服務(wù)程序與前臺主循環(huán)通過事件標(biāo)志eppflags和數(shù)據(jù)緩沖區(qū)conrol xfer進行通信,eppflags的定義 如下:

  usb通信固件采用層次結(jié)構(gòu),如圖1所示


圖1 usb通信模塊層次圖

  2 分別介紹各層子模塊的設(shè)計

 。1)底層函數(shù)。

  最底層為兩個面向硬件電路的函數(shù):outpodb(uchar addr, uchar dm)和inpofib(uchar addr) 用以 完成cpu和d12之間的數(shù)據(jù)傳輸,這是所li其他函數(shù)的基礎(chǔ),具體代碼如下:

 。2)命令接口.

  在d12的數(shù)據(jù)手冊中定義了一套壓縮了所有訪問pdiusbd12功能的命令集,命令接口部分就是將各命令用函 數(shù)的形式加以實現(xiàn),對應(yīng)的函數(shù)主要有:

  以ushort readlnterruptregister(void)函數(shù)為例,代碼如下:


  3 中斷服務(wù)程序

  這部分代碼處理由pdiusbdl2產(chǎn)生的中斷,它將數(shù)據(jù)從pdiusbdi2的內(nèi)部fifo取回到cpu存儲器,并建立正 確的事件標(biāo)志以通知主循環(huán)程序進行處理。在isr函數(shù)的入口固件使用readlntemjptregister()來決定中 斷源,根據(jù)中斷源進入相應(yīng)的子程序進行處理。

  中斷服務(wù)處理函數(shù)代碼如下


  4.主端點操作

  這部分代碼較多,包括各個端口的發(fā)送/接收函數(shù),端點1和主端點(端點2)的收發(fā)函數(shù)相對較簡單。

  

  (2)主端點接收函數(shù)。

  5.程序說明

  在端點0的發(fā)送函數(shù)中,mcu首先需要通過讀di2的最后處理狀態(tài)寄存器,清0control_in中斷標(biāo)志位,接著 mcu在確認(rèn)di2處于傳輸模式后進行數(shù)據(jù)所的發(fā)送。由于d12的控件端點只有16bit,如果傳輸?shù)拈L度大于 16bit,mcu在傳輸階段就必須控制數(shù)據(jù)的數(shù)量,其流程如圖2所示。mcu必須檢查要發(fā)送到主機的當(dāng)前和剩余 的數(shù)據(jù)大小,如果剩下的字節(jié)數(shù)大于16,mcu將先發(fā)送16字節(jié)并減去參考長度(要求的長度)16。

  當(dāng)下一個control_in標(biāo)志來時,mcu將確定剩余的字節(jié)是否為0,如果已經(jīng)沒有數(shù)據(jù)要發(fā)送,mcu需要發(fā)送一 個空的包以指示主機數(shù)據(jù)已發(fā)送完畢。


圖2 控制點發(fā)送函數(shù)流程

  · 如果是一個有效的請求,mcu必須向控制輸出端點發(fā)送應(yīng)答建立命令,以重新使能下一個建立階段。接 下來,mcu需要證實控制傳輸是控制讀還是寫,這可以通過讀建立包中bmrequesttype的第8位來實現(xiàn)。

  · 如果控制傳輸是一個控制讀類型,那就是說器件需要在下一個數(shù)據(jù)階段向主機發(fā)回數(shù)據(jù)包。mcu需要設(shè) 置一個標(biāo)志以指示usb設(shè)備現(xiàn)在正處于傳輸模式,即準(zhǔn)備在主機發(fā)送請求時發(fā)送數(shù)據(jù)。建立階段結(jié)束之后, 主機會執(zhí)行數(shù)據(jù)階段,d12等待接收control in包。

  · 如果建立包為setesdescriptor()請求,那么建立包中的控制傳輸將指示此包為控制寫類型。在執(zhí)行 完setpescnptor請求過程后,mcu等待數(shù)據(jù)階段主機發(fā)送一個controlout標(biāo)志,mcu從d12緩沖區(qū)中減去數(shù)據(jù) 。流程現(xiàn)在處于controleout處理程序的右端,mcu首先確認(rèn)d12是否處于usb receive模式,然后mcu

  本文主要介紹pdiusbd12的固件編程問題。

  usb通信固件設(shè)計的目標(biāo)為使pdiusbd12在usb上達(dá)到最大的傳輸速率。

  1.總體規(guī)劃

  cpu忙于處理許多設(shè)備控制和數(shù)據(jù)處理等任務(wù)。通信固件設(shè)計成完全的中斷驅(qū)動方式,當(dāng)cpu處理前臺任務(wù) 時,usb的傳輸可在后臺進行,這就確保了最佳的傳輸速率和更好的軟件結(jié)構(gòu),同時簡化了編程和調(diào)試。

  后臺中斷服務(wù)程序和前臺主程序循環(huán)之間的數(shù)據(jù)交換通過事件標(biāo)志和數(shù)據(jù)緩沖區(qū)來實現(xiàn),例如,pdiusbd12 的批量輸出端點可使用循環(huán)的數(shù)據(jù)緩沖區(qū),當(dāng)diusbd12從usb收到一個數(shù)據(jù)包時,就對cpu產(chǎn)生一個中斷請求 ,cpu立即響應(yīng)中斷。

  在中斷服務(wù)程序中固件將數(shù)據(jù)包從pdiusbd12內(nèi)部緩沖區(qū)移到循環(huán)數(shù)據(jù)緩沖區(qū),并在隨后清除diusbd12的內(nèi) 部緩沖區(qū),以使其能接收新的數(shù)據(jù)包,cpu可以繼續(xù)它當(dāng)前的前臺任務(wù)直到完成。

  然后返回到主循環(huán),檢查循環(huán)緩沖區(qū)內(nèi)是否有新的數(shù)據(jù),若有就對其進行處理,否則開始其他的前臺任務(wù) 。中斷服務(wù)程序與前臺主循環(huán)通過事件標(biāo)志eppflags和數(shù)據(jù)緩沖區(qū)conrol xfer進行通信,eppflags的定義 如下:

  usb通信固件采用層次結(jié)構(gòu),如圖1所示


圖1 usb通信模塊層次圖

  2 分別介紹各層子模塊的設(shè)計

  (1)底層函數(shù)。

  最底層為兩個面向硬件電路的函數(shù):outpodb(uchar addr, uchar dm)和inpofib(uchar addr) 用以 完成cpu和d12之間的數(shù)據(jù)傳輸,這是所li其他函數(shù)的基礎(chǔ),具體代碼如下:

 。2)命令接口.

  在d12的數(shù)據(jù)手冊中定義了一套壓縮了所有訪問pdiusbd12功能的命令集,命令接口部分就是將各命令用函 數(shù)的形式加以實現(xiàn),對應(yīng)的函數(shù)主要有:

  以ushort readlnterruptregister(void)函數(shù)為例,代碼如下:


  3 中斷服務(wù)程序

  這部分代碼處理由pdiusbdl2產(chǎn)生的中斷,它將數(shù)據(jù)從pdiusbdi2的內(nèi)部fifo取回到cpu存儲器,并建立正 確的事件標(biāo)志以通知主循環(huán)程序進行處理。在isr函數(shù)的入口固件使用readlntemjptregister()來決定中 斷源,根據(jù)中斷源進入相應(yīng)的子程序進行處理。

  中斷服務(wù)處理函數(shù)代碼如下


  4.主端點操作

  這部分代碼較多,包括各個端口的發(fā)送/接收函數(shù),端點1和主端點(端點2)的收發(fā)函數(shù)相對較簡單。

  

 。2)主端點接收函數(shù)。

  5.程序說明

  在端點0的發(fā)送函數(shù)中,mcu首先需要通過讀di2的最后處理狀態(tài)寄存器,清0control_in中斷標(biāo)志位,接著 mcu在確認(rèn)di2處于傳輸模式后進行數(shù)據(jù)所的發(fā)送。由于d12的控件端點只有16bit,如果傳輸?shù)拈L度大于 16bit,mcu在傳輸階段就必須控制數(shù)據(jù)的數(shù)量,其流程如圖2所示。mcu必須檢查要發(fā)送到主機的當(dāng)前和剩余 的數(shù)據(jù)大小,如果剩下的字節(jié)數(shù)大于16,mcu將先發(fā)送16字節(jié)并減去參考長度(要求的長度)16。

  當(dāng)下一個control_in標(biāo)志來時,mcu將確定剩余的字節(jié)是否為0,如果已經(jīng)沒有數(shù)據(jù)要發(fā)送,mcu需要發(fā)送一 個空的包以指示主機數(shù)據(jù)已發(fā)送完畢。


圖2 控制點發(fā)送函數(shù)流程

  · 如果是一個有效的請求,mcu必須向控制輸出端點發(fā)送應(yīng)答建立命令,以重新使能下一個建立階段。接 下來,mcu需要證實控制傳輸是控制讀還是寫,這可以通過讀建立包中bmrequesttype的第8位來實現(xiàn)。

  · 如果控制傳輸是一個控制讀類型,那就是說器件需要在下一個數(shù)據(jù)階段向主機發(fā)回數(shù)據(jù)包。mcu需要設(shè) 置一個標(biāo)志以指示usb設(shè)備現(xiàn)在正處于傳輸模式,即準(zhǔn)備在主機發(fā)送請求時發(fā)送數(shù)據(jù)。建立階段結(jié)束之后, 主機會執(zhí)行數(shù)據(jù)階段,d12等待接收control in包。

  · 如果建立包為setesdescriptor()請求,那么建立包中的控制傳輸將指示此包為控制寫類型。在執(zhí)行 完setpescnptor請求過程后,mcu等待數(shù)據(jù)階段主機發(fā)送一個controlout標(biāo)志,mcu從d12緩沖區(qū)中減去數(shù)據(jù) 。流程現(xiàn)在處于controleout處理程序的右端,mcu首先確認(rèn)d12是否處于usb receive模式,然后mcu

相關(guān)IC型號

熱門點擊

 

推薦技術(shù)資料

DS2202型示波器試用
    說起數(shù)字示波器,普源算是國內(nèi)的老牌子了,F(xiàn)QP8N60... [詳細(xì)]
版權(quán)所有:51dzw.COM
深圳服務(wù)熱線:13751165337  13692101218
粵ICP備09112631號-6(miitbeian.gov.cn)
公網(wǎng)安備44030402000607
深圳市碧威特網(wǎng)絡(luò)技術(shù)有限公司
付款方式


 復(fù)制成功!