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

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于CH372芯片的USB通信系統(tǒng)軟硬件設(shè)計(jì)

          基于CH372芯片的USB通信系統(tǒng)軟硬件設(shè)計(jì)

          作者: 時(shí)間:2010-09-21 來(lái)源:網(wǎng)絡(luò) 收藏

            3 軟件

            在計(jì)算機(jī)應(yīng)用層與本地端單片機(jī)之間提供了端對(duì)端的連接,在這個(gè)基礎(chǔ)上,接口可以選用單向數(shù)據(jù)流和請(qǐng)求加應(yīng)答兩種通訊方式。采用請(qǐng)求加應(yīng)答的方式實(shí)現(xiàn),都是由計(jì)算機(jī)主動(dòng)請(qǐng)求,單片機(jī)被動(dòng)應(yīng)答完成數(shù)據(jù)傳輸。在程序編制過(guò)程中約定3種數(shù)據(jù)傳輸模式,通過(guò)計(jì)算機(jī)傳輸數(shù)據(jù)進(jìn)行確定,分別是:

            1)計(jì)算機(jī)下傳數(shù)據(jù)01H,單片機(jī)上傳存放數(shù)據(jù)的文件的參數(shù);

            2)計(jì)算機(jī)下傳數(shù)據(jù)02H及8字節(jié)參數(shù),8字節(jié)參數(shù)包括存放數(shù)據(jù)的地址、數(shù)據(jù)的數(shù)量,單片機(jī)通過(guò)調(diào)用相關(guān)子程序分析參數(shù),并將相應(yīng)的數(shù)據(jù)上傳;

            3)計(jì)算機(jī)下傳數(shù)據(jù)03H,單片機(jī)執(zhí)行關(guān)閉的操作命令。

            3.1 單片機(jī)端程序

            在單片機(jī)端采用匯編語(yǔ)言編寫(xiě)程序,在程序過(guò)程中,考慮到的可靠性、穩(wěn)定性以及調(diào)試過(guò)程直觀性的需要,故采用匯編語(yǔ)言編寫(xiě)程序,程序流程如圖2所示。

            

            3.2 計(jì)算機(jī)端程序

            在計(jì)算機(jī)端提供了應(yīng)用層接口,應(yīng)用層接口是由CH372動(dòng)態(tài)鏈接庫(kù)DLL提供的面向功能應(yīng)用的API,所有API在調(diào)用后都有操作狀態(tài)返回,但不一定有應(yīng)答數(shù)據(jù)。CH372動(dòng)態(tài)鏈接庫(kù)提供的API包括:設(shè)備管理API、數(shù)據(jù)傳輸API、中斷處理API。

            在計(jì)算機(jī)端采用Visual Basic(VB)編寫(xiě)程序,利用VisualBasic的該特性,調(diào)用CH372動(dòng)態(tài)鏈接庫(kù)DLL提供的面向功能的應(yīng)用API函數(shù)編寫(xiě)計(jì)算機(jī)端的應(yīng)用程序,其工作流程如圖3所示。

            



          評(píng)論


          相關(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); })();