CAN總線與USB的轉接技術
發布時間:2010-07-30
中心議題:
USB總線就是一種新型、快速、雙向、同步傳輸、並可以熱插拔的數據傳輸總線,它滿足了人們對總線易用性、擴展能力強和低成本的要求,因此,USB在PC外設領域的傳輸速率從1.5Mbps的低速和12Mbps的全速提高到如今的480Mbps的高速數據傳輸。目前,USB總線已經逐漸成為計算機領域中應用最廣泛的外設總線連接規範。
與此同時CAN(ControllerAreaNetwork)總zong線xian技ji術shu也ye日ri趨qu成cheng熟shu,其qi傳chuan輸shu距ju離li遠yuan,傳chuan輸shu速su率lv高gao,抗kang幹gan擾rao能neng力li強qiang,易yi於yu組zu網wang,而er且qie節jie約yue成cheng本ben,已yi被bei公gong認ren為wei是shi最zui有you前qian途tu的de現xian場chang總zong線xian之zhi一yi,並bing在zai國guo內nei外wai控kong製zhi領ling域yu獲huo得de了le普pu遍bian重zhong視shi。目mu前qian,德de國guo現xian代dai汽qi車che公gong司si和he歐ou洲zhou其qi他ta幾ji個ge主zhu要yao汽qi車che公gong司si的de車che內nei控kong製zhi係xi統tong全quan部bu采cai用yongCAN總線,國內的很多工業控製係統,(如車載控製係統、醫療控製係統和很多智能小區中的智能控製係統)都采用了CAN總線技術。隨著更加完善的CAN2.0B協議的提出,國外已有專家提出預言,CAN總線的應用壽命至少還有二十年。
雖然上述兩種總線的特點都比較突出,但二者在控製領域的應用仍有其自身局限性。USB的傳輸距離通常不超過幾十米,經常達不到工業應用的要求;而CAN適配器與主機在傳統接口上的連接十分繁瑣和複雜,不利於CAN的應用擴展。所以,本設計考慮將傳輸距離較遠的CAN總線技術與即插即用的USB接口技術相結合,即利用USB接口方便的實現CAN總線和主機的連接,從而有力的擴展了CAN總線的監控和管理功能,擴大CAN總線的應用範圍。
1接口模塊的總體設計
本文所介紹的USB-CAN轉接技術總體框圖如圖1所示,該設計分兩大部分:一是與主機USB接口相連的USB控製部分;二是與CAN總線相連的CAN控製器部分。兩者中間通過單片機聯係起來。USB控製部分用USB接口控製芯片CH372來實現數據的接收和發送;CAN控製器SJA1000用來實現CAN總線間的數據通信。單片機用來進行相應的控製、協調以及係統的通信。

2AT89C52在係統中的功能
單片機AT89C52在係統中主要起到一個橋梁和協調控製的作用。主機通過CH372把數據發送到單片機,單片機再把數據通過SJA1000發送到CAN總線,從而實現整個係統的通信。此外,單片機還需要對CH372和SJA1000進行初始化,並通過地址/數據以複用的方式訪問CH372和SJA1000。youyuzaifangwenqizhongyigexinpianshi,ruguolingyigexinpianhaibaochiyoushuchu,namedanpianjijiubunengdudaozhengquedeshuju,yinci,danpianjiyaotongguopianxuankongzhixinhaofenpeiyouxiaodizhi。danpianjizhuyaotongguozhuxunhuanlaijiankongxitongdetongxin,qizhuxunhuanliuchengtujiantu2所示。[page]

3USB控製部分
USB控製部分使用USB接口控製芯片CH372來實現數據的接受和發送。CH372是一個USB總線的通用設備接口芯片,CH372在單片機端,具有8位數據總線和讀、寫、片選控製線以及中斷輸出,因此可以方便地掛接到單片機/DSP/MCU等控製器的係統總線上;在計算機係統中,CH372的配套軟件提供了簡潔易用的操作接口,因此,與本地端的單片機通訊就如同讀寫文件一樣簡單。
CH372在計算機端提供有應用層接口,應用層接口是由CH372動態鏈接庫DLL提供的麵向功能應用的API,所有API在調用後都會有操作狀態返回,但不一定有應答數據。CH372動態鏈接庫提供的API包括:設備管理API、數據傳輸API、中斷處理API等。
在(zai)應(ying)用(yong)層(ceng)設(she)計(ji)中(zhong),筆(bi)者(zhe)采(cai)用(yong)的(de)是(shi)請(qing)求(qiu)加(jia)應(ying)答(da)的(de)方(fang)式(shi)。該(gai)方(fang)式(shi)使(shi)用(yong)一(yi)個(ge)下(xia)傳(chuan)的(de)主(zhu)動(dong)請(qing)求(qiu)和(he)一(yi)個(ge)上(shang)傳(chuan)的(de)被(bei)動(dong)應(ying)答(da)進(jin)行(xing)交(jiao)互(hu)式(shi)雙(shuang)向(xiang)數(shu)據(ju)通(tong)訊(xun),下(xia)傳(chuan)與(yu)上(shang)傳(chuan)一(yi)一(yi)對(dui)應(ying),相(xiang)互(hu)關(guan)聯(lian)。主(zhu)動(dong)請(qing)求(qiu)是(shi)指(zhi)由(you)計(ji)算(suan)機(ji)應(ying)用(yong)層(ceng)下(xia)傳(chuan)給(gei)單(dan)片(pian)機(ji)的(de)數(shu)據(ju)請(qing)求(qiu),被(bei)動(dong)應(ying)答(da)則(ze)是(shi)單(dan)片(pian)機(ji)收(shou)到(dao)數(shu)據(ju)請(qing)求(qiu)後(hou),上(shang)傳(chuan)給(gei)計(ji)算(suan)機(ji)應(ying)用(yong)層(ceng)的(de)應(ying)答(da)數(shu)據(ju)。所(suo)有(you)的(de)通(tong)訊(xun)都(dou)由(you)計(ji)算(suan)機(ji)應(ying)用(yong)層(ceng)發(fa)起(qi),然(ran)後(hou)以(yi)接(jie)收(shou)到(dao)單(dan)片(pian)機(ji)的(de)應(ying)答(da)結(jie)束(shu),其(qi)完(wan)整(zheng)的(de)過(guo)程(cheng)包(bao)括(kuo)如(ru)下(xia)步(bu)驟(zhou):
(1)計算機應用層按事先約定的格式將數據請求發送給CH372芯片;
(2)CH372芯片以中斷方式通知單片機;
(3)單片機進入中斷服務程序,以獲取CH372的中斷狀態並分析;
(4)如果是上傳,則釋放當前USB緩衝區,然後退出中斷程序;
(5)如果是下傳,則從數據下傳緩衝區中讀取數據塊;
(6)分析接收到的數據塊,準備應答數據,或者先退出中斷程序再處理;
(7)單片機將應答數據寫入批量端點的上傳緩衝區,然後退出中斷程序;
(8)CH372芯片將應答數據返回給計算機;
(9)計算機應用層接收到應答數據。
在單片機端,CH372芯片占用兩個地址位,當A0引腳為高電平時,係統選擇命令端口,此時可以寫入命令;當A0引腳為低電平時,選擇數據端口,此時可以讀寫數據。單片機通過8位並口對CH372芯片進行讀寫時,所有操作都是由一個命令碼、若幹個輸人數據和若幹個輸出數據組成。
但部分命令不需要輸入數據,而部分命令也可以沒有輸出數據。
CH372芯片專門用於處理USB通訊。在接收到數據或發送完數據後,CH372將以中斷方式通知單片機進行處理。單片機通過CH372接收和發送數據的流程圖如圖3所示。
[page]
4CAN控製器部分
CAN控製器SJA1000可以通過總線驅動器PCA82C250接收CAN總線上的信號,並將其傳送到微控製器,同時接收微控製器傳來的信號,然後通過驅動器再傳送到CAN總線。
由於SJA1000與CH372的地址/數據總線共用,故應通過片選加以區別。操作時可將地址鎖存管腳ALE/AS與單片機的ALE/P相連接,WR和RD管腳分別與單片機的WR、RD相連接。MODE管腳拉高則選用INTEL模式。應用時應將中斷管腳INT與AT89C52的INT1相連,並接外部中斷1,同時應接上拉10kΩ電阻。電源與地之間應連接去耦電容。
SJA1000的TX0和RX0管腳分別與驅動器82C250的TX和RX相連接,可用於向CAN總線發送和接收數據。此時,需要將RX1管腳接到一個穩定的電平上,並將係統中的RX1接地。
在CAN總線端,單片機控製著傳輸流程。SJA1000的初始化由單片機完成,其初始化流程圖見圖4所示,在正常工作模式下,單片機可控製SJA1000的收發等操作,以完成和CAN總線的通信。當主機端傳來數據時,單片機將數據轉發到SJA1000的發送緩衝區,並由SJA1000根據CAN協議自動封裝後發送到CAN總線上;當SJA1000接收到來自CAN總線上的一個有效的報文後,係統將在INT引腳上產生一個硬件中斷信號(低有效),當單片機收到中斷信號後,即進人中斷服務程序,以完成數據的接收和處理,其中斷服務流程見圖5所示。

本文介紹的USB-CAN轉接係統可以實現預期的目標。它能夠實現數據的傳輸,從而為CAN總線和PC機的連接提供了一個方便實用的USB接口。
- USB-CAN接口模塊的總體設計
- 接口模塊的硬件設計方案
- 與主機USB接口相連的USB控製部分設計
- 與CAN總線相連的CAN控製器部分設計
USB總線就是一種新型、快速、雙向、同步傳輸、並可以熱插拔的數據傳輸總線,它滿足了人們對總線易用性、擴展能力強和低成本的要求,因此,USB在PC外設領域的傳輸速率從1.5Mbps的低速和12Mbps的全速提高到如今的480Mbps的高速數據傳輸。目前,USB總線已經逐漸成為計算機領域中應用最廣泛的外設總線連接規範。
與此同時CAN(ControllerAreaNetwork)總zong線xian技ji術shu也ye日ri趨qu成cheng熟shu,其qi傳chuan輸shu距ju離li遠yuan,傳chuan輸shu速su率lv高gao,抗kang幹gan擾rao能neng力li強qiang,易yi於yu組zu網wang,而er且qie節jie約yue成cheng本ben,已yi被bei公gong認ren為wei是shi最zui有you前qian途tu的de現xian場chang總zong線xian之zhi一yi,並bing在zai國guo內nei外wai控kong製zhi領ling域yu獲huo得de了le普pu遍bian重zhong視shi。目mu前qian,德de國guo現xian代dai汽qi車che公gong司si和he歐ou洲zhou其qi他ta幾ji個ge主zhu要yao汽qi車che公gong司si的de車che內nei控kong製zhi係xi統tong全quan部bu采cai用yongCAN總線,國內的很多工業控製係統,(如車載控製係統、醫療控製係統和很多智能小區中的智能控製係統)都采用了CAN總線技術。隨著更加完善的CAN2.0B協議的提出,國外已有專家提出預言,CAN總線的應用壽命至少還有二十年。
雖然上述兩種總線的特點都比較突出,但二者在控製領域的應用仍有其自身局限性。USB的傳輸距離通常不超過幾十米,經常達不到工業應用的要求;而CAN適配器與主機在傳統接口上的連接十分繁瑣和複雜,不利於CAN的應用擴展。所以,本設計考慮將傳輸距離較遠的CAN總線技術與即插即用的USB接口技術相結合,即利用USB接口方便的實現CAN總線和主機的連接,從而有力的擴展了CAN總線的監控和管理功能,擴大CAN總線的應用範圍。
1接口模塊的總體設計
本文所介紹的USB-CAN轉接技術總體框圖如圖1所示,該設計分兩大部分:一是與主機USB接口相連的USB控製部分;二是與CAN總線相連的CAN控製器部分。兩者中間通過單片機聯係起來。USB控製部分用USB接口控製芯片CH372來實現數據的接收和發送;CAN控製器SJA1000用來實現CAN總線間的數據通信。單片機用來進行相應的控製、協調以及係統的通信。

2AT89C52在係統中的功能
單片機AT89C52在係統中主要起到一個橋梁和協調控製的作用。主機通過CH372把數據發送到單片機,單片機再把數據通過SJA1000發送到CAN總線,從而實現整個係統的通信。此外,單片機還需要對CH372和SJA1000進行初始化,並通過地址/數據以複用的方式訪問CH372和SJA1000。youyuzaifangwenqizhongyigexinpianshi,ruguolingyigexinpianhaibaochiyoushuchu,namedanpianjijiubunengdudaozhengquedeshuju,yinci,danpianjiyaotongguopianxuankongzhixinhaofenpeiyouxiaodizhi。danpianjizhuyaotongguozhuxunhuanlaijiankongxitongdetongxin,qizhuxunhuanliuchengtujiantu2所示。[page]

3USB控製部分
USB控製部分使用USB接口控製芯片CH372來實現數據的接受和發送。CH372是一個USB總線的通用設備接口芯片,CH372在單片機端,具有8位數據總線和讀、寫、片選控製線以及中斷輸出,因此可以方便地掛接到單片機/DSP/MCU等控製器的係統總線上;在計算機係統中,CH372的配套軟件提供了簡潔易用的操作接口,因此,與本地端的單片機通訊就如同讀寫文件一樣簡單。
CH372在計算機端提供有應用層接口,應用層接口是由CH372動態鏈接庫DLL提供的麵向功能應用的API,所有API在調用後都會有操作狀態返回,但不一定有應答數據。CH372動態鏈接庫提供的API包括:設備管理API、數據傳輸API、中斷處理API等。
在(zai)應(ying)用(yong)層(ceng)設(she)計(ji)中(zhong),筆(bi)者(zhe)采(cai)用(yong)的(de)是(shi)請(qing)求(qiu)加(jia)應(ying)答(da)的(de)方(fang)式(shi)。該(gai)方(fang)式(shi)使(shi)用(yong)一(yi)個(ge)下(xia)傳(chuan)的(de)主(zhu)動(dong)請(qing)求(qiu)和(he)一(yi)個(ge)上(shang)傳(chuan)的(de)被(bei)動(dong)應(ying)答(da)進(jin)行(xing)交(jiao)互(hu)式(shi)雙(shuang)向(xiang)數(shu)據(ju)通(tong)訊(xun),下(xia)傳(chuan)與(yu)上(shang)傳(chuan)一(yi)一(yi)對(dui)應(ying),相(xiang)互(hu)關(guan)聯(lian)。主(zhu)動(dong)請(qing)求(qiu)是(shi)指(zhi)由(you)計(ji)算(suan)機(ji)應(ying)用(yong)層(ceng)下(xia)傳(chuan)給(gei)單(dan)片(pian)機(ji)的(de)數(shu)據(ju)請(qing)求(qiu),被(bei)動(dong)應(ying)答(da)則(ze)是(shi)單(dan)片(pian)機(ji)收(shou)到(dao)數(shu)據(ju)請(qing)求(qiu)後(hou),上(shang)傳(chuan)給(gei)計(ji)算(suan)機(ji)應(ying)用(yong)層(ceng)的(de)應(ying)答(da)數(shu)據(ju)。所(suo)有(you)的(de)通(tong)訊(xun)都(dou)由(you)計(ji)算(suan)機(ji)應(ying)用(yong)層(ceng)發(fa)起(qi),然(ran)後(hou)以(yi)接(jie)收(shou)到(dao)單(dan)片(pian)機(ji)的(de)應(ying)答(da)結(jie)束(shu),其(qi)完(wan)整(zheng)的(de)過(guo)程(cheng)包(bao)括(kuo)如(ru)下(xia)步(bu)驟(zhou):
(1)計算機應用層按事先約定的格式將數據請求發送給CH372芯片;
(2)CH372芯片以中斷方式通知單片機;
(3)單片機進入中斷服務程序,以獲取CH372的中斷狀態並分析;
(4)如果是上傳,則釋放當前USB緩衝區,然後退出中斷程序;
(5)如果是下傳,則從數據下傳緩衝區中讀取數據塊;
(6)分析接收到的數據塊,準備應答數據,或者先退出中斷程序再處理;
(7)單片機將應答數據寫入批量端點的上傳緩衝區,然後退出中斷程序;
(8)CH372芯片將應答數據返回給計算機;
(9)計算機應用層接收到應答數據。
在單片機端,CH372芯片占用兩個地址位,當A0引腳為高電平時,係統選擇命令端口,此時可以寫入命令;當A0引腳為低電平時,選擇數據端口,此時可以讀寫數據。單片機通過8位並口對CH372芯片進行讀寫時,所有操作都是由一個命令碼、若幹個輸人數據和若幹個輸出數據組成。
但部分命令不需要輸入數據,而部分命令也可以沒有輸出數據。
CH372芯片專門用於處理USB通訊。在接收到數據或發送完數據後,CH372將以中斷方式通知單片機進行處理。單片機通過CH372接收和發送數據的流程圖如圖3所示。
[page]4CAN控製器部分
CAN控製器SJA1000可以通過總線驅動器PCA82C250接收CAN總線上的信號,並將其傳送到微控製器,同時接收微控製器傳來的信號,然後通過驅動器再傳送到CAN總線。
由於SJA1000與CH372的地址/數據總線共用,故應通過片選加以區別。操作時可將地址鎖存管腳ALE/AS與單片機的ALE/P相連接,WR和RD管腳分別與單片機的WR、RD相連接。MODE管腳拉高則選用INTEL模式。應用時應將中斷管腳INT與AT89C52的INT1相連,並接外部中斷1,同時應接上拉10kΩ電阻。電源與地之間應連接去耦電容。
SJA1000的TX0和RX0管腳分別與驅動器82C250的TX和RX相連接,可用於向CAN總線發送和接收數據。此時,需要將RX1管腳接到一個穩定的電平上,並將係統中的RX1接地。
在CAN總線端,單片機控製著傳輸流程。SJA1000的初始化由單片機完成,其初始化流程圖見圖4所示,在正常工作模式下,單片機可控製SJA1000的收發等操作,以完成和CAN總線的通信。當主機端傳來數據時,單片機將數據轉發到SJA1000的發送緩衝區,並由SJA1000根據CAN協議自動封裝後發送到CAN總線上;當SJA1000接收到來自CAN總線上的一個有效的報文後,係統將在INT引腳上產生一個硬件中斷信號(低有效),當單片機收到中斷信號後,即進人中斷服務程序,以完成數據的接收和處理,其中斷服務流程見圖5所示。

本文介紹的USB-CAN轉接係統可以實現預期的目標。它能夠實現數據的傳輸,從而為CAN總線和PC機的連接提供了一個方便實用的USB接口。
特別推薦
- 噪聲中提取真值!瑞盟科技推出MSA2240電流檢測芯片賦能多元高端測量場景
- 10MHz高頻運行!氮矽科技發布集成驅動GaN芯片,助力電源能效再攀新高
- 失真度僅0.002%!力芯微推出超低內阻、超低失真4PST模擬開關
- 一“芯”雙電!聖邦微電子發布雙輸出電源芯片,簡化AFE與音頻設計
- 一機適配萬端:金升陽推出1200W可編程電源,賦能高端裝備製造
技術文章更多>>
- 大聯大世平集團首度亮相北京國際汽車展 攜手全球芯片夥伴打造智能車整合應用新典範
- 2026北京車展即將啟幕,高通攜手汽車生態“朋友圈”推動智能化體驗再升級
- 邊緣重構智慧城市:FPGA SoM 如何破解視頻係統 “重而慢”
- 如何使用工業級串行數字輸入來設計具有並行接口的數字輸入模塊
- 意法半導體將舉辦投資者會議探討低地球軌道(LEO)發展機遇
技術白皮書下載更多>>
- 車規與基於V2X的車輛協同主動避撞技術展望
- 數字隔離助力新能源汽車安全隔離的新挑戰
- 汽車模塊拋負載的解決方案
- 車用連接器的安全創新應用
- Melexis Actuators Business Unit
- Position / Current Sensors - Triaxis Hall
熱門搜索





