關於MSCAN控制器中斷例程

2022-12-04 17:45:06 字數 1845 閱讀 2273

mscan(motorola scalable controller area network) ip core 被很多 can 控制器所使用。 但由於文件緣故,編寫他的中斷例程特別是傳送中斷的處理很困擾人。 這裡以 men 的 16z029 can controller 為例,把我編寫該驅動的過程分享一下。

本文對於其他msncan-based 的 can 控制器也可適用, 不過暫存器名以mscan的 data-sheet 為準。

接收中斷、 超限(overrun)中斷和 csc(can state change) 中斷

這些中斷由 rier 暫存器開啟和關閉。 在控制器離開初始化模式後(通過設定 ctl0)設定rier為0x7f即可:

dev_outb(dev, can16z029_rier, 0x7f);

在中斷例程中,這些中斷比較好處理: 各中斷都會在 r*** 中相應位上置位, 再該為上重新寫入 1 即響應並結束了該中斷的等待狀態, **片段:

/* received buffer, rxf*/

if (r*** & 0x01)

/* rx overrun, ovr */

if (r*** & 0x02)

/* status change, csc */

if (r*** & 0x40)

傳送中斷

這是困擾很多人的地方, 可歸咎於 msncan 本身的文件並沒有提供詳細的例程。 mscan 提供三個內部待傳送包快取, 通過 bsel 暫存器, 驅動每次只能選擇其中乙個進行操作。 驅動在載入了id,data以及傳輸優先順序暫存器 txbpr 後,通過清除 t*** 相應位(設定1), 通知控制器該快取已就緒。

控制器取出三個快取中就緒的並且優先順序量最小的傳送到網路中。發射完畢後設定 t*** 暫存器,通知驅動傳送已完畢。 如果驅動設定了相應的 tier,那麼這個傳送完畢事件會出發乙個等待的中斷。

難點在於,1、如果沒有更多包傳送了,怎樣清除這個等待的中斷? 2、如果還有包傳送,怎樣設定這些暫存器3、如何正確使用 txbpr 使傳送順序對於程式遵循fifo 順序

對於問題一,正確的方法是,如果有包傳送,則開啟 tier 位,沒有了便關閉。

對於問題二,順序則很奇怪,在設定任何傳送快取暫存器前,先要關閉 tier 位,設定完畢後再開啟。 如果不這麼做,則會收到乙個多餘的中斷(沒有任何事件發生)。 這點是最值得注意的地方。

**片段:

disable interrupt when setting tx registers */

tier &= ~ntxflag;

dev_outb(dev, can16z029_tier, tier);

set tx registers */

dev_outb(dev, can16z029_bsel, ntxflag);

encodepackage(dev, &stpkg);

dev_outb(dev, can16z029_txbpr, unprionext);

enable transmit */

dev_outb(dev, can16z029_t***, ntxflag);

enable interrupt */

tier |= ntxflag;

dev_outb(dev, can16z029_tier, tier);

對於問題三,有很多種方法,注意點是:

1. 找出當前最大的有效(傳輸快取傳送等待中)傳送快取的優先順序,加1後分配給下乙個待傳送的包

2. 當最大優先順序到255最大值時,傳送被快取到驅動快取中,等下次傳送中斷後再發出

3. 在中斷例程中處理這些資料避免可重入問題

因為屬於關鍵演算法,具體這裡就不給出了。

希望這些能給各自系統編寫 mscan 驅動的人以一定幫助。

彩燈控制器 一

燕山大學 eda課程設計報告書 題目 彩燈控制器 一 姓名 張亞麗 班級 08級光電子2班 學號 080104040040 成績 注 此檔案應以同學學號為檔名 一 設計題目及要求 設計題目 彩燈控制器一 要求 1 有十隻led,l0 l9 2 顯示方式 先奇數燈依次滅 再偶數燈依次滅 再由l0到l9...

彩燈控制器二

一 設計題目及要求 要求 1 有八隻led,l0 l7 2 顯示順序如下表 3 顯示間隔為0.25s,0.5s,1s,2s可調 二 設計過程及內容 包括總體設計的文字描述,即由哪幾個部分 構成的,各個部分的功能及如何實現方法 主要模組比較詳盡的文字描述,並配以必要的 加以說明,但 數量無需太多 1 ...

電子溫度控制器

遼寧工業大學 模擬電子技術基礎課程設計 題目 電子溫度控制器 院 系專業班級 學號學生姓名 指導教師簽字 起止時間 課程設計 任務及評語 院 系 電子與資訊工程學院教研室 電子資訊教研室 注 成績 平時20 質量60 答辯20 以百分制計算 摘要溫度控制系統在人們的日常生活中有著非常廣泛的應用,它在...