can協議分析 程式設計師角度

2021-07-28 13:55:10 字數 2367 閱讀 7641

值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就可...