基于A(yíng)Tmega8515的USB-CAN適配器的實(shí)現

圖2 USB2CAN適配器數據傳輸處理框圖
2 USB-CAN適配器的軟件設計
USB-CAN 適配器軟件包括兩部分:ATmega8515中的固件和PC機內USB2CAN適配器的驅動(dòng)軟件.
2. 1 USB-CAN適配器固件編程
良好的開(kāi)發(fā)環(huán)境是開(kāi)發(fā)單片機軟件質(zhì)量和速度的保證.USB2CAN 適配器采用GNU AVR 的最新版本W(wǎng)inAVR 編程,它能夠對所有AVR 單片機用C 或C + + 語(yǔ)言進(jìn)行編程,且能在WIN2000 下運行.
USB-CAN 適配器固件設計成完全的中斷驅動(dòng),當ATmega8515處理前臺任務(wù)時(shí),USB 和CAN 的傳輸可以在后臺同時(shí)進(jìn)行,大大提高了實(shí)際傳輸效率,編程和調試亦很方便. 后臺的中斷處理子程序通過(guò)設置事件標志和數據緩沖區來(lái)實(shí)現和前臺主程序之間的數據交換(如圖2 所示) .當ATmega8515檢測到CAN 控制器的狀態(tài)寄存器而得知接收緩沖CANRX-Buffer有數據,就會(huì )把數據傳到USB 控制器空閑發(fā)送緩沖區TXFIFO-1或TXFIFO-2中; 同樣, 當USB控制器的接收緩沖區RXFIFO-1或RXFIFO-2充滿(mǎn)數據時(shí),ATmega8515就會(huì )把RXFIFO-1或RXFIFO-2的數據讀到內部一個(gè)連續的RAM空間,當CAN總線(xiàn)控制器發(fā)送緩沖區CAN-TX-Buffer 為空時(shí),再把數據從RAM傳到CAN-TX-Buffer.
USB -CAN適配器固件設計中采用乒乓緩存法提高實(shí)際傳輸速率. USBN9603有7個(gè)端點(diǎn), 通常FIFO內的數據進(jìn)行傳送或接收時(shí)每個(gè)端點(diǎn)對應一個(gè)管道,但是,兩個(gè)同方向傳輸數據的端點(diǎn)也可以利用一個(gè)管道,這樣可以有效地提高數據的傳輸率,因為當第一個(gè)端點(diǎn)的FIFO傳輸數據時(shí),微處理器可以對第二個(gè)端點(diǎn)的FIFO進(jìn)行數據讀或寫(xiě),反之亦然.
USBN9603 在進(jìn)行批量傳輸時(shí),其實(shí)際傳輸率大約是512kb/s ,這往往是由于主機的控制器最大每幀數據包數量限制造成的,而并非USBN9603本身傳輸性能. 其它傳輸方式,如中斷傳輸、同步傳輸、控制傳輸的最高傳輸速率為1.5Mb/s. 采用乒乓緩存法后,可使傳輸速率提高一倍,從而使傳輸速率為1Mb/s 的CAN總線(xiàn)控制器沒(méi)有等待接收數據和發(fā)送數據空間的情況,解決了數據傳輸中的“瓶頸”問(wèn)題.在USB-CAN 適配器中,端點(diǎn)EP1 (TXFIFO-1) 和EP3 (TXFIFO-2)發(fā)送數據到主機,EP2(RXFIFO-1) 和EP4(RXFIFO-2)從主機接收數據(如圖2 所示) ,其FIFO中的數據長(cháng)度都是64字節. 在主機進(jìn)行枚舉過(guò)程中,當節點(diǎn)接收到配置設備請求,固件程序就可以把EP1/EP3和EP2/EP4分別分配到同一個(gè)端點(diǎn)地址.USBN9603 內置有一個(gè)優(yōu)先級表,如果多個(gè)端點(diǎn)編程指定為同一個(gè)端點(diǎn)號,具有較低號的端點(diǎn)(利用TOGGL 標志區分高低)首先得到響應和數據.
2. 1. 1 數據上傳
當主機發(fā)送一個(gè)IN 令牌給USB-CAN 適配器,適配器就開(kāi)始向PC機發(fā)送數據. 圖3 為數據上傳的流程圖. 通過(guò)兩個(gè)標志UPDATE1 和UPDATE2 把主程序和Tx 中斷子程序緊密聯(lián)系起來(lái),體現了前臺后臺程序設計思想. 當UPDATE1 清0 ,上傳數據完畢;當置1 時(shí),開(kāi)始傳輸下一批數據. 圖4為EP1的Tx中斷子程序流程圖,UPDATE1 在該中斷子程序置1.UPDATE2的運行和UPDATE1相似.

圖3 主程序處理上傳送FIFO 數據流程

圖4 EP1 的Tx 中斷子程序流程
2. 1. 2 數據下傳
當主機發(fā)送一個(gè)OUT令牌給USB2CAN適配器,適配器就開(kāi)始接收PC發(fā)送的數據,并將其暫存在A(yíng)Tmega8515 的RAM中,然后傳到CAN總線(xiàn)控制器的數據發(fā)送緩沖區CAN.TX.Buffer. 圖5 為EP2的Rx中斷子程序流程,顯示了PC的數據如何傳到CAN總線(xiàn)的發(fā)送緩沖區. 端點(diǎn)EP4 的Rx 中斷子程序流程和EP2的相似.
評論