337_S32K144 CAN錯誤種類獲取

完整的S32K144的學習彙總如下:

https://github.com/GreyZhang/g_s32k144

    這算是計劃之外的一份學習總結,本來打算錯誤能夠觸發捕獲到就結束這一項學習。不過,看了一下SDK的代碼之後我發現其實這裏還有一個小技巧值得去看看。這個技巧就是快速判斷出buserr、busoff之類的錯誤是否發生了。

    之前做PowerPC的驅動開發,習慣了半導體提供的位域操作的頭文件。這次切換到了S32K144這個ARM平臺學習,感覺有那麼一點不順手。其實,相應的功能在基礎的代碼信息中也是有的,只是這算是另一個技巧:位操作。

    注意到S32K144.h這個頭文件中有如下的宏定義:

    有了這些,我們的一些位域提供的功能就可以通過位操作來實現了。接下來,寫一點測試代碼如下:

    通過上面的代碼獲取到相應的錯誤狀態信息,雖然看上去比位域麻煩一點,但是也不算太麻煩。至少,比自己去重新設計要快捷一點。

    代碼測試效果如下:

    通過製造出之前的故障,成功獲取到了兩個錯誤狀態信息。這是一個很有用的小技巧,或許其他的功能探索中依然會有用到。

    剛剛看了一個流行的小工具的代碼,十分精簡,代碼量也不是很大。但是,功能強大也受到很大的認可度。說起來,實現難度不見得高。這讓我突然間覺得,或許我們的學習一直在追求廣度,缺少了深度的探索。而真正有突破性的創作,或者是設計都跟深度有着高強度的聯繫。簡單的招數發揮到極致就是絕招,或許,我們應該在招數發揮的極致程度上進一步修煉。祝願看到我學習筆記的你,也能夠修煉出自己的絕招!

完整的S32K144的學習彙總如下:

https://github.com/GreyZhang/g_s32k144

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章