PTT評價

[問卦] 玩過 CAN bus 的請進

看板Gossiping標題[問卦] 玩過 CAN bus 的請進作者
dces4212
()
時間推噓10 推:10 噓:0 →:6

內葛阿

我在研究 CAN 的規格的時候遇到個想不通的點,

我們知道,在 CAN bus 裡面,當一個 sender 收到與自己正在傳輸的位元不一樣的準位的信號時,也就是它原本正在送 1,結果收到 0,它會知道發生碰撞,並且讓出 bus 給正在傳輸的節點。


問題來了!


如果 header 已經傳完了,當下正在傳輸的是 payload,並且正在傳送 1 的資料,這時剛好其他節點開始說話了,並且發送 0。這樣不就造成即便 can_id 是最小的 frame,
也就是優先序最高的 frame,也會失去這次發送資料的機會?!?!

還是說,transceiver 的實做會在收完 header 的那幾個位元之後,就停止自己這個節點的發送,直到其他節點傳送完資料,才會再次發送待傳送的資料,以避免上述情況發生?

蛤?

--

※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.146.9 (臺灣)
PTT 網址

bill403777 12/23 17:17我文組看不懂耶 ㄅ欠

QuentinHu 12/23 17:17把版友當免費FAE? XD

mnb1234 12/23 17:18偶都去csdn查

wableHD 12/23 17:20Can bus料又EOL,好煩

soli123456 12/23 17:20看 iec 61375 吧

questioner 12/23 17:22看不懂啦,說人話好嗎

Raman 12/23 17:37Call vendor 叫他出來擼給你看啊

okgogogo 12/23 17:58同時時有仲裁機制阿,平常沒人傳你才能

okgogogo 12/23 17:58

okgogogo 12/23 17:59跟smbus差不多啦

YJM1106 12/23 18:05就掉包而已啊 沒什麼

jimmykuo123 12/23 20:10我都用嘴砲大法叫底下的解決就好

sukimayukari 12/23 20:34作業自己做

hydralee 12/23 23:48去問ChatGPT啦

jackgn 12/23 23:52沒有壓碼嗎?不是有驗證機制

neru0616 12/24 00:31關鍵是 can id priority / open drain