值0 高電平 顯性 dominant
值1 低電平 隱性 recessive
顯性遇到隱性時顯性勝出,後面衝突仲裁時有用。
有2種幀
標準幀(ide為0,也叫基礎幀) 和 擴充套件幀(ide為1)
sof 開始位,它一定是0 (顯性,高電平)
幀id 長度為11位或者29位
ide 0 標準幀,幀id長度11位, 1擴充套件幀,幀id長度29位 identifier extension flag
rtr remote transmission request bit
0 資料幀 1 遠端幀 所謂遠端幀,就是資料長度為0,不含有資料域的幀
r0 預留,值恒為0
dlc data length code 資料長度
4位,有效值 0 ~ 8,表示有多少位元組的資料
data 存放資料,其長度 dlc*8. 例如 dlc=7, 資料位長度為 56 (7*8)
crc 15位長度的crc校驗碼
crc delimiter crc分隔符,1位長度,值固定為1
ack 發生方給1,接受方接收無誤後該位填0,有誤填1
ack de ack分隔符,1位長度,值固定為1
eof 7位連續的1,表明幀結束啦
遠端幀 rtr 為1 沒有資料域
資料幀 rtr 為0 有資料域
r0 預留,值恒為0 (顯性,高電平)
srr subsitute remote request 替代遠端請求位。固定為1(隱性,低電平)
為什麼把原先標準幀 rtr 搞成這個,且必須是隱性的? 方便衝突仲裁,讓標準幀優先,詳見下面 衝突仲裁
衝突仲裁
例如 sof 幀id
裝置a,傳送資料幀 幀id 0x11 0 000 0001 0001
裝置b,傳送資料幀 幀id 0x10 0 000 0001 0000
它們同時傳送
前11位都是相同的 00000001000,第12位,裝置a傳送1,裝置b傳送0
0顯性優先,裝置b勝出,可以繼續傳送。裝置a中斷傳送,等線路空閒後重發。
例2 sof 幀id rtr
裝置a,傳送資料幀 幀id 0x11 0 000 0001 0001 0
裝置b,傳送遠端幀 幀id 0x11 0 000 0001 0001 1
它們同時傳送
直到第13位時 有了衝突,a是資料幀嘛,所以 rtr位 傳送0 b傳送1
0顯性優先,裝置a勝出,可以繼續傳送。裝置b中斷傳送,等線路空閒後重發。
例3裝置a,傳送資料幀 幀id 0x444
裝置b,傳送資料幀 幀id 0x11121181
裝置a 傳送的幀
sof 幀id rtr
0 100 0100 0100 0
0x4 4 4
裝置b 傳送的幀
sof 幀id(11位) srr ide 幀id擴充套件(18位)
0 1 0001 0001 00 1 1 10 0001 0001 1000 0001
0x1 1 1 2 1 1 8 1
a的rtr b的srr
於是
a傳送 010001000100
0b傳送 010001000100
1 1100001000110000001
這一位衝突
a勝出前11位id相同的標準幀 和 擴充套件幀,標準幀總能勝出。srr 固定為1就是被設計出來給 標準讓路的 :)
因此標準幀id越小,優先順序越高
id相同的資料幀優先於遠端幀
id前11位相同的標準幀優先於擴充套件幀。擴充套件幀 srr ide都是隱性的,而標準幀相同位置對應的是 rtr r0,就算是遠端標準幀rtr為1了,r0固定為1。還是可以和擴充套件幀仲裁時勝出
黑馬程式設計師 協議
正式協議是乙個命名的方法列表。但與非正式協議不同的是,正式協議要求顯式地採用協議。採用協議的方法是在類的 inte ce宣告中列出協議的名稱。採用協議意味著你承諾實現協議的所有方法。否則,編譯器將發出警告提醒。宣告協議 例如cocoa宣告的乙個協議 nscopying property nscopy...
盜夢空間 觀感(程式設計師角度)
今天,在這不細談,機器 病毒 人類在the maritix中的戰中,談談 盜夢空間 這部與時俱進的科幻大片吧 盜夢空間觀感8 其實最容易解釋的乙個例子 盜夢空間觀感6 每個造夢師都可以在夢中設計自己的一切東西,那麼這個夢會被記憶儲存下來,如果你想1個月後進去修補夢的話,都是可以的 類似於記憶體中跑乙...
黑馬程式設計師 protocol協議
ios培訓 android培訓 期待與您交流!protocol用來宣告一大堆方法,但是不宣告成員變數 只要某乙個類遵守了這個協議,那麼這個類就擁有了協議裡的所有的方法。協議protocol與分類一樣不能宣告屬性,但是不同的是分類是給某個類擴充套件一些方法,但是只要乙個類遵守了協議protocol就可...