<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > AVR單片機的CAN總線(xiàn)分析儀設計

AVR單片機的CAN總線(xiàn)分析儀設計

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

AVR單片機的CAN總線(xiàn)分析儀設計

圖3 液晶顯示接口

2.3 鍵盤(pán)輸入接口

  圖4所示為鍵盤(pán)輸入接口的硬件原理圖。鍵盤(pán)輸入采用了廣州周立功單片機發(fā)展有限公司的數碼管顯示驅動(dòng)及鍵盤(pán)掃描管理芯片ZLG7289B,它可以?huà)呙韫芾矶噙_64只按鍵。ZLG7289B采用SPI 串行總線(xiàn)與微控制器接口,僅占用少數幾根I/O接口線(xiàn)。為了使鍵盤(pán)掃描得以正常進(jìn)行,下拉電阻R1~R8和位選電阻R9、R10 是必需的。下拉電阻取值范圍是10~100 kΩ,位選電阻取值范圍1~10 kΩ。如果需要增加或減少按鍵,建議按列增加或裁減鍵盤(pán),即增加或省略相應列的電阻。應注意裁減鍵盤(pán)時(shí)下拉電阻一個(gè)都不能省去。

AVR單片機的CAN總線(xiàn)分析儀設計

圖4 鍵盤(pán)輸入接口

3 CAN分析儀的軟件設計

  本系統的軟件設計通過(guò)的開(kāi)發(fā)工具AVRICC用C語(yǔ)言編制,并依據各項功能進(jìn)行了模塊化設計,主要包括:自適應波特率模塊、定時(shí)器模塊、報文接收模塊、狀態(tài)顯示模塊、CAN中斷處理模塊、控制器初始化模塊和總線(xiàn)狀態(tài)計算模塊等。其中自適應波特率、報文接收和總線(xiàn)狀態(tài)計算是核心與關(guān)鍵。限于篇幅,僅介紹這幾種功能模塊。

3.1 軟件的主程序框架

  分析儀的主要功能是監測現場(chǎng)狀況。首先要使其接入總線(xiàn),能夠正常接收總線(xiàn)報文。因為總線(xiàn)上的波特率未知,需要對總線(xiàn)的波特率進(jìn)行自識別,找到正確的波特率并初始化CAN控制器,進(jìn)入CAN總線(xiàn)正常工作狀態(tài),接收總線(xiàn)上的各種報文。CAN總線(xiàn)不是按地址來(lái)進(jìn)行報文傳送的,可以設置分析儀接收總線(xiàn)上的一切報文,也可以通過(guò)鍵盤(pán)輸入需要接收的報文。CAN總線(xiàn)上一旦出現錯誤,出現錯誤的節點(diǎn)就會(huì )向總線(xiàn)發(fā)送標示錯誤的錯誤幀。利用這個(gè)特性,接收錯誤幀,并將它顯示出來(lái)用于分析總線(xiàn)的各種錯誤。與此同時(shí),通過(guò)定時(shí)器來(lái)確定每單位時(shí)間的正確報文數和錯誤報文數,用于分析總線(xiàn)的狀態(tài)是否正常、利用是否充分等。程序總體框架如圖5所示。

AVR單片機的CAN總線(xiàn)分析儀設計

圖5 程序總體框圖

3.2 自適應波特率

  自適應波特率是在未知總線(xiàn)波特率的情況下自動(dòng)檢測CAN總線(xiàn)波特率,并且不影響總線(xiàn)的正常運行。已往的自適應波特率檢測主要是向總線(xiàn)發(fā)出報文,若接入節點(diǎn)(分析儀)假設的波特率與網(wǎng)絡(luò )實(shí)際波特率相沖突,則該節點(diǎn)自身的CAN控制器將產(chǎn)生錯誤幀,這是對檢測到的總線(xiàn)錯誤的正常反應。如果允許該錯誤幀發(fā)送到總線(xiàn)上,將導致網(wǎng)絡(luò )上其他節點(diǎn)也收到該錯誤幀,從而產(chǎn)生網(wǎng)絡(luò )堵塞。這種方法嚴重影響了總線(xiàn)的正常運行,輕則使總線(xiàn)在檢測階段不能正常工作,重則影響總線(xiàn)的整個(gè)調度算法,使總線(xiàn)發(fā)生紊亂甚至關(guān)閉。

  本系統所選用的CAN控制器SJA1000具有獨特的只聽(tīng)模式。在該模式下,CAN控制器進(jìn)入錯誤認可狀態(tài),即無(wú)論接收信息成功與否,都不能向總線(xiàn)發(fā)送任何信息,只能接收報文。這樣就不影響總線(xiàn)的正常運行,其他功能都如同在正常操作模式下一樣使用。

  自適應波特率需要在網(wǎng)絡(luò )中至少有1個(gè)節點(diǎn)在發(fā)送報文,而且需要預先設定1張包含所有可能波特率的表格。在建表時(shí)考慮到表的長(cháng)度越長(cháng),檢測所需要的時(shí)間和報文數就越多,所以只取了CiA(CAN in Automation)協(xié)會(huì )推薦的幾種標準通信波特率和工業(yè)現場(chǎng)常用的波特率。

  CAN控制器首先進(jìn)入復位模式。接著(zhù)設置初始波特率,波特率的初始值可以通過(guò)撥碼開(kāi)關(guān)設置從最高波特率開(kāi)始,或從最低波特率開(kāi)始,從而減少自適應時(shí)間。最后使能接收中斷進(jìn)入只聽(tīng)模式。當未接收到總線(xiàn)報文時(shí),即沒(méi)有產(chǎn)生接收中斷,進(jìn)入復位模式選擇下一個(gè)波特率;當產(chǎn)生1個(gè)接收中斷時(shí),表示檢測到正確的波特率,這時(shí)軟件就可以切換到正常操作模式,CAN分析儀即可參與總線(xiàn)通信。圖6為自適應波特率的流程。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>