久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4172|回復: 0
打印 上一主題 下一主題
收起左側

CAN2.0規范學習研究

[復制鏈接]
跳轉到指定樓層
樓主
ID:105323 發表于 2016-2-21 15:39 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
概述
CAN總線是BOSCH公司發布的一款針對汽車電子的總線協議,主要用于汽車各部件之間的通信以及對各部件進行檢測。
1989年PHILIPS公司發布了CAN2.0標準
1991年ISO組織講CAN總線協議列為標準的現場總線協議ISO11898
第一章:
要了解CAN總線的知識,必須實現了解NRZ編碼,因為CAN總線的物理層使用的就是NRZ編碼。NRZ編碼的示例圖如下圖所示:



                                                                   NRZ編碼
NRZ編碼存在的一個問題就是當連續傳輸n多個0或者n多個1時,發送者和接收者沒法進行同步。
NRZI 編碼(Non-Return-to-ZeroInverted Code)和 NRZ 的區別就是 NRZI 用信號的翻轉代表一個邏輯,信號保持不變代表另外一個邏輯。

  USB 傳輸的編碼就是 NRZI 格式,在 USB 中,電平翻轉代表邏輯 0,電平不變代表邏輯1(NRZI 遇 0 翻轉,遇 1 不變):NRZI編碼如下圖所示:


NRZI編碼
翻轉的信號本身可以作為一種通知機制,而且可以看到,即使把 NRZI 的波形完全翻轉,所代表的數據序列還是一樣的,對于像 USB 這種通過差分線來傳輸的信號尤其方便.
   但是同樣,NRZ 和 NRZI 都沒有自同步特性,但是可以用一些特殊的技巧解決。比如,先發送一個同步頭,內容是 0101010 的方波,讓接受者通過這個同步頭計算出發送者的頻率,然后再用這個頻率來采樣之后的數據信號,就可以了。
  在 USB 中,每個 USB 數據包,最開始都有個同步域(SYNC),這個域固定為 00000001,這個域通過 NRZI 編碼之后,就是一串方波(復習下前面:NRZI 遇 0 翻轉遇 1 不變),接受者可以用這個 SYNC 域來同步之后的數據信號。
  此外,因為在USB的NRZI編碼下,邏輯0會造成電平翻轉,所以接受者在接受數據的同時,根據接收到的翻轉信號不斷調整同步頻率,保證數據傳輸正確.
  但是,這樣還是會有一個問題,就是雖然接受者可以主動和發送者的頻率匹配,但是兩者之間總會有誤差。假如數據信號是1000個邏輯1,經過USB的NRZI編碼之后,就是很長一段沒有變化的電平,在這種情況下,即使接受者的頻率和發送者相差千分之一,就會造成把數據采樣成 1001 個或者999個1了。        
  USB 對這個問題的解決辦法,就是強制插 0,也就是傳說中bit-stuffing,如果要傳輸的數據中有7個連續的1,發送前就會在第6個1后面強制插入一個0,讓發送的信號強制出現翻轉,從而強制接受者進行頻率調整。接受者只要刪除6個連續1之后的0,就可以恢復原始的數據了。
   而CAN協議當位流里有連續5個1或者連續5個0時,便在位流里插入一個補充位,而接收器則自動刪除這個補充位,換句話說,最長等待5個bit的時間,各節點就可以進行同步。需注意連續6個相同的位表示ERRORFLAG,
   bit-stuffing的示意圖如下所示:圖中白色的為填充位



                                   位填充示意圖
關于NRZ編碼就介紹到這里。下面我們將介紹CAN2.0的規范
第二章 CAN2.0規范
CAN2.0規范分為AB兩部分,其中A定義了標準幀,B定義了標準幀和擴展幀。
其中標準幀又分為四種:
數據幀
遠程幀
過載幀
錯誤幀
數據幀:
標準數據幀的格式如圖所示:
      
                                                            標準數據幀示意圖
有圖可以看出數據幀由如下及部分組成:
SOF                                          起始幀
ARBITRATIONFIELD              仲裁域
CTRLFIELD                              控制域
DATAFIELD                             數據域
CRC  FIELD                              校驗域
ACKFIELD                               確認域
EOF                                          終止幀
數據域的長度可以為0
   MESSAGE ID 用于尋址,它在總線網絡中是唯一的。CAN控制器一般都有一個驗收碼寄存器和驗收屏蔽寄存器,當接收到消息ID時,控制器檢查驗收寄存器為1的位有哪些,那么就不去判斷MESSAGEID的相應位,剩下的位如果和驗收寄存器的值相等,那么就接收該消息。
   MESSAGE ID號越小表示優先級越高,多個節點同時發送數據時總線通過該域進行仲裁,傳輸優先級高的節點繼續傳輸,失去傳輸資格的節點在總線空閑時重新傳輸。仲裁的過程如下圖所示:
   
                                                          CAN仲裁過程示意圖
                                                                                                                                                                          如圖,仲裁采用的是按位仲裁的方式,誰的大值出現的早誰就先退出仲裁。
INTERMISSIONFIELD 用于區區分開兩個連續的幀
擴展數據幀的格式如下:
   



兩種幀的區別在于CTRLFIELD 中的識別符擴展位(IDE)

遠程幀也分為兩種:標準幀和擴展展,他們與數據幀的區別在于:
遠程幀沒有數據域
RTR位為recessivebit
其它完全一樣。

錯誤幀只有當檢測到CAN標準定義的錯誤時產生錯誤幀,錯誤幀的位數有6-12BIT,錯誤幀的示意圖如下:
                                      

                                                                 錯誤幀示意圖                        
過載幀
一般情況下,如下幾種情況會導致過載幀的出現
1、上次接收的數據幀未被CPU讀取,又來了新的數據幀
2CAN節點檢測到幀間隔的第一位或者第二位為dominant位,在檢測到dominant位后馬上發出
3CAN節點檢測到錯誤幀的界定域或者過載幀的界定域存在dominant位,在檢測到dominant位后馬上發出。
過載幀示意圖如下:
                             

                                   過載幀

暫時到這里,有了新的理解再持續更新

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品久久久 | 日韩不卡一区二区三区 | 国产精品美女久久久 | 国产片侵犯亲女视频播放 | 欧美激情视频一区二区三区在线播放 | 亚洲精品一区二 | 超碰97免费在线 | 九九热在线免费观看 | 密室大逃脱第六季大神版在线观看 | 久久精品视频在线观看 | 日本精品一区二区三区视频 | 亚洲精品久久嫩草网站秘色 | 日韩欧美二区 | 国产精品一区二区久久精品爱微奶 | 99免费在线视频 | 亚洲在线高清 | 亚洲欧美一区二区三区情侣bbw | 欧美中文字幕一区二区 | 欧美视频日韩 | 一区二区三区四区在线 | 黄色播放| 亚洲精品视频在线观看免费 | 91精品国产综合久久精品 | 91精品久久久| 亚洲欧洲精品在线 | 男女国产视频 | 成人一区二区三区 | 国产美女在线观看 | 日韩精品一区二区三区在线观看 | 国产黄a一级 | 成人国产精品一级毛片视频毛片 | 五月婷亚洲 | 中文字幕1区2区3区 日韩在线视频免费观看 | 日韩精品在线视频 | 亚洲日本一区二区 | 亚洲一区网站 | 国产天堂| 欧美精品 在线观看 | 久久午夜国产精品www忘忧草 | 一区二区三区四区在线视频 | 欧美中文在线 |