[問卦] 玩過 CAN bus 的請進
內葛阿
我在研究 CAN 的規格的時候遇到個想不通的點,
我們知道,在 CAN bus 裡面,當一個 sender 收到與自己正在傳輸的位元不一樣的準位
的信號時,也就是它原本正在送 1,結果收到 0,它會知道發生碰撞,並且讓出 bus 給
正在傳輸的節點。
問題來了!
如果 header 已經傳完了,當下正在傳輸的是 payload,並且正在傳送 1 的資料,這時
剛好其他節點開始說話了,並且發送 0。這樣不就造成即便 can_id 是最小的 frame,
也就是優先序最高的 frame,也會失去這次發送資料的機會?!?!
還是說,transceiver 的實做會在收完 header 的那幾個位元之後,就停止自己這個節點
的發送,直到其他節點傳送完資料,才會再次發送待傳送的資料,以避免上述情況發生?
蛤?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.162.146.9 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Gossiping/M.1671787009.A.B54.html
→
12/23 17:17,
3年前
, 1F
12/23 17:17, 1F
推
12/23 17:17,
3年前
, 2F
12/23 17:17, 2F
推
12/23 17:18,
3年前
, 3F
12/23 17:18, 3F
推
12/23 17:20,
3年前
, 4F
12/23 17:20, 4F
→
12/23 17:20,
3年前
, 5F
12/23 17:20, 5F
→
12/23 17:22,
3年前
, 6F
12/23 17:22, 6F
推
12/23 17:37,
3年前
, 7F
12/23 17:37, 7F
推
12/23 17:58,
3年前
, 8F
12/23 17:58, 8F
→
12/23 17:58,
3年前
, 9F
12/23 17:58, 9F
→
12/23 17:59,
3年前
, 10F
12/23 17:59, 10F
推
12/23 18:05,
3年前
, 11F
12/23 18:05, 11F
→
12/23 20:10,
3年前
, 12F
12/23 20:10, 12F
推
12/23 20:34,
3年前
, 13F
12/23 20:34, 13F
推
12/23 23:48,
3年前
, 14F
12/23 23:48, 14F
推
12/23 23:52,
3年前
, 15F
12/23 23:52, 15F
推
12/24 00:31,
3年前
, 16F
12/24 00:31, 16F
討論串 (同標題文章)