新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ATmega8515的USB-CAN適配器的實現(xiàn)

基于ATmega8515的USB-CAN適配器的實現(xiàn)

作者: 時間:2013-10-26 來源:網(wǎng)絡 收藏


圖2  USB2CAN數(shù)據(jù)傳輸處理框圖

2  的軟件設計

   軟件包括兩部分:中的固件和PC機內(nèi)USB2CAN適配器的驅(qū)動軟件.

2. 1  適配器固件編程
  良好的開發(fā)環(huán)境是開發(fā)單片機軟件質(zhì)量和速度的保證.USB2CAN 適配器采用GNU AVR 的最新版本W(wǎng)inAVR 編程,它能夠?qū)λ蠥VR 單片機用C 或C + + 語言進行編程,且能在WIN2000 下運行.

  USB-CAN 適配器固件設計成完全的中斷驅(qū)動,當處理前臺任務時,USB 和CAN 的傳輸可以在后臺同時進行,大大提高了實際傳輸效率,編程和調(diào)試亦很方便. 后臺的中斷處理子程序通過設置事件標志和數(shù)據(jù)緩沖區(qū)來實現(xiàn)和前臺主程序之間的數(shù)據(jù)交換(如圖2 所示) .當檢測到CAN 控制器的狀態(tài)寄存器而得知接收緩沖CANRX-Buffer有數(shù)據(jù),就會把數(shù)據(jù)傳到USB 控制器空閑發(fā)送緩沖區(qū)TXFIFO-1或TXFIFO-2中; 同樣, 當USB控制器的接收緩沖區(qū)RXFIFO-1或RXFIFO-2充滿數(shù)據(jù)時,ATmega8515就會把RXFIFO-1或RXFIFO-2的數(shù)據(jù)讀到內(nèi)部一個連續(xù)的RAM空間,當CAN總線控制器發(fā)送緩沖區(qū)CAN-TX-Buffer 為空時,再把數(shù)據(jù)從RAM傳到CAN-TX-Buffer.

  USB -CAN適配器固件設計中采用乒乓緩存法提高實際傳輸速率. USBN9603有7個端點, 通常FIFO內(nèi)的數(shù)據(jù)進行傳送或接收時每個端點對應一個管道,但是,兩個同方向傳輸數(shù)據(jù)的端點也可以利用一個管道,這樣可以有效地提高數(shù)據(jù)的傳輸率,因為當?shù)谝粋€端點的FIFO傳輸數(shù)據(jù)時,微處理器可以對第二個端點的FIFO進行數(shù)據(jù)讀或?qū)?反之亦然.

  USBN9603 在進行批量傳輸時,其實際傳輸率大約是512kb/s ,這往往是由于主機的控制器最大每幀數(shù)據(jù)包數(shù)量限制造成的,而并非USBN9603本身傳輸性能. 其它傳輸方式,如中斷傳輸、同步傳輸、控制傳輸?shù)淖罡邆鬏斔俾蕿?.5Mb/s. 采用乒乓緩存法后,可使傳輸速率提高一倍,從而使傳輸速率為1Mb/s 的CAN總線控制器沒有等待接收數(shù)據(jù)和發(fā)送數(shù)據(jù)空間的情況,解決了數(shù)據(jù)傳輸中的“瓶頸”問題.在USB-CAN 適配器中,端點EP1 (TXFIFO-1) 和EP3 (TXFIFO-2)發(fā)送數(shù)據(jù)到主機,EP2(RXFIFO-1) 和EP4(RXFIFO-2)從主機接收數(shù)據(jù)(如圖2 所示) ,其FIFO中的數(shù)據(jù)長度都是64字節(jié). 在主機進行枚舉過程中,當節(jié)點接收到配置設備請求,固件程序就可以把EP1/EP3和EP2/EP4分別分配到同一個端點地址.USBN9603 內(nèi)置有一個優(yōu)先級表,如果多個端點編程指定為同一個端點號,具有較低號的端點(利用TOGGL 標志區(qū)分高低)首先得到響應和數(shù)據(jù).

2. 1. 1  數(shù)據(jù)上傳
  當主機發(fā)送一個IN 令牌給USB-CAN 適配器,適配器就開始向PC機發(fā)送數(shù)據(jù). 圖3 為數(shù)據(jù)上傳的流程圖. 通過兩個標志UPDATE1 和UPDATE2 把主程序和Tx 中斷子程序緊密聯(lián)系起來,體現(xiàn)了前臺后臺程序設計思想. 當UPDATE1 清0 ,上傳數(shù)據(jù)完畢;當置1 時,開始傳輸下一批數(shù)據(jù). 圖4為EP1的Tx中斷子程序流程圖,UPDATE1 在該中斷子程序置1.UPDATE2的運行和UPDATE1相似.

圖3  主程序處理上傳送FIFO 數(shù)據(jù)流程

圖4  EP1 的Tx 中斷子程序流程


2. 1. 2  數(shù)據(jù)下傳
  當主機發(fā)送一個OUT令牌給USB2CAN適配器,適配器就開始接收PC發(fā)送的數(shù)據(jù),并將其暫存在ATmega8515 的RAM中,然后傳到CAN總線控制器的數(shù)據(jù)發(fā)送緩沖區(qū)CAN.TX.Buffer. 圖5 為EP2的Rx中斷子程序流程,顯示了PC的數(shù)據(jù)如何傳到CAN總線的發(fā)送緩沖區(qū). 端點EP4 的Rx 中斷子程序流程和EP2的相似.


評論


相關推薦

技術專區(qū)

關閉