456 J1939中普通報文的佇列接收

2021-10-25 10:57:17 字數 602 閱讀 6753

全部學習彙總:

之前研究arduino的時候,看過了arduino開源社群中別人對ecan使用的時候使用了佇列的收發。全都是軟體實現,沒有使用硬體的模式。手裡的這套j1939的**也有這麼乙個類似的功能。

接下來,看看手裡這套**的處理。

關鍵**都在注釋上面,其實,下面的部分也已經不在同乙個**塊。正好這個函式還剩下這麼一點沒做分析,一起給標註掉了。

這裡面首先有乙個判斷,判斷如果佇列空間滿了又接收到報文之後的處理方法。是覆蓋寫入還是丟棄?

在配置檔案中,這裡是丟棄操作。這樣,如果出現了上述情況,佇列緩衝是沒有任何修改的,訊息直接不處理,同時會有乙個標誌位置位。

其他的地方沒有對此標誌位的處理,因此這個如果真是需要清除掉的話應該是在使用者軟體之中實現。

關於佇列的實現,之前我自己其實做過了分析。並且,實現了乙個printf via can的功能。後續,針對簡單的**分析還是專門在小結一下吧!

zynq CAN中斷傳送J1939資料

1 手冊 認真翻譯上邊的一段話 示例 使用中斷的方式來想txfifo中寫入資料 在中斷模式中,寫操作可以持續直到can.isr txfll 產生乙個中斷。資料能夠持續寫入txfifo直到txfifo被寫滿。當txfifo寫滿的時候,can.isr txfll 和 can.sr txfll 被設定成1...

J1939 多包報文傳輸

以j1939 rc retarder configration 報文為例,19個位元組,需要分3條報文傳送。1 將要傳送多包報文之前先會廣播一條id為0x18ecff 形式的一條報文tpcm 以目前理解最後 為源位址,rc報文的話為0f 資料場會提示接下來將會傳送多少條報文,包含什麼資訊 rc 2 ...

CAN匯流排 J1939 速成指南 1

這是乙個can擴充套件幀的完整結構圖,針對剛入門的小夥伴來說。不需要每乙個元素都理解,思想的套路是讓大家先能看懂報文。至於其他的元素就在實際的工作中進行擴充套件學習。擴充套件幀頭部有32位的仲裁字段,仲裁欄位中對於我們最有用的就是11位的識別符號和18位的拓展識別符號 這29位的資料就組成了我們通常...