日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sja1000 中断_CAN总线 SJA1000中断

發布時間:2024/3/12 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sja1000 中断_CAN总线 SJA1000中断 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

背景:

最近一直在使用C8051F340 + SJA1000來實現CAN通信,就SJA1000部分做個記錄。

正文:

整個系統結構拓撲圖如下:

兩路CAN,C8051F340作為CPU,處理CAN與USB數據。

轉入正題,關于SJA1000的中斷。

SJA1000的/INT腳與單片機的外部中斷輸入腳相連,平時/INT保持高電平,當SJA1000內部有中斷時,/INT腳及變為低電平(單片機外部輸入中斷引腳設置為低電平有效邊沿觸發),等待單片機進行處理。

SJA1000中斷部分應該關注兩個寄存器“IR”(Interrupt Register),“IER”(Interrupt Enable Register)。顧名思義,“IER”為使能相應中斷,“IR”為指示中斷狀態,應當注意的是:當單片機讀取了SJA1000的“IR”寄存器后,/INT腳重新變為高電平,“IR”寄存器所有位復位為0!

還有一個值得注意的是:為了保險起見,應該要將“IER”清零,然后根據需要配置相應位。

為此,我也郁悶了許久,過程如下:為了測試,于是將2路CAN相互接通,當通過SJA1000_1發送數據時,按照邏輯來說,SJA1000_1發送數據,SJA1000_2過濾接收該條數據并產生接收完成中斷,可是這個SJA1000_1竟然與SJA1000_2同時產生中斷!而我中斷使能使用的是“或”的方式配置了“總線錯誤中斷”、“數據溢出中斷”“錯誤報警中斷”、“接收中斷”,SJA1000_1不應該會在這個時候產生中斷!SJA1000_1難道會過濾接收自己發的數據?這是首先被懷疑的,查了資料后發現,處于發送狀態的節點是不會接收數據的。排除!折騰了許久才發現SJA1000_1發送完畢產生了發送完成中斷,因此可以確認“發送使能中斷”不清零的話,是有可能被打開的(SJA1000的官檔并未說明每一位的默認值),其它“使能中斷”亦如此,

記錄地點:深圳WZ

記錄時間:2016年3月16日

總結

以上是生活随笔為你收集整理的sja1000 中断_CAN总线 SJA1000中断的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。