新聞中心

EEPW首頁 > 汽車電子 > 設(shè)計(jì)應(yīng)用 > CAN總線與USB的轉(zhuǎn)接技術(shù)

CAN總線與USB的轉(zhuǎn)接技術(shù)

作者: 時間:2010-01-14 來源:網(wǎng)絡(luò) 收藏

  3 控制部分

  控制部分使用接口控制芯片CH372來實(shí)現(xiàn)數(shù)據(jù)的接受和發(fā)送。CH372是一個USB的通用設(shè)備接口芯片,CH372在單片機(jī)端,具有8位數(shù)據(jù)和讀、寫、片選控制線以及中斷輸出,因此可以方便地掛接到單片機(jī)/DSP/MCU等控制器的系統(tǒng)上;在計(jì)算機(jī)系統(tǒng)中,CH372的配套軟件提供了簡潔易用的操作接口,因此,與本地端的單片機(jī)通訊就如同讀寫文件一樣簡單。

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

  在應(yīng)用層設(shè)計(jì)中,筆者采用的是請求加應(yīng)答的方式。該方式使用一個下傳的主動請求和一個上傳的被動應(yīng)答進(jìn)行交互式雙向數(shù)據(jù)通訊,下傳與上傳一一對應(yīng),相互關(guān)聯(lián)。主動請求是指由計(jì)算機(jī)應(yīng)用層下傳給單片機(jī)的數(shù)據(jù)請求,被動應(yīng)答則是單片機(jī)收到數(shù)據(jù)請求后,上傳給計(jì)算機(jī)應(yīng)用層的應(yīng)答數(shù)據(jù)。所有的通訊都由計(jì)算機(jī)應(yīng)用層發(fā)起,然后以接收到單片機(jī)的應(yīng)答結(jié)束,其完整的過程包括如下步驟:

  (1) 計(jì)算機(jī)應(yīng)用層按事先約定的格式將數(shù)據(jù)請求發(fā)送給CH372芯片;

  (2) CH372芯片以中斷方式通知單片機(jī);

  (3) 單片機(jī)進(jìn)入中斷服務(wù)程序,以獲取CH372的中斷狀態(tài)并分析;

  (4) 如果是上傳,則釋放當(dāng)前USB緩沖區(qū),然后退出中斷程序;

  (5) 如果是下傳,則從數(shù)據(jù)下傳緩沖區(qū)中讀取數(shù)據(jù)塊;

  (6) 分析接收到的數(shù)據(jù)塊,準(zhǔn)備應(yīng)答數(shù)據(jù),或者先退出中斷程序再處理;

  (7) 單片機(jī)將應(yīng)答數(shù)據(jù)寫入批量端點(diǎn)的上傳緩沖區(qū),然后退出中斷程序;

  (8) CH372芯片將應(yīng)答數(shù)據(jù)返回給計(jì)算機(jī);

  (9) 計(jì)算機(jī)應(yīng)用層接收到應(yīng)答數(shù)據(jù)。

  在單片機(jī)端,CH372芯片占用兩個地址位,當(dāng)A0引腳為高電平時,系統(tǒng)選擇命令端口,此時可以寫入命令;當(dāng)A0引腳為低電平時,選擇數(shù)據(jù)端口,此時可以讀寫數(shù)據(jù)。單片機(jī)通過8位并口對CH372芯片進(jìn)行讀寫時,所有操作都是由一個命令碼、若干個輸人數(shù)據(jù)和若干個輸出數(shù)據(jù)組成。

但部分命令不需要輸入數(shù)據(jù),而部分命令也可以沒有輸出數(shù)據(jù)。

  CH372芯片專門用于處理USB通訊。在接收到數(shù)據(jù)或發(fā)送完數(shù)據(jù)后,CH372將以中斷方式通知單片機(jī)進(jìn)行處理。單片機(jī)通過CH372接收和發(fā)送數(shù)據(jù)的流程圖如圖3所示。



評論


相關(guān)推薦

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

關(guān)閉