[發明專利]CAN控制器的位時序的同步處理方法有效
| 申請號: | 200910198239.3 | 申請日: | 2009-11-03 |
| 公開(公告)號: | CN101719858A | 公開(公告)日: | 2010-06-02 |
| 發明(設計)人: | 胡越黎;閆科;徐曉勇;孫斌;朱衛 | 申請(專利權)人: | 上海大學 |
| 主分類號: | H04L12/40 | 分類號: | H04L12/40;H04L7/033 |
| 代理公司: | 上海上大專利事務所(普通合伙) 31205 | 代理人: | 何文欣 |
| 地址: | 200444*** | 國省代碼: | 上海;31 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | can 控制器 時序 同步 處理 方法 | ||
1.一種CAN控制器的位時序的同步處理方法,其特征在于將標稱位時間劃分成3個互不重 疊的段:同步段SYNC,時間緩沖段1TSEG1和時間緩沖段2TSEG2,將這三個段都用整 數個基本時間單位來表示,基本時間單位即時間額數TQ的持續時間,將TSEG1的結尾 設置為采樣點,然后以這三個段為基礎設置一個同步狀態機SYNC_state,并檢測總線上 “隱性”到“顯性”的跳變沿,根據跳變沿出現的時間段和狀態來執行同步操作;其具體 步驟為:
a.設定兩個總線時序寄存器,分別為0號總線時序寄存器BTR0和1號總線時序寄存器 BTR1,BTR0用來存儲用戶設置的波特率預置數值BRP和同步跳轉寬度SJW,BTR1 用來存儲用戶設置的時間緩沖段1TSEG1和時間緩沖段2TSEG2時間額數大小及采樣 位;
b.根據標稱位時間的3個段:同步段SYNC,時間緩沖段1TSEG1和時間緩沖段2TSEG2 和CAN通信規范的要求設置一個同步狀態機SYNC_state,以實現CAN位時序的同 步,設置一個同步狀態機SYNC_state的方法為:同步狀態機SYNC_state有五種狀態, 分別是:同步段狀態SYNC,緩沖段1狀態SGE1,同步延長狀態WINDOW1,緩沖 段2狀態SEG2和同步縮短狀態WINDOW2,通過復位進入初始狀態緩沖段1狀態 SEG1,如果有硬同步出現則重新進入緩沖段1狀態SEG1;若在接收數據信號過程中, 出現重新同步則進入同步延長狀態WINDOW1,執行同步延長操作;如果既沒有硬同 步出現也沒有重新同步出現則TSEG1段時間額數計數寄存器bit_seg1_cnt計滿后進入 緩沖段2狀態SEG2;處在SEG2狀態時,如果沒有同步信號產生,則TSEG2段時間 額數計數寄存器bit_seg2_cnt計滿后進入同步段狀態SYNC狀態;如果檢測到硬同步 出現,狀態機進入緩沖段1狀態SGE1;如果在接收報文的過程中檢測到重新同步信 號,狀態機進入WINDOW2狀態,執行同步縮短操作;WINDOW1狀態,是執行同 步延長的狀態,在TSEG1段延長結束后進入SEG2狀態,最大延長長度為SJW; WINDOW2狀態,是執行同步縮短的狀態,在TSEG2段縮短結束后進入SEG1狀態, 最大縮短長度為SJW;在SYNC狀態,只要下一個時鐘沿來到則進入SEG1狀態; 與同步狀態機SYNC_state相關的一些信號和寄存器的定義如下:
(a).state/nxt_state:分別是同步狀態機SYNC_state指示的正在執行的狀態和下一個執行 狀態;
(b).resync/hard_sync:分別是同步狀態機SYNC_state接收數據時的重新同步信號和硬同 步信號;
(c).time_segment1/time_segment2:分別是沒有同步發生時TSEG1段和TSEG2段的時間 額數值,由用戶定義的,存儲在CAN總線時序寄存器BTR1中;
(d).bit_seg1_cnt/bit_seg2_cnt:分別是TSEG1段時間額數計數寄存器和TSEG2段時間額 數計數寄存器,存儲位時序處理過程中TSEG1段和TSEG2段的所經過的時間額數的 大??;
(e).delay_cnt/decrease_cnt:分別是同步延長寄存器和同步縮短寄存器,存儲位時序處理的 同步延長操作中需要延長的時間額數的大小和位時序處理的同步縮短操作中需要縮 短的時間額數的大小;
c.設定一個波特率發生器用來產生CAN通信系統的時鐘信號clk_en,即設置基本時間 單位,也就是時間額數TQ的持續時間,用來量化標稱位時間和檢測到的同步跳變沿 的發生的時間;
d.設定一個TSEG1段時間額數計數寄存器bit_seg1_cnt和一個TSEG2段時間額數計數 寄存器bit_seg2_cnt,bit_seg1_cnt用來存儲位時序處理過程中TSEG1的所經過的時間 額數的大小,bit_seg2_cnt用來存儲位時序處理過程中TSEG2的所經過的時間額數的 大?。?
e.設定一個同步延長寄存器delay_cnt和一個同步縮短寄存器decrease_cnt,delay_cnt用 來存儲位時序處理的同步延長操作中需要延長的時間額數的大??;decrease_cnt用來 存儲位時序處理的同步縮短操作中需要縮短的時間額數的大小;
f.通過“復位”來進入位時序處理過程,然后通信過程中,同步狀態機SYNC_state根 據總線上“隱性”到“顯性”的跳變沿情況進行位時序的相應同步操作,并設定相關 信號;位時序處理過程中,位時序處理器根據總線上跳變沿情況進行位時序的相應同 步操作有如下三種:
(a).時刻檢測總線傳輸的信號,在沒有同步產生時,狀態機SYNC_state在SEG1、SEG2 和SYNC三個狀態之間依次循環執行,即SYNC、TSEG1和TSEG2這三個時間段依 次循環執行,SYNC段占一個時間額數TQ,TSEG1段和TSEG2段的大小由總線時序 寄存器BTR1輸入;如果在空閑周期后,檢測到總線傳輸出現從隱性到顯性的跳變時, 執行硬同步;無論狀態機處于何種狀態都會在下一個時鐘沿到來時進入狀態SEG1狀 態;一個標稱位時間只執行一次同步;
與總線傳輸相關的信號為:
hard_sync:接收端硬同步信號,高電平有效;
rx:接收端口信號;
rx_idle:總線空閑信號;
last_bit_of_inte:幀間間歇最后一位;
sampled_bit:采樣值;
在總線收發過程中,時刻檢測接收端口的rx信號,總線空閑rx_idle時檢測到總 線傳輸出現從隱性到顯性的跳變,或者在幀間間歇最后一位last_bit_of_inte檢測到總 線傳輸出現從隱性到顯性的跳變,即當前的采樣值sampled_bit為隱性且正在接收端 口接收的這一位信號rx為顯性時,接收器會將它解釋成報文幀的起始符,即執行硬 同步“hard_sync=1”,接收器接收到的數據同步于總線上的位流;
(b).在硬同步操作執行完之后,接收器就進入數據接收過程;在同步狀態機SYNC_state 處于SEG1狀態時,如果接收報文幀時,檢測到總線傳輸的信號出現隱性值到顯性值 的跳變沿;即跳變沿發生在TSEG1段內,在SYNC段后但在接收器的采樣點前;亦 即在同步狀態機SYNC_state處于SEG1狀態,當前的采樣值sampled_bit為隱性且正在 接收端口接收的這一位信號rx為顯性時,接收器會把它解釋成是一個慢速的發送器發 送的滯后邊沿,執行重新同步“resync=1”,要延長TSEG1段,即為同步延長,狀態機 進入WINDOW1狀態;這種情況下,新的TSEG1段時間額數值等于用戶定義的TSEG1 段時間額數time_segment1的值加上寄存器delay_cnt的值,新的TSEG2段時間額數 值等于用戶定義的TSEG2段時間額數time_segment2的值;
與檢測到重新同步的相關的信號為:
resync:接收端硬同步信號,高電平有效;
sync_blocked:同步阻塞信號;
resync_blocked:重新同步阻塞信號;
(c).在硬同步操作執行完之后,接收器就進入數據接收過程;在同步狀態機SYNC_state 處于SEG2狀態時,如果在接收報文的過程中檢測到總線傳輸的信號出現隱性值到顯性值 的跳變沿,即跳變沿發生在TSEG2段內,在采樣點之后;亦即在同步狀態機SYNC_state 處于SEG2狀態,當前的采樣值sampled_bit為隱性且正在接收端口接收的這一位信號rx 為顯性時,接收器會將它解釋成是一個快速的發送器發送的下一個位周期的提前邊沿, 則要縮短TSEG2段,即為同步縮短,執行重新同步“resync=1”,狀態機進入WINDOW2 狀態;這種情況下,新的TSEG1段時間額數值等于用戶定義的TSEG1段時間額數 time_segment1的值,新的TSEG2段時間額數值等于用戶定義的TSEG2段時間額數 time_segment2的值減去寄存器decrease_cnt的值。
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于上海大學,未經上海大學許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/200910198239.3/1.html,轉載請聲明來源鉆瓜專利網。





