新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > can總線的示波器檢測方法

        can總線的示波器檢測方法

        作者: 時間:2016-12-13 來源:網絡 收藏
        整理自網絡::

        stm32的can總線是在APB1上的,stm32f10x的主頻是72Mhz,can外設時鐘是36Mhz,stm32f2xx的主頻是120Mhz,can外設時鐘是30Mhz。。。

        本文引用地址:http://www.104case.com/article/201612/329221.htm

        STM32 APB1和APB2區別:

        APB2負責AD,I/O,高級TIM,串口1。

        APB1負責DA,USB,SPI,I2C,CAN,串口2345,普通TIM

        can總線電氣特性

        做一想要從車上測出can總線上的數據還不太容易。

        于是我首先使用示波器(我使用的示波器型號是TDS 220)來找出汽車上can總線的接口,然后測出can總線的波特率,測量波特率的步驟如下:

        1、將示波器的兩個接口(接地和探頭)分別接在can總線的兩條線(CAN_H和CAN_L)上,
        這里需要注意如果CAN線上需要接一個120歐姆的負載電阻,否則波形是不規整方波,
        接上負載之后才是規整的方波。

        2、此時如果can線上有數據,則會在示波器上顯示出方波如圖1所示。(這里使用示波器的RUN/STOP按鈕捕捉波形)

        圖1

        2、但是此時因為示波器顯示的數據太多還無法讀取單個脈沖的周期,
        所以需要調節示波器的X軸的每格所代表的周期(調節SEC/DIV旋鈕)
        然后使用RUN/STOP按鈕重新捕捉波形得到圖2所示的波形,

        圖2

        3、最后將圖2中寬度較小的脈沖再次放大(調節SEC/DIV)直到圖3所示,這時每格代表1us
        可以看到這個脈沖跨度為8us

        圖3

        所以最終得到該can總線的波特率為1s/8us=125K

        在車輛電子網絡中,CAN總線是一個重要的協議。它具有一個高達1兆bit的比特率, 并提供簡單的微處理器網絡,這需要用到一種被稱為CAN控制器的專用CAN總線芯片叫做CAN控制器。

        CAN的數據傳輸報文就是數據幀。數據幀允許有一個比較長的ID,所以稱為可擴展幀。

        適用于某些應用中的,但不是用于汽車中的是遠程幀。遠程幀允許一個節點響應一個特定的ID。

        CAN功能是非常齊全的。這意味著它不僅僅發現很多的錯誤,同時能夠實現自動化傳輸或者節點自動關閉。

        CAN使用比特流來通過接收器到發射器。為了適合于特定的位次序,CAN必須使用位填充。位填充在傳統示波器上對CAN波形進行解碼很困難。

        CAN是一個數據鏈接層。有三種正在使用的物理層來對CAN進行信號的電動發射。

        在使用CAN總線的某些地方,可能用FlexRay或者LIN更合適。

        CAN總線的詳細說明書:can2spec.pdf


        一個CAN總線的數據幀

        CAN總線數據幀

        CAN總線數據幀在CAN上運作。CAN的整個過程實質上是在網絡控制器之間發送數據,這就需要數據幀來實現這個功能了。

        數據幀是以一個單一的SOF(起始幀)位開始的,跟著就是CAN標識符。CAN標識符是用來標識報文和接下來的節點報文。標識符可以有11位長或者是29位長,這主要是根據保留位的狀態來決定。


        CAN數據幀以一個SOF位開始,跟著就是ID位

        在CAN標識符之后,有一個數據段,數據段是以一個數據長度開始的。CAN數據幀能夠有0到8個字節,這樣它使用4位的編碼長度。數據字節直接跟著數據長度。


        在CAN幀中數據字節跟著數據長度(DLC)

        跟在數據之后是CRC。CRC是基于CAN幀的第一部分在接收器和發射器中進行計算的。如果計算出來的結果與接收器呈現的結果相匹配,則說明正確接收數據。


        CAN 的CRC檢查數據的完整性,同時ack表示從另一個節點接收

        跟著CRC的是Ack 場,這個場是在所有的其他的正確接收幀的網絡節點上進行設置的。
        Ack位后,有一段靜態時間,它稱為緊跟著一個最小的內插幀空間的幀空間結束符。

        一個CAN數據幀圖片

        擴展數據幀

        可擴展標識符CAN 幀使用29位用于辨識目的,而不是標準的CAN幀的11位。由于這個額外的ID空間增加了20位(18個ID和兩個保留位),它通常不使用于希望得到最高性能的網絡當中。

        在J1939和GMLAN協議中,較大的ID分為不同的部分,每一個部分都有它的意義。比如,對于J1939和GMLAN的最低的8個ID位表明了一個字節的源地址。


        單線CAN擴展ID是有29位長(還沒有算入緩沖位)。許多系統設計者不使用這個ID長度,
        因為它要求比較高的費用

        CAN總線遠程數據幀

        CAN總線遠程幀是可選幀,它用于請求數據。遠程幀沒有包含數據段,即使數據長碼位大于0。你能夠從RTR位的狀態來判決一個幀是否是遠程幀(RTR=1)。遠程幀通常不使用在汽車的應用當中。


        在這個CAN L波形中顯示了一個遠程幀

        CAN總線錯誤

        請看圖片 >

        CAN總線位填充

        CAN波形是一系列的位。由于在CAN總線節點之間沒有共享時鐘,那么對于所有的節點則一定有方法從波形中得到時鐘信息。因此接收器使用CAN波形轉換來使得發射器與接收器實現同步時鐘。

        為了確保有足夠的轉換,CAN總線執行位填充功能。位填充在連續5個相同的位之后,插入一個額外的碼流的相反位。由于填充位的出現要根據消息序列的容量,CAN幀的長度要根據在幀里面的數據位進行改變。這些額外的填充位自動被接收器丟掉,因此在CAN節點的應用軟件中就從來不會接觸到這些填充位了。


        填充位,用黃色突出,增加消耗在一個CAN報文中。這個報文有13個額外的填充位

        CAN總線物理層

        CAN協議介紹了1s和0s是如何使用在通訊當中的。CAN協議沒有介紹發射1s和0s信號的電氣方法。

        最普遍流行的物理層被稱為雙線物理層。這個物理層使用雙線CAN H和CAN L。這些線在不同的電壓方向(對應著不同的信號傳輸)上傳送1或者0。

        對于特定的汽車低速應用,介紹兩個其他的物理層。它們是單線CAN和低速容錯CAN。如果有一條線路斷了。低速容錯CAN總線將會提供容錯信息。

        單線CAN

        單線CAN是一個物理層,它是由普通的發動機生成的。它允許CAN使用一條單線在低比特率(如33.3Kbps)的情況之下進行通訊。同時對于閃存編程允許一個高速模式。最后,雖然很多CAN收發器僅僅提供了1或者0,但是單線仍能夠提供一個被稱為高壓模式的第三狀態。這種模式能夠使得CAN節點的電源管理有選擇性。


        這是兩個不同的單線CAN幀。一個在高電壓模式下發送,另一個為正常電壓

        ??


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 堆龙德庆县| 太保市| 内江市| 柘荣县| 额尔古纳市| 乾安县| 广汉市| 金堂县| 旬阳县| 大荔县| 翁源县| 分宜县| 浙江省| 松阳县| 威宁| 白银市| 当阳市| 湖南省| 沁源县| 加查县| 通州区| 韶山市| 富民县| 福建省| 宜章县| 连山| 东乡| 准格尔旗| 睢宁县| 凤阳县| 阿城市| 平顺县| 柳河县| 高平市| 大港区| 什邡市| 冷水江市| 淅川县| 张家口市| 新疆| 巫山县|