亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

Can控制器的位時(shí)序的同步處理方法

文檔序號(hào):7716120閱讀:501來源:國知局

專利名稱::Can控制器的位時(shí)序的同步處理方法
技術(shù)領(lǐng)域
:本發(fā)明涉及一種CAN控制器的位時(shí)序的同步處理方法,可應(yīng)用于獨(dú)立CAN控制器,也可應(yīng)用于其他嵌入微處理器的CAN控制器領(lǐng)域。
背景技術(shù)
:控制器局域網(wǎng)CAN(ControllerAreaNetwork)總線是一種串行多主總線,由于具有高可靠性、無破壞仲裁性、多主、易實(shí)現(xiàn)等優(yōu)越性,在工業(yè)控制和汽車行業(yè)中得到了廣泛使用,已成為現(xiàn)今應(yīng)用最廣泛的現(xiàn)場(chǎng)總線之一。CAN總線通信中位時(shí)序的處理關(guān)系到CAN是否能正確收發(fā)數(shù)據(jù),其中位時(shí)序的處理包括CAN總線協(xié)議中對(duì)位定時(shí)和位同步的控制。它對(duì)CAN總線通信中每個(gè)位的傳輸時(shí)間進(jìn)行了控制,在發(fā)送數(shù)據(jù)時(shí)按照標(biāo)稱位時(shí)間對(duì)每個(gè)發(fā)送數(shù)據(jù)位進(jìn)行定時(shí),在接收數(shù)據(jù)時(shí)同步于總線上的數(shù)據(jù),執(zhí)行同步(硬同步和重新同步)功能。所有的操作都是以標(biāo)稱位時(shí)間位基礎(chǔ)的,因此,合理的劃分標(biāo)稱位時(shí)間的周期結(jié)構(gòu),有利于CAN總線通信中位時(shí)序的處理,用來實(shí)現(xiàn)CAN通信的位定時(shí)和位同步。
發(fā)明內(nèi)容本發(fā)明的目的在于提供一種CAN控制器的位時(shí)序的同步處理方法。本方法O不影響CAN的數(shù)據(jù)通信的可靠性、穩(wěn)定性,而使得CAN總線通信的位時(shí)序處理更簡(jiǎn)捷,還加強(qiáng)了CAN控制器的通用性。相對(duì)于CAN協(xié)議規(guī)范標(biāo)稱位時(shí)間的四個(gè)互不重疊的段,整個(gè)位時(shí)序處理過程使用的寄存器減少了,執(zhí)行位同步的步驟也得到了簡(jiǎn)化。為達(dá)到上述目的,本發(fā)明的構(gòu)思如下將標(biāo)稱位時(shí)間劃分成3個(gè)互不重疊的段同步段SYNC,時(shí)間緩沖段1TSEG1和時(shí)間緩沖段2TSEG2,其中這三個(gè)段都用整數(shù)個(gè)基本時(shí)間單位即時(shí)間額數(shù)TQ來表示。時(shí)間額數(shù)TQ的持續(xù)時(shí)間是CAN系統(tǒng)時(shí)鐘周期T^。以這三個(gè)段為基礎(chǔ)構(gòu)建一個(gè)同步狀態(tài)機(jī)SYNC—state,然后在通信過程中檢測(cè)到的總線信號(hào)從隱性跳變?yōu)轱@性的跳變沿,根據(jù)所處的時(shí)間段和狀態(tài)來執(zhí)行相應(yīng)的同步操作。如果在總線空閑或者幀間間歇的最后一位檢測(cè)到隱性到顯性的跳變沿,接收器會(huì)將它解釋成報(bào)文幀的起始符,則CAN控制器要執(zhí)行接受數(shù)據(jù)硬同步,使接收器接收到的數(shù)據(jù)同步于總線上的數(shù)據(jù)。如果在接收數(shù)據(jù)的過程中TSEG1段檢測(cè)到隱性值到顯性值的跳變沿,接收器會(huì)把它解釋成是一個(gè)慢速的發(fā)送器發(fā)送的滯后邊沿,要延長TSEG1段,即執(zhí)行重新同步之同步延長。如果在接收數(shù)據(jù)的過程中TSEG2段檢測(cè)到隱性值到顯性值的跳變沿,接收器會(huì)將它解釋成是一個(gè)快速的發(fā)送器發(fā)送的下一個(gè)位周期的提前邊沿,則要縮短TSEG2段,即執(zhí)行重新同步之同步縮短。同步延長與同步縮短的最大寬度由同步跳轉(zhuǎn)寬度SJW給出。當(dāng)相位差大于或等于SJW時(shí),同步延長或縮短SJW,當(dāng)相位差小于SJW時(shí),同步延長或者縮短計(jì)算所得到的相位差值。在沒有同步產(chǎn)生時(shí),SYNC、TSEG1和TSEG2這三個(gè)時(shí)間段依次循環(huán)執(zhí)行,SYNC占一個(gè)時(shí)間額數(shù)TQ,TSEG1和TSEG2的大小由位時(shí)序控制寄存器BTR1輸入。根據(jù)上述構(gòu)思,本發(fā)明采用下述技術(shù)方案—種CAN控制器的位時(shí)序的同步處理方法,其特征在于將標(biāo)稱位時(shí)間劃分成3個(gè)互不重疊的段,將這三個(gè)段都用整數(shù)個(gè)基本時(shí)間單位即時(shí)間額數(shù)TQ來表示,將TSEG1的結(jié)尾設(shè)置為采樣點(diǎn)(見圖1),然后以這三個(gè)段為基礎(chǔ)設(shè)置一個(gè)狀態(tài)機(jī)SYNC—state,并檢測(cè)總線上"隱性"到"顯性"的跳變沿,根據(jù)跳變沿出現(xiàn)的時(shí)間段和狀態(tài)來執(zhí)行同步操作;其具體步驟為a.設(shè)定兩個(gè)總線時(shí)序寄存器BTR0和BTR1,BTR0用來存儲(chǔ)用戶設(shè)置的波特率預(yù)置數(shù)值BRP和同步跳轉(zhuǎn)寬度SJW,BTR1用來存儲(chǔ)用戶設(shè)置的時(shí)間緩沖段1TSEG1和時(shí)間緩沖段2TSEG2時(shí)間額數(shù)大小及采樣位;b.根據(jù)標(biāo)稱位時(shí)間的3個(gè)段同步段SYNC,時(shí)間緩沖段1TSEG1和時(shí)間緩沖段2TSEG2和CAN通信規(guī)范的要求設(shè)置一個(gè)同步狀態(tài)機(jī)SYNC_state,以實(shí)現(xiàn)CAN位時(shí)序的同止少;c.設(shè)定一個(gè)波特率發(fā)生器用來產(chǎn)生CAN通信系統(tǒng)的時(shí)鐘信號(hào)Clk_en,即設(shè)置基本時(shí)間單位,也就是時(shí)間額數(shù)TQ的持續(xù)時(shí)間,用來量化標(biāo)稱位時(shí)間和同步跳變沿的檢測(cè);d.設(shè)定一個(gè)TSEG1段時(shí)間額數(shù)計(jì)數(shù)寄存器bit_segl_cnt和一個(gè)TSEG2段時(shí)間額數(shù)計(jì)數(shù)寄存器bit—seg2—cnt,bit—segl—cnt用來存儲(chǔ)位時(shí)序處理過程中TSEG1的所經(jīng)過的時(shí)間額數(shù)的大小,bit—seg2—cnt用來存儲(chǔ)位時(shí)序處理過程中TSEG2的所經(jīng)過的時(shí)間額數(shù)的大??;e.設(shè)定一個(gè)同步延長寄存器delay—cnt和一個(gè)同步縮短寄存器decrease—cnt,delay—cnt用來存儲(chǔ)位時(shí)序處理的同步延長操作中需要延長的時(shí)間額數(shù)的大??;decrease—cnt用來存儲(chǔ)位時(shí)序處理的同步縮短操作中需要延縮短的時(shí)間額數(shù)的大小;f.通過"復(fù)位"來進(jìn)入位時(shí)序處理過程,然后通信過程中,同步狀態(tài)機(jī)SYNC—state根據(jù)總線上"隱性"到"顯性"的跳變沿情況進(jìn)行位時(shí)序的相應(yīng)同步操作,并設(shè)定相關(guān)信號(hào)。上述的設(shè)定兩個(gè)總線時(shí)序寄存器BTRO和BTR1的方法為定義BTRO和BTR1為兩個(gè)8位的寄存器,BTRO用來存儲(chǔ)用戶設(shè)置的波特率預(yù)置數(shù)值BRP和同步跳轉(zhuǎn)寬度SJW,BTR1用來存儲(chǔ)用戶設(shè)置的TSEG1段和TSEG2段時(shí)間額數(shù)大小及采樣位。BTRO的低六位用來存儲(chǔ)用戶設(shè)置的波特率預(yù)置數(shù)值BRP,高兩位存儲(chǔ)用戶設(shè)置的同步跳轉(zhuǎn)寬度SJW,它的定義如下<table>tableseeoriginaldocumentpage8</column></row><table>BTR1的低四位用來存儲(chǔ)用戶設(shè)置的TSEGl段時(shí)間額數(shù)time—segmentl,最高兩位存儲(chǔ)用戶設(shè)置的采樣位,剩余的三位用來存儲(chǔ)用戶設(shè)置的TSEG2段時(shí)間額數(shù)time_segment2它的定義如下<table>tableseeoriginaldocumentpage8</column></row><table>上述設(shè)置一個(gè)同步狀態(tài)機(jī)SYNC_state的方法為同步狀態(tài)機(jī)SYNC_state有五種狀態(tài),分別是同步段狀態(tài)SYNC,緩沖段1狀態(tài)SGE1,同步延長狀態(tài)WIND0W1,緩沖段2狀態(tài)SEG2和同步縮短狀態(tài)WIND0W2(見圖3)。通過復(fù)位進(jìn)入初始狀態(tài)緩沖段1狀態(tài)SEG1,如果有硬同步出現(xiàn)則重新進(jìn)入緩沖段1狀態(tài)SEG1;若在接受數(shù)據(jù)信號(hào)過程中,出現(xiàn)重新同步則進(jìn)入同步延長狀態(tài)WIND0W1,執(zhí)行同步延長操作;否則TSEGl段時(shí)間額數(shù)計(jì)數(shù)寄存器bit—segl—cnt計(jì)滿后進(jìn)入緩沖段2狀態(tài)SEG2。處在SEG2狀態(tài)時(shí),如果沒有同步信號(hào)產(chǎn)生,則TSEG2段時(shí)間額數(shù)計(jì)數(shù)寄存器bit_seg2_Cnt計(jì)滿后進(jìn)入同步段狀態(tài)SYNC狀態(tài);如果檢測(cè)到硬同步出現(xiàn),狀態(tài)機(jī)進(jìn)入緩沖段1狀態(tài)SGE1。如果在接收?qǐng)?bào)文的過程中檢測(cè)重新同步信號(hào),狀態(tài)機(jī)進(jìn)入WIND0W2狀態(tài),執(zhí)行同步縮短操作。WIND0W1狀態(tài),是執(zhí)行同步延長的狀態(tài),在TSEG1段延長結(jié)束后進(jìn)入SEG2狀態(tài),最大延長長度為SJW;WIND0W2狀態(tài),是執(zhí)行同步縮短的狀態(tài),在TSEG2段縮短結(jié)束后進(jìn)入SEG1狀態(tài),最大縮短長度為SJW;在SYNC狀態(tài),只要下一個(gè)時(shí)鐘沿來到則進(jìn)入SEG1狀態(tài)。與同步狀態(tài)機(jī)SYNC_state相關(guān)的一些信號(hào)和寄存器的定義如下(a).state/nxt_state:分別是同步狀態(tài)機(jī)SYNC_state指示的正在執(zhí)行的狀態(tài)和下一個(gè)執(zhí)行狀態(tài);(b).resync/harcLsync:分別是同步狀態(tài)機(jī)SYNC_state接收數(shù)據(jù)時(shí)的重新同步信號(hào)和硬同步信號(hào);(c).time_segmentl/time_segment2:分別是沒有同步時(shí)TSEG1段和TSEG2段的時(shí)間額數(shù)寄存器,由用戶定義的,存儲(chǔ)在CAN控制器時(shí)序寄存器BTR1中;(d).bit_segl_cnt/bit_seg2_cnt:分別是TSEG1段時(shí)間額數(shù)計(jì)數(shù)寄存器和TSEG2段時(shí)間額數(shù)計(jì)數(shù)寄存器,存儲(chǔ)位時(shí)序處理過程中TSEG1段和TSEG2段的所經(jīng)過的時(shí)間額數(shù)的大??;(e).delay_Cnt/deCrease_cnt:分別是同步延長寄存器和同步縮短寄存器,存儲(chǔ)位時(shí)序處理的同步延長操作中需要延長的時(shí)間額數(shù)的大小和位時(shí)序處理的同步縮短操作中需要延縮短的時(shí)間額數(shù)的大小。上述的設(shè)定一個(gè)波特率發(fā)生器用來產(chǎn)生CAN通信系統(tǒng)的時(shí)鐘信號(hào)clk_en的方法為該波特率發(fā)生器采用由振蕩器周期分頻方式產(chǎn)生CAN通信系統(tǒng)的時(shí)鐘信號(hào)clk_en,時(shí)鐘分頻數(shù)由用戶設(shè)置的波特率預(yù)置數(shù)值BRP加l之后再乘以2得到。CAN通信系統(tǒng)的時(shí)鐘信號(hào)clk_en的周期長度就是基本時(shí)間單位,也就是時(shí)間額數(shù)TQ的持續(xù)時(shí)間,它用來量化標(biāo)稱位時(shí)間和同步跳變沿的檢測(cè)。與波特率發(fā)生器相關(guān)的一些信號(hào)和寄存器的定義如下(a).preSet_Cnt:波特率預(yù)置數(shù)值BRP加1之后再乘以2得到的數(shù)值;(b).baud_r_preSC:用戶定義的波特率預(yù)置數(shù)值BRP寄存器;(c).0SC_clk:振蕩器時(shí)鐘頻率;(d).clk_cnt:時(shí)鐘分頻的計(jì)數(shù)器,用來存儲(chǔ)已計(jì)算的振蕩器時(shí)鐘數(shù),在計(jì)數(shù)值與preset_Cnt減1的值相等時(shí)清零;(e).clk_en:CAN通信系統(tǒng)的時(shí)鐘信號(hào)clk_en,它的周期長度就是一個(gè)TQ。上述的設(shè)定一個(gè)TSEG1段時(shí)間額數(shù)計(jì)數(shù)寄存器bit_segl_Cnt的方法為定義bit_segl_Cnt為一個(gè)5位的寄存器,它被用來存儲(chǔ)位時(shí)序處理過程中TSEG19段的所經(jīng)過的時(shí)間額數(shù)的大小的二進(jìn)制編碼,并將隨著CAN系統(tǒng)時(shí)鐘進(jìn)行計(jì)數(shù)。bit_segl_Cnt寄存器根據(jù)以下三種情況來計(jì)數(shù)或者清零(a).若復(fù)位信號(hào)或者硬同步到來了,bit_segl_Cnt計(jì)數(shù)寄存器清零;(b).若同步狀態(tài)機(jī)SYNC—state處在緩沖段l狀態(tài)SEGl或者同步縮短狀態(tài)WIND0W1,則經(jīng)過一個(gè)CAN系統(tǒng)時(shí)鐘周期bit_segl_cnt計(jì)數(shù)寄存器就加1;(c).若同步狀態(tài)機(jī)SYNC_state進(jìn)入緩沖段2狀態(tài)SEG2,bit_segl_cnt計(jì)數(shù)寄存器清零。上述的設(shè)定一個(gè)TSEG2段時(shí)間額數(shù)計(jì)數(shù)寄存器bit_seg2_cnt的方法為定義bit_seg2_Cnt為一個(gè)4位的寄存器,它被用來存儲(chǔ)位時(shí)序處理過程中TSEG2段的所經(jīng)過的時(shí)間額數(shù)的大小的二進(jìn)制編碼,并將隨著CAN系統(tǒng)時(shí)鐘進(jìn)行計(jì)數(shù)。bit_seg2_Cnt寄存器根據(jù)以下三種情況來計(jì)數(shù)或者清零(a).若復(fù)位信號(hào)或者硬同步到來了,bit_seg2_Cnt計(jì)數(shù)寄存器清零;(b).若同步狀態(tài)機(jī)SYNC—state處在緩沖段2狀態(tài)SEG2或者同步縮短狀態(tài)WIND0W2,則經(jīng)過一個(gè)CAN系統(tǒng)時(shí)鐘周期bit_seg2_cnt計(jì)數(shù)寄存器就加1;(c).若同步狀態(tài)機(jī)SYNC_state進(jìn)入緩沖段1狀態(tài)SEG1或者同步段狀態(tài)SYNC,bit_seg2_cnt計(jì)數(shù)寄存器清零。上述的設(shè)定一個(gè)同步延長寄存器delay—cnt的方法為定義delay—cnt為一個(gè)3位的寄存器,它被用來存儲(chǔ)位時(shí)序處理的同步延長操作中需要延長的時(shí)間額數(shù)的大??;它的最大值是同步跳轉(zhuǎn)寬度SJW控制,其中同步跳轉(zhuǎn)寬度SJW是由用戶定義的,存儲(chǔ)在CAN控制器時(shí)序寄存器BTR中。delay—cnt寄存器根據(jù)以下三種情況來設(shè)置或者清零(a).若復(fù)位信號(hào)或者硬同步到來了,或者同步狀態(tài)機(jī)SYNC_state進(jìn)入了緩沖段2狀態(tài)SEG2,delay_cnt計(jì)數(shù)寄存器清零;(b).若同步狀態(tài)機(jī)SYNC_state處在緩沖段1狀態(tài)SEG1,出現(xiàn)重新同步置l,且重新同步信號(hào)來到時(shí)bit_segl_Cnt寄存器計(jì)數(shù)的值大于同步跳轉(zhuǎn)寬度SJW的值,則delay_cnt寄存器的值等于跳轉(zhuǎn)寬度SJW的值加1;(c).若同步狀態(tài)機(jī)SYNC_state處在緩沖段1狀態(tài)SEG1,出現(xiàn)重新同步置l,且重新同步信號(hào)來到時(shí)bit—segl—cnt寄存器計(jì)數(shù)的值小于或等于同步跳轉(zhuǎn)寬度SJW的值,則delay—cnt寄存器的值等于bit_segl_Cnt寄存器計(jì)數(shù)的值加1。上述的設(shè)定一個(gè)同步縮短寄存器decrease—cnt的方法為定義decrease—cnt為一個(gè)3位的寄存器,它被用來存儲(chǔ)位時(shí)序處理的同步縮短操作中需要縮短的時(shí)間額數(shù)的大小;它的最大值是同步跳轉(zhuǎn)寬度SJW控制,其中同步跳轉(zhuǎn)寬度SJW是由用戶定義的,存儲(chǔ)在CAN控制器時(shí)序寄存器BTR中。decrease—cnt寄存器根據(jù)以下三種情況來設(shè)置或者清零(a).若復(fù)位信號(hào)或者硬同步到來了,或者同步狀態(tài)機(jī)SYNC_state進(jìn)入了緩沖段1狀態(tài)SEGl,decrease_cnt計(jì)數(shù)寄存器清零;(b).若同步狀態(tài)機(jī)SYNC_state處在緩沖段2狀態(tài)SEG2,出現(xiàn)重新同步置1,且重新同步信號(hào)來到時(shí)time—segment2寄存器中的值減去bit_seg2_cnt寄存器計(jì)數(shù)的值大于或等于同步跳轉(zhuǎn)寬度SJW的值,則decrease—cnt寄存器的值等于跳轉(zhuǎn)寬度SJW的值加1;(c).若同步狀態(tài)機(jī)SYNC_state處在緩沖段2狀態(tài)SEG2,出現(xiàn)重新同步置l,且重10新同步信號(hào)來到時(shí)time—segment2寄存器中的值減去bit_seg2_cnt寄存器計(jì)數(shù)的值小于或等于同步跳轉(zhuǎn)寬度SJW的值,則decrease—cnt寄存器的值等于time—segment2寄存器中的值減去bit_seg2_cnt寄存器計(jì)數(shù)的值。上述在位時(shí)序處理過程中根據(jù)總線上跳變沿情況進(jìn)行位時(shí)序的相應(yīng)同步操作有如下三種(a)時(shí)刻檢測(cè)總線傳輸?shù)男盘?hào),在沒有同步產(chǎn)生時(shí),狀態(tài)機(jī)SYNC—state在SEGl、SEG2和SYNC三個(gè)狀態(tài)之間依次循環(huán)執(zhí)行,即SYNC、TSEG1和TSEG2這三個(gè)時(shí)間段依次循環(huán)執(zhí)行,SYNC段占一個(gè)時(shí)間額數(shù)TQ,TSEG1段和TSEG2段的大小由位時(shí)序控制寄存器BTR1輸入。如果在空閑周期后,檢測(cè)到總線傳輸出現(xiàn)從隱性到顯性的跳變時(shí),執(zhí)行硬同步。無論狀態(tài)機(jī)SYNC_state處于何種狀態(tài)都會(huì)在下一個(gè)時(shí)鐘沿到來時(shí)進(jìn)入狀態(tài)SGE1狀態(tài)。一個(gè)標(biāo)稱位時(shí)間只執(zhí)行一次同步。與總線傳輸相關(guān)的信號(hào)為hard—sync:接收端硬同步信號(hào),高電平有效;rx:接收端口信號(hào);rx」dle:總線空閑信號(hào);last_bit_of_inte:幀間間歇最后一位;sampled_bit:采樣值;在總線收發(fā)過程中,時(shí)刻檢測(cè)接收端口rx的信號(hào),總線空閑rx」dle時(shí)檢測(cè)到總線傳輸出現(xiàn)從隱性到顯性的跳變,或者在幀間間歇最后一位laSt_bit_0f_inte檢測(cè)到總線傳輸出現(xiàn)從隱性到顯性的跳變,即當(dāng)前的采樣值samplecLbit為隱性且正在接收端口接收的這一位信號(hào)rx為顯性時(shí),接收器會(huì)將它解釋成報(bào)文幀的起始符,即執(zhí)行硬同步"harcLsync=l",接收器接收到的數(shù)據(jù)同步于總線上的位流。(b)在硬同步操作執(zhí)行完之后,接收器就進(jìn)入數(shù)據(jù)接收過程。在同步狀態(tài)機(jī)SYNC—state處于SEGl狀態(tài)時(shí),如果接收?qǐng)?bào)文幀時(shí),檢測(cè)到總線傳輸?shù)男盘?hào)出現(xiàn)隱性值到顯性值的跳變沿;即跳變沿發(fā)生在TSEG1段內(nèi),在SYNC段后但在接收器的采樣點(diǎn)前;亦即在同步狀態(tài)機(jī)SYNC_state處于SEGl狀態(tài),當(dāng)前的采樣值samplecLbit為隱性且正在接收端口接收的這一位信號(hào)rx為顯性時(shí),接收器會(huì)把它解釋成是一個(gè)慢速的發(fā)送器發(fā)送的滯后邊沿,執(zhí)行重新同步"resync=1",要延長TSEG1段,即為同步延長,狀態(tài)機(jī)進(jìn)入WIND0W1狀態(tài)。這種情況下,TSEG1段等于time_segmentl加上delay_cnt,TSEG2段等于time_segment2,如圖4所示。與檢測(cè)到重新同步的相關(guān)的信號(hào)為resync:接收端硬同步信號(hào),高電平有效;sync_blocked:同步阻塞信號(hào);resync_blocked:重新同步阻塞信號(hào);(c)在硬同步操作執(zhí)行完之后,接收器就進(jìn)入數(shù)據(jù)接收過程。在同步狀態(tài)機(jī)SYNC—state處于SEG2狀態(tài)時(shí),如果在接收?qǐng)?bào)文的過程中檢測(cè)到總線傳輸?shù)男盘?hào)出現(xiàn)隱性值到顯性值的跳變沿,即跳變沿發(fā)生在TSEG2段內(nèi),在采樣點(diǎn)之后;亦即在同步狀態(tài)機(jī)SYNC—state處于SEGl狀態(tài),當(dāng)前的采樣值samplecLbit為隱性且正在接收端口接收的這一位信號(hào)rx為顯性時(shí),接收器會(huì)將它解釋成是一個(gè)快速的發(fā)送器發(fā)送的下一個(gè)位周期的提前邊沿,則要縮短TSEG2段,即為同步縮短,執(zhí)行重新同步"resync=1",狀態(tài)機(jī)進(jìn)入WIND0W2狀態(tài)。這種情況下,TSEG1段等于time_segmentl,TSEG2段等于time_segment2減去dec—cnt,如圖5所示。本發(fā)明與現(xiàn)有技術(shù)相比較,具有以下的特點(diǎn)通過將標(biāo)稱位時(shí)間劃分成3個(gè)互不重疊的段同步段SYNC,時(shí)間緩沖段1TSEG1和時(shí)間緩沖段2TSEG2,將這三個(gè)段都用整數(shù)個(gè)基本時(shí)間單位即時(shí)間額數(shù)TQ來表示,將TSEG1的結(jié)尾設(shè)置為采樣點(diǎn),然后以這三個(gè)段為基礎(chǔ)設(shè)置一個(gè)狀態(tài)機(jī)SYNC_state,并檢測(cè)總線傳輸?shù)男盘?hào)"隱性"到"顯性"的跳變沿,根據(jù)跳變沿出現(xiàn)的時(shí)間段和狀態(tài)來執(zhí)行同步操作。在不影響CAN的數(shù)據(jù)通信的可靠性、穩(wěn)定性的情況下,相對(duì)于CAN協(xié)議規(guī)范標(biāo)稱位時(shí)間的四個(gè)互不重疊的段,整個(gè)位時(shí)序處理過程使用的存儲(chǔ)器減少了,執(zhí)行同步的步驟也得到了簡(jiǎn)化,使得CAN總線通信的位時(shí)序處理更簡(jiǎn)捷,還加強(qiáng)了CAN控制器的通用性。圖1是標(biāo)稱位時(shí)間結(jié)構(gòu)圖。圖2是位時(shí)序處理器結(jié)構(gòu)圖。圖3是同步狀態(tài)機(jī)狀態(tài)跳轉(zhuǎn)圖。圖4是重新同步之同步延長圖。圖5是重新同步之同步縮短圖。具體實(shí)施例方式本發(fā)明的一個(gè)優(yōu)選實(shí)施例結(jié)合附圖詳述如下參見圖1,本CAN控制器位時(shí)序的同步處理方法,通過將標(biāo)稱位時(shí)間劃分為三個(gè)互不重疊的段,采用下述的工作流程來實(shí)現(xiàn)對(duì)總線收發(fā)位時(shí)序的同步1)由用戶設(shè)定位時(shí)序處理過程中使用的參數(shù)值,即設(shè)定總線時(shí)序寄存器BTRO,BTR1。在本實(shí)施例中設(shè)定BTRO="01000011",BTR1="00101111"。即設(shè)定了同步跳轉(zhuǎn)寬度SJW="01",波特率預(yù)置數(shù)值BRP="000011",采樣位SAM="0",時(shí)間緩沖段2時(shí)間額數(shù)大小time_segment2="010,,,時(shí)間緩沖段1時(shí)間額數(shù)大小time_segmentl="1111,,。2)由用戶設(shè)定在總線上傳輸?shù)臄?shù)據(jù),用戶可以根據(jù)實(shí)際情況設(shè)置總線上傳輸?shù)臄?shù)據(jù),設(shè)定好后通過復(fù)位信號(hào)來啟動(dòng)位時(shí)序處理過程。3)復(fù)位以后,同步狀態(tài)機(jī)SYNC_state進(jìn)入初始狀態(tài)SEG1狀態(tài),TSEG1段時(shí)間額數(shù)計(jì)數(shù)器bit—segl—cnt開始計(jì)數(shù),在數(shù)據(jù)接收過程中,若沒有檢測(cè)到總線上隱性到顯性的跳變沿,則bit_segl_cnt計(jì)數(shù)值等于time_segmentl時(shí)進(jìn)入SEG2狀態(tài),bit_seg2_cnt計(jì)數(shù)值等于time—segment2時(shí)進(jìn)入SYNC狀態(tài),即CAN控制器的位時(shí)序按照標(biāo)稱位時(shí)間的同步段SYNC、時(shí)間緩沖1段TSEG1和時(shí)間緩沖2段TSEG2這三個(gè)段依次循環(huán)執(zhí)行。4)在數(shù)據(jù)接收過程中,如果在總線空閑,或者在幀間空間的最后一位檢測(cè)到總線傳輸?shù)臄?shù)據(jù)出現(xiàn)隱性到顯性的跳變沿,表示一幀數(shù)據(jù)的起始到來,則CAN控制器位時(shí)序處理時(shí)執(zhí)行硬同步,接收節(jié)點(diǎn)開始接收數(shù)據(jù),在下一個(gè)clk—en時(shí)同步狀態(tài)機(jī)SYNC—state重新進(jìn)入初始狀態(tài)SEG1狀態(tài),bit_segl_cnt開始計(jì)數(shù)。5)在硬同步操作執(zhí)行完以后,開始接收總線傳輸?shù)倪@一幀數(shù)據(jù),如果在接收過程中檢測(cè)到總線傳輸出現(xiàn)隱性到顯性的跳變沿,則根據(jù)跳變沿出現(xiàn)的時(shí)間段執(zhí)行相應(yīng)的操作。若跳變沿出現(xiàn)在同步段SYNC中,不執(zhí)行同步操作;6)在硬同步操作執(zhí)行完以后,若檢測(cè)到總線傳輸出現(xiàn)隱性到顯性的跳變沿跳變沿出現(xiàn)在時(shí)間緩沖1段TSEG1中,則CAN控制器執(zhí)行位時(shí)序重新同步的同步延長,延長時(shí)間緩沖1段TSEG1,同步狀態(tài)機(jī)進(jìn)入同步延長狀態(tài)WIND0W1狀態(tài),在bit_segl_Cnt計(jì)數(shù)器的值等于time_segmentl加上delay_cnt時(shí),進(jìn)入同步狀態(tài)機(jī)的SEG2狀態(tài);7)在硬同步操作執(zhí)行完以后,若檢測(cè)到總線傳輸出現(xiàn)隱性到顯性的跳變沿跳變沿出現(xiàn)在時(shí)間緩沖2段TSEG2中,則CAN控制器執(zhí)行位時(shí)序重新同步的同步縮短,縮短時(shí)間緩沖2段TSEG2,同步狀態(tài)機(jī)進(jìn)入同步縮短狀態(tài)WIND0W2狀態(tài),在bit_seg2_Cnt計(jì)數(shù)器的值等于time_segment2減去dec_cnt時(shí),進(jìn)入同步狀態(tài)機(jī)的SYNC狀態(tài)。本實(shí)施例中位時(shí)序處理器的工作過程包括系統(tǒng)時(shí)鐘周期的設(shè)定、跳變沿檢測(cè)與同步的執(zhí)行和數(shù)據(jù)的采樣。其內(nèi)部結(jié)構(gòu)框架示意圖見圖2。在位時(shí)序的處理過程中,首先要知道系統(tǒng)時(shí)鐘周期。波特率產(chǎn)生邏輯根據(jù)位時(shí)序寄存器所定義的波特率,由振蕩器周期分頻得出系統(tǒng)時(shí)鐘周期,即一個(gè)時(shí)間份額長度TQ。采樣邏輯在TSEG1段到TSEG2段的轉(zhuǎn)換處進(jìn)行采樣,采樣模式通過位時(shí)序控制寄存器的SAM位控制。1)同步檢測(cè)和同步鎖存器執(zhí)行同步信號(hào)的檢測(cè)與鎖存。同步檢測(cè)和鎖存的過程如下首先,只有在復(fù)位之后才能進(jìn)行正常檢測(cè),復(fù)位或者在上一次正常工作以后,此時(shí)總線空閑或者處在幀間空間階段,同步阻塞信號(hào)sync—blocked清O,重新同步阻塞信號(hào)resync—blocked置l,即只能進(jìn)行硬同步信號(hào)的檢測(cè),不能進(jìn)行重新同步的檢測(cè)。然后,檢測(cè)"rx"端口接收到的信號(hào)和采樣值samplecLbit的值,若在總線空閑或者在幀間間歇最后一位時(shí),采樣值samplecLbit=1且接收端口rx=O,則硬同步信號(hào)hard—sync置l,總線不在處于空閑狀態(tài),CAN控制器開始接收數(shù)據(jù),同時(shí)同步阻塞信號(hào)sync—blocked置l,重新同步阻塞信號(hào)resync—blocked清0,同步阻塞信號(hào)sync—blocked在這個(gè)數(shù)據(jù)位傳輸完以后再清0。接著,繼續(xù)檢測(cè)"rx"端口接收到的信號(hào)和采樣值samplecLbit的值,若在標(biāo)稱位時(shí)間的時(shí)間緩沖1段或者時(shí)間緩沖2段,檢測(cè)到采樣值samplecLbit=1且接收端口rx=0,則重新同步信號(hào)resync置1,同時(shí)同步阻塞信號(hào)sync—blocked置1且在這個(gè)數(shù)據(jù)位傳輸完以后再清0。直到這幀數(shù)據(jù)正常接收完以后,再次檢測(cè)硬同步信號(hào)。2)相位差檢測(cè)電路計(jì)算同步延長或同步縮短的相位差,在硬同步執(zhí)行之后接收一幀數(shù)據(jù)時(shí)出現(xiàn)重新同步才需要執(zhí)行相位差檢測(cè),同步延長與同步縮短的最大寬度由位時(shí)序控制寄存器的SJW位給出。相位差檢測(cè)的過程如下首先,在復(fù)位之后進(jìn)入正常工作狀態(tài)。然后在硬同步信號(hào)檢測(cè)到以后,CAN控制器開始接收數(shù)據(jù),并檢測(cè)總線上是否出現(xiàn)重新同步信號(hào)。在同步狀態(tài)機(jī)進(jìn)入SEGl狀態(tài)時(shí),寄存器bit_segl_Cnt開始計(jì)數(shù),每一個(gè)CAN系統(tǒng)時(shí)鐘周期bit_segl_Cnt計(jì)數(shù)寄存器就加1,若此時(shí)檢測(cè)到重新同步信號(hào),將此時(shí)的bit_segl_Cnt計(jì)數(shù)寄存器的值與同步跳轉(zhuǎn)寬度SJW的值進(jìn)行比較,bit_segl_Cnt寄存器計(jì)數(shù)的值大于同步跳轉(zhuǎn)寬度SJW的值時(shí),則同步延長寄存器delay—cnt的值等于跳轉(zhuǎn)寬度SJW的值加1;否則delay—cnt寄存器的值等于bit_segl_Cnt寄存器計(jì)數(shù)的值加1。在同步狀態(tài)機(jī)進(jìn)入SEG2狀態(tài)時(shí),寄存器bit—seg2—cnt開始計(jì)數(shù),每一個(gè)CAN系統(tǒng)時(shí)鐘周期bit—seg2—cnt計(jì)數(shù)寄存器就加l,若此時(shí)檢測(cè)到重新同步信號(hào),將time—segment2寄存器中的值減去此時(shí)的bit—seg2—cnt計(jì)數(shù)寄存器的值的結(jié)果與同步跳轉(zhuǎn)寬度SJW的值進(jìn)行比較,time—segment2寄存器中的值減去bit_seg2_Cnt寄存器計(jì)數(shù)的值大于或等于同步跳轉(zhuǎn)寬度SJW的值,則decrease—cnt寄存器的值等于跳轉(zhuǎn)寬度SJW的值加1;否則decrease_cnt寄存器的值等于time_segment2寄存器中的值減去bit_seg2_cnt寄存器計(jì)數(shù)的值。為了實(shí)現(xiàn)CAN控制器位時(shí)序的同步處理,本實(shí)施例采用了下述的同步狀態(tài)機(jī)SYNC_state(見圖3):參SEG1/SEG2:分別是時(shí)間緩沖1段和時(shí)間緩沖1段對(duì)應(yīng)的同步狀態(tài)機(jī)SYNC_state的狀態(tài);參SYNC:同步段對(duì)應(yīng)的同步狀態(tài)機(jī)SYNC_state的狀態(tài);參WIND0W1/WIND0W2:分別是同步延長和同步縮短對(duì)應(yīng)的同步狀態(tài)機(jī)SYNC_state的狀態(tài);參rst:復(fù)位信號(hào);參hard_sync/resync:分別硬同步信號(hào)和重新同步信號(hào);參time_segmentl/time_segment2:分別是沒有同步時(shí)TSEGl段和TSEG2段的時(shí)間額數(shù)寄存器;參bit_segl_cnt/bit_seg2_cnt:分別是TSEGl段時(shí)間額數(shù)計(jì)數(shù)寄存器和TSEG2段時(shí)間額數(shù)計(jì)數(shù)寄存器;參delay_Cnt/deCrease_cnt:分別是同步延長寄存器和同步縮短寄存器。從圖3中可以看出,該狀態(tài)機(jī)執(zhí)行兩種同步操作硬同步和重新同步。硬同步只有在幀起始時(shí)才執(zhí)行,每一個(gè)傳輸位只執(zhí)行一次同步。1)硬同步處理的過程首先,復(fù)位后進(jìn)入狀態(tài)機(jī)正常工作。無論同步狀態(tài)機(jī)SYNC_state處在何種狀態(tài),只要檢測(cè)到硬同步信號(hào),則寄存器bit_segl_cnt,bit_seg2_cnt,delay_cnt,decrease_cnt清O,狀態(tài)機(jī)SYNC_state重新進(jìn)入SEGl狀態(tài);即檢測(cè)到幀起始,然后開始接收這一幀數(shù)據(jù)并檢測(cè)重新同步信號(hào),直到這一幀數(shù)據(jù)接收完以后才能再次檢測(cè)硬同步信號(hào)。2)重新步處理的過程在硬同步處理完之后,才能開始檢測(cè)重新同步信號(hào)。若同步狀態(tài)機(jī)SYNC—state處在SEGl狀態(tài)時(shí)檢測(cè)到了重新同步信號(hào)resync等于1,則狀態(tài)機(jī)SYNC_state進(jìn)入WIND0W1狀態(tài),執(zhí)行重新同步之同步延長,在時(shí)間緩沖1段TSEGl延長delay—cnt個(gè)時(shí)間額數(shù)后進(jìn)入時(shí)間緩沖2段TSEG2(見圖4),即在bit_segl_cnt等于time_segmentl加上delay_cnt時(shí)進(jìn)入SEG2狀態(tài),這時(shí)在SEG2狀態(tài)不檢測(cè)同步信號(hào),在SEG2狀態(tài)后進(jìn)入SYNC狀態(tài);若同步狀態(tài)機(jī)SYNC_state處在SEGl狀態(tài)時(shí)沒有檢測(cè)到同步信號(hào)但處在SEG2狀態(tài)時(shí)檢測(cè)到了重新同步信號(hào)resync等于l,則狀態(tài)機(jī)SYNC_state進(jìn)入WIND0W2狀態(tài),執(zhí)行重新同步之同步縮短,在時(shí)間緩沖2段TSEG2縮短decrease—cnt個(gè)時(shí)間額數(shù)后進(jìn)入時(shí)間緩沖1段TSEGl(見圖5),即在bit_seg2_cnt等于time_segment2減去decrease_cnt時(shí)進(jìn)入SEGl狀態(tài);若同步狀態(tài)機(jī)SYNC_state處在SYNC狀態(tài)時(shí)檢測(cè)到了重新同步信號(hào)resync等于1,不執(zhí)行重新同步處理。1權(quán)利要求一種CAN控制器的位時(shí)序的同步處理方法,其特征在于將標(biāo)稱位時(shí)間劃分成3個(gè)互不重疊的段同步段SYNC,時(shí)間緩沖段1TSEG1和時(shí)間緩沖段2TSEG2,將這三個(gè)段都用整數(shù)個(gè)基本時(shí)間單位即時(shí)間額數(shù)TQ來表示,將TSEG1的結(jié)尾設(shè)置為采樣點(diǎn),然后以這三個(gè)段為基礎(chǔ)設(shè)置一個(gè)同步狀態(tài)機(jī)SYNC_state,并檢測(cè)總線上“隱性”到“顯性”的跳變沿,根據(jù)跳變沿出現(xiàn)的時(shí)間段和狀態(tài)來執(zhí)行同步操作;其具體步驟為a.設(shè)定兩個(gè)總線時(shí)序寄存器BTR0和BTR1,BTR0用來存儲(chǔ)用戶設(shè)置的波特率預(yù)置數(shù)值BRP和同步跳轉(zhuǎn)寬度SJW,BTR1用來存儲(chǔ)用戶設(shè)置的時(shí)間緩沖段1TSEG1和時(shí)間緩沖段2TSEG2時(shí)間額數(shù)大小及采樣位;b.根據(jù)標(biāo)稱位時(shí)間的3個(gè)段同步段SYNC,時(shí)間緩沖段1TSEG1和時(shí)間緩沖段2TSEG2和CAN通信規(guī)范的要求設(shè)置一個(gè)同步狀態(tài)機(jī)SYNC_state,以實(shí)現(xiàn)CAN位時(shí)序的同步;c.設(shè)定一個(gè)波特率發(fā)生器用來產(chǎn)生CAN通信系統(tǒng)的時(shí)鐘信號(hào)clk_en,即設(shè)置基本時(shí)間單位,也就是時(shí)間額數(shù)TQ的持續(xù)時(shí)間,用來量化標(biāo)稱位時(shí)間和同步跳變沿的檢測(cè);d.設(shè)定一個(gè)TSEG1段時(shí)間額數(shù)計(jì)數(shù)寄存器bit_seg1_cnt和一個(gè)TSEG2段時(shí)間額數(shù)計(jì)數(shù)寄存器bit_seg2_cnt,bit_seg1_cnt用來存儲(chǔ)位時(shí)序處理過程中TSEG1的所經(jīng)過的時(shí)間額數(shù)的大小,bit_seg2_cnt用來存儲(chǔ)位時(shí)序處理過程中TSEG2的所經(jīng)過的時(shí)間額數(shù)的大小;e.設(shè)定一個(gè)同步延長寄存器delay_cnt和一個(gè)同步縮短寄存器decrease_cnt,delay_cnt用來存儲(chǔ)位時(shí)序處理的同步延長操作中需要延長的時(shí)間額數(shù)的大?。籨ecrease_cnt用來存儲(chǔ)位時(shí)序處理的同步縮短操作中需要延縮短的時(shí)間額數(shù)的大??;f.通過“復(fù)位”來進(jìn)入位時(shí)序處理過程,然后通信過程中,同步狀態(tài)機(jī)SYNC_state根據(jù)總線上“隱性”到“顯性”的跳變沿情況進(jìn)行位時(shí)序的相應(yīng)同步操作,并設(shè)定相關(guān)信號(hào)。2.根據(jù)權(quán)利要求1所述的CAN控制器的位時(shí)序的同步處理方法,其特征在于所述的步驟a中設(shè)定兩個(gè)總線時(shí)序寄存器BTRO和BTR1的方法為定義BTRO和BTR1為兩個(gè)8位的寄存器,BTRO用來存儲(chǔ)用戶設(shè)置的波特率預(yù)置數(shù)值BRP和同步跳轉(zhuǎn)寬度SJW,BTR1用來存儲(chǔ)用戶設(shè)置的TSEG1段和TSEG2段時(shí)間額數(shù)大小及采樣位;BTRO的低六位用來存儲(chǔ)用戶設(shè)置的波特率預(yù)置數(shù)值BRP,高兩位存儲(chǔ)用戶設(shè)置的同步跳轉(zhuǎn)寬度SJW,它的定義如下SJW.1-SJW.0服P.5-服P.4-服P.3-服P.2-服P.l-服P.0BTR1的低四位用來存儲(chǔ)用戶設(shè)置的TSEG1段時(shí)間額數(shù)time—segmentl,最高兩位存儲(chǔ)用戶設(shè)置的采樣位,剩余的三位用來存儲(chǔ)用戶設(shè)置的TSEG2段時(shí)間額數(shù)time—segment2,它的定義如下SAMtime_segment2.2_time_segment2.0time_segmentl.3_time_segmentl.03.根據(jù)權(quán)利要求1所述的CAN控制器的位時(shí)序的同步處理方法,其特征在于所述的步驟b中設(shè)置一個(gè)同步狀態(tài)機(jī)SYNC_state的方法為同步狀態(tài)機(jī)SYNC_state有五種狀態(tài),分別是同步段狀態(tài)SYNC,緩沖段1狀態(tài)SGE1,同步延長狀態(tài)WIND0W1,緩沖段2狀態(tài)SEG2和同步縮短狀態(tài)WINDOW2。通過復(fù)位進(jìn)入初始狀態(tài)緩沖段1狀態(tài)SEGl,如果有硬同步出現(xiàn)則重新進(jìn)入緩沖段1狀態(tài)SEGl;若在接受數(shù)據(jù)信號(hào)過程中,出現(xiàn)重新同步則進(jìn)入同步延長狀態(tài)WIND0W1,執(zhí)行同步延長操作;否則TSEG1段時(shí)間額數(shù)計(jì)數(shù)寄存器bit_segl_Cnt計(jì)滿后進(jìn)入緩沖段2狀態(tài)SEG2;處在SEG2狀態(tài)時(shí),如果沒有同步信號(hào)產(chǎn)生,則TSEG2段時(shí)間額數(shù)計(jì)數(shù)寄存器bit—seg2—cnt計(jì)滿后進(jìn)入同步段狀態(tài)SYNC狀態(tài);如果檢測(cè)到硬同步出現(xiàn),狀態(tài)機(jī)進(jìn)入緩沖段1狀態(tài)SGE1;如果在接收?qǐng)?bào)文的過程中檢測(cè)重新同步信號(hào),狀態(tài)機(jī)進(jìn)入WIND0W2狀態(tài),執(zhí)行同步縮短操作;WIND0W1狀態(tài),是執(zhí)行同步延長的狀態(tài),在TSEG1段延長結(jié)束后進(jìn)入SEG2狀態(tài),最大延長長度為SJW;WIND0W2狀態(tài),是執(zhí)行同步縮短的狀態(tài),在TSEG2段縮短結(jié)束后進(jìn)入SEG1狀態(tài),最大縮短長度為SJW;在SYNC狀態(tài),只要下一個(gè)時(shí)鐘沿來到則進(jìn)入SEG1狀態(tài);與同步狀態(tài)機(jī)SYNC_state相關(guān)的一些信號(hào)和寄存器的定義如下(a).state/nxt_state:分別是同步狀態(tài)機(jī)SYNC_state指示的正在執(zhí)行的狀態(tài)和下一個(gè)執(zhí)行狀態(tài);(b).resync/harcLsync:分別是同步狀態(tài)機(jī)SYNC_state接收數(shù)據(jù)時(shí)的重新同步信號(hào)和硬同步信號(hào);(c).time_segmentl/time_segment2:分別是沒有同步時(shí)TSEG1段和TSEG2段的時(shí)間額數(shù)寄存器,由用戶定義的,存儲(chǔ)在CAN控制器時(shí)序寄存器BTR1中;(d).bit_segl_Cnt/bit_seg2_cnt:分別是TSEG1段時(shí)間額數(shù)計(jì)數(shù)寄存器和TSEG2段時(shí)間額數(shù)計(jì)數(shù)寄存器,存儲(chǔ)位時(shí)序處理過程中TSEG1段和TSEG2段的所經(jīng)過的時(shí)間額數(shù)的大?。?e).delay_Cnt/deCrease_Cnt:分別是同步延長寄存器和同步縮短寄存器,存儲(chǔ)位時(shí)序處理的同步延長操作中需要延長的時(shí)間額數(shù)的大小和位時(shí)序處理的同步縮短操作中需要延縮短的時(shí)間額數(shù)的大小。4.根據(jù)權(quán)利要求1所述的CAN控制器的位時(shí)序的同步處理方法,其特征在于所述的步驟c中設(shè)定一個(gè)波特率發(fā)生器用來產(chǎn)生CAN通信系統(tǒng)的時(shí)鐘信號(hào)clk_en的方法為該波特率發(fā)生器采用由振蕩器周期分頻方式產(chǎn)生CAN通信系統(tǒng)的時(shí)鐘信號(hào)Clk_en,時(shí)鐘分頻數(shù)由用戶設(shè)置的波特率預(yù)置數(shù)值BRP加1之后再乘以2得到。CAN通信系統(tǒng)的時(shí)鐘信號(hào)clk_en的周期長度就是基本時(shí)間單位,也就是時(shí)間額數(shù)TQ的持續(xù)時(shí)間,它用來量化標(biāo)稱位時(shí)間和同步跳變沿的檢測(cè);與波特率發(fā)生器相關(guān)的一些信號(hào)和寄存器的定義如下(a).preset_cnt:波特率預(yù)置數(shù)值BRP加1之后再乘以2得到的數(shù)值;(b).baud_r_presc:用戶定義的波特率預(yù)置數(shù)值BRP寄存器;(C).0SC_clk:振蕩器時(shí)鐘頻率;(d).Clk_cnt:時(shí)鐘分頻的計(jì)數(shù)器,用來存儲(chǔ)已計(jì)算的振蕩器時(shí)鐘數(shù),在計(jì)數(shù)值與preset_Cnt減1的值相等時(shí)清零;(e).clk_en:CAN通信系統(tǒng)的時(shí)鐘信號(hào)clk_en,它的周期長度就是一個(gè)TQ。5.根據(jù)權(quán)利要求1所述的CAN控制器的位時(shí)序的同步處理方法,其特征在于所述的步驟d中設(shè)定一個(gè)TSEGl段時(shí)間額數(shù)計(jì)數(shù)寄存器bit—segl—cnt的方法為定義bit_segl_Cnt為一個(gè)5位的寄存器,它被用來存儲(chǔ)位時(shí)序處理過程中TSEG1段的所經(jīng)過的時(shí)間額數(shù)的大小的二進(jìn)制編碼,并將隨著CAN系統(tǒng)時(shí)鐘進(jìn)行計(jì)數(shù);bit_segl_cnt寄存器根據(jù)以下三種情況來計(jì)數(shù)或者清零(a).若復(fù)位信號(hào)或者硬同步到來了,bit_segl_Cnt計(jì)數(shù)寄存器清零;(b).若同步狀態(tài)機(jī)SYNC_state處在緩沖段1狀態(tài)SEG1或者同步縮短狀態(tài)WINDOWl,則經(jīng)過一個(gè)CAN系統(tǒng)時(shí)鐘周期bit_segl_Cnt計(jì)數(shù)寄存器就加1;(c).若同步狀態(tài)機(jī)SYNC_state進(jìn)入緩沖段2狀態(tài)SEG2,bit_segl_Cnt計(jì)數(shù)寄存器清零。6.根據(jù)權(quán)利要求1所述的CAN控制器的位時(shí)序的同步處理方法,其特征在于所述的步驟d中設(shè)定一個(gè)TSEG2段時(shí)間額數(shù)計(jì)數(shù)寄存器bit—seg2—cnt的方法為定義bit_seg2_Cnt為一個(gè)4位的寄存器,它被用來存儲(chǔ)位時(shí)序處理過程中TSEG2段的所經(jīng)過的時(shí)間額數(shù)的大小的二進(jìn)制編碼,并將隨著CAN系統(tǒng)時(shí)鐘進(jìn)行計(jì)數(shù);bit_seg2_cnt寄存器根據(jù)以下三種情況來計(jì)數(shù)或者清零(a).若復(fù)位信號(hào)或者硬同步到來了,bit_seg2_cnt計(jì)數(shù)寄存器清零;(b).若同步狀態(tài)機(jī)SYNC_state處在緩沖段2狀態(tài)SEG2或者同步縮短狀態(tài)WIND0W2,則經(jīng)過一個(gè)CAN系統(tǒng)時(shí)鐘周期bit_seg2_Cnt計(jì)數(shù)寄存器就加1;(c).若同步狀態(tài)機(jī)SYNC_state進(jìn)入緩沖段1狀態(tài)SEG1或者同步段狀態(tài)SYNC,bit_seg2_cnt計(jì)數(shù)寄存器清零。7.根據(jù)權(quán)利要求1所述的CAN控制器的位時(shí)序的同步處理方法,其特征在于所述的步驟e中設(shè)定一個(gè)同步延長寄存器delay—cnt的方法為定義delay—cnt為一個(gè)3位的寄存器,它被用來存儲(chǔ)位時(shí)序處理的同步延長操作中需要延長的時(shí)間額數(shù)的大??;它的最大值是同步跳轉(zhuǎn)寬度SJW控制,其中同步跳轉(zhuǎn)寬度SJW是由用戶定義的,存儲(chǔ)在CAN控制器時(shí)序寄存器BTR中;delay—cnt寄存器根據(jù)以下三種情況來設(shè)置或者清零(a).若復(fù)位信號(hào)或者硬同步到來了,或者同步狀態(tài)機(jī)SYNC—state進(jìn)入了緩沖段2狀態(tài)SEG2,delay_cnt計(jì)數(shù)寄存器清零;(b).若同步狀態(tài)機(jī)SYNC_state處在緩沖段1狀態(tài)SEG1,出現(xiàn)重新同步置l,且重新同步信號(hào)來到時(shí)bit—segl—cnt寄存器計(jì)數(shù)的值大于同步跳轉(zhuǎn)寬度SJW的值,則delay—cnt寄存器的值等于跳轉(zhuǎn)寬度SJW的值加1;(c).若同步狀態(tài)機(jī)SYNC_state處在緩沖段1狀態(tài)SEG1,出現(xiàn)重新同步置l,且重新同步信號(hào)來到時(shí)bit—segl—cnt寄存器計(jì)數(shù)的值小于或等于同步跳轉(zhuǎn)寬度SJW的值,則delay_cnt寄存器的值等于bit_segl_Cnt寄存器計(jì)數(shù)的值加1;8.根據(jù)權(quán)利要求1所述的CAN控制器的位時(shí)序的同步處理方法,其特征在于所述的步驟e中設(shè)定一個(gè)同步縮短寄存器decrease_cnt的方法為定義decrease_cnt為一個(gè)3位的寄存器,它被用來存儲(chǔ)位時(shí)序處理的同步縮短操作中需要縮短的時(shí)間額數(shù)的大小;它的最大值是同步跳轉(zhuǎn)寬度SJW控制,其中同步跳轉(zhuǎn)寬度SJW是由用戶定義的,存儲(chǔ)在CAN控制器時(shí)序寄存器BTR中;decrease—cnt寄存器根據(jù)以下三種情況來設(shè)置或者清零(a).若復(fù)位信號(hào)或者硬同步到來了,或者同步狀態(tài)機(jī)SYNC_state進(jìn)入了緩沖段1狀態(tài)SEGl,decrease_cnt計(jì)數(shù)寄存器清零;(b).若同步狀態(tài)機(jī)SYNC_state處在緩沖段2狀態(tài)SEG2,出現(xiàn)重新同步置l,且重新同步信號(hào)來到時(shí)time—segment2寄存器中的值減去bit_seg2_cnt寄存器計(jì)數(shù)的值大于或等于同步跳轉(zhuǎn)寬度SJW的值,則deCrease_Cnt寄存器的值等于跳轉(zhuǎn)寬度SJW的值加1;(c).若同步狀態(tài)機(jī)SYNC_state處在緩沖段2狀態(tài)SEG2,出現(xiàn)重新同步置l,且重新同步信號(hào)來到時(shí)time—segment2寄存器中的值減去bit_seg2_Cnt寄存器計(jì)數(shù)的值小于或等于同步跳轉(zhuǎn)寬度SJW的值,則decrease—cnt寄存器的值等于time—segment2寄存器中的值減去bit_seg2_cnt寄存器計(jì)數(shù)的值;9.根據(jù)權(quán)利要求1所述的CAN控制器的位時(shí)序的同步處理方法,其特征在于所述的步驟f中位時(shí)序處理過程中,位時(shí)序處理器根據(jù)總線上跳變沿情況進(jìn)行位時(shí)序的相應(yīng)同步操作有如下三種(a).時(shí)刻檢測(cè)總線傳輸?shù)男盘?hào),在沒有同步產(chǎn)生時(shí),狀態(tài)機(jī)SYNC_state在SEGl、SEG2和SYNC三個(gè)狀態(tài)之間依次循環(huán)執(zhí)行,即SYNC、TSEG1和TSEG2這三個(gè)時(shí)間段依次循環(huán)執(zhí)行,SYNC段占一個(gè)時(shí)間額數(shù)TQ,TSEG1段和TSEG2段的大小由位時(shí)序控制寄存器BTR1輸入;如果在空閑周期后,檢測(cè)到總線傳輸出現(xiàn)從隱性到顯性的跳變時(shí),執(zhí)行硬同步;無論狀態(tài)機(jī)處于何種狀態(tài)都會(huì)在下一個(gè)時(shí)鐘沿到來時(shí)進(jìn)入狀態(tài)SGE1狀態(tài);一個(gè)標(biāo)稱位時(shí)間只執(zhí)行一次同步;與總線傳輸相關(guān)的信號(hào)為hard—sync:接收端硬同步信號(hào),高電平有效;rx:接收端口信號(hào);rx」dle:總線空閑信號(hào);last_bit_of_inte:幀間間歇最后一位;sampled—bit:米樣值;在總線收發(fā)過程中,時(shí)刻檢測(cè)接收端口rx的信號(hào),總線空閑rx」dle時(shí)檢測(cè)到總線傳輸出現(xiàn)從隱性到顯性的跳變,或者在幀間間歇最后一位lastj3it—ofjnte檢測(cè)到總線傳輸出現(xiàn)從隱性到顯性的跳變,即當(dāng)前的采樣值samplecLbit為隱性且正在接收端口接收的這一位信號(hào)rx為顯性時(shí),接收器會(huì)將它解釋成報(bào)文幀的起始符,即執(zhí)行硬同步"harcLsync=l",接收器接收到的數(shù)據(jù)同步于總線上的位流;(b).在硬同步操作執(zhí)行完之后,接收器就進(jìn)入數(shù)據(jù)接收過程;在同步狀態(tài)機(jī)SYNC—state處于SEGl狀態(tài)時(shí),如果接收?qǐng)?bào)文幀時(shí),檢測(cè)到總線傳輸?shù)男盘?hào)出現(xiàn)隱性值到顯性值的跳變沿;即跳變沿發(fā)生在TSEG1段內(nèi),在SYNC段后但在接收器的采樣點(diǎn)前;亦即在同步狀態(tài)機(jī)SYNC_state處于SEGl狀態(tài),當(dāng)前的采樣值samplecLbit為隱性且正在接收端口接收的這一位信號(hào)rx為顯性時(shí),接收器會(huì)把它解釋成是一個(gè)慢速的發(fā)送器發(fā)送的滯后邊沿,執(zhí)行重新同步"resync二1",要延長TSEG1段,即為同步延長,狀態(tài)機(jī)進(jìn)入WIND0W1狀態(tài);這種情況下,TSEG1段等于time_segmentl加上delay_cnt,TSEG2段等于time_segment2;與檢測(cè)到重新同步的相關(guān)的信號(hào)為resync:接收端硬同步信號(hào),高電平有效;sync_blocked:同步阻塞信號(hào);resync_blocked:重新同步阻塞信號(hào);(c).在硬同步操作執(zhí)行完之后,接收器就進(jìn)入數(shù)據(jù)接收過程;在同步狀態(tài)機(jī)SYNC—state處于SEG2狀態(tài)時(shí),如果在接收?qǐng)?bào)文的過程中檢測(cè)到總線傳輸?shù)男盘?hào)出現(xiàn)隱性值到顯性值的跳變沿,即跳變沿發(fā)生在TSEG2段內(nèi),在采樣點(diǎn)之后;亦即在同步狀態(tài)機(jī)SYNC_state處于SEG1狀態(tài),當(dāng)前的采樣值samplecLbit為隱性且正在接收端口接收的這一位信號(hào)rx為顯性時(shí),接收器會(huì)將它解釋成是一個(gè)快速的發(fā)送器發(fā)送的下一個(gè)位周期的提前邊沿,則要縮短TSEG2段,即為同步縮短,執(zhí)行重新同步"resync=1",狀態(tài)機(jī)進(jìn)入WIND0W2狀態(tài);這種情況下,TSEGl段等于time_segmentl,TSEG2段等于time_segment2減去dec_cnt。全文摘要本發(fā)明涉及一種CAN控制器的位時(shí)序的同步處理方法。本方法通過將標(biāo)稱位時(shí)間劃分成3個(gè)互不重疊的段同步段(SYNC),時(shí)間緩沖段1(TSEG1)和時(shí)間緩沖段2(TSEG2)。以這三個(gè)段為基礎(chǔ)構(gòu)建一個(gè)同步狀態(tài)機(jī)(SYNC_state),然后在總線傳輸過程中檢測(cè)從隱性跳變?yōu)轱@性的跳變沿,根據(jù)跳變沿所處的標(biāo)稱位時(shí)間的時(shí)間段或者所在的狀態(tài)機(jī)的狀態(tài)來執(zhí)行相應(yīng)的同步操作。本發(fā)明的方法不影響CAN的數(shù)據(jù)通信的可靠性、穩(wěn)定性,而使得CAN總線通信的位時(shí)序處理更簡(jiǎn)捷,還加強(qiáng)了CAN控制器的通用性。相對(duì)于CAN協(xié)議規(guī)范標(biāo)稱位時(shí)間的四個(gè)互不重疊的段,整個(gè)位時(shí)序處理過程使用的寄存器減少了,執(zhí)行位同步的步驟也得到了簡(jiǎn)化。本方法可應(yīng)用于獨(dú)立CAN控制器,也可應(yīng)用于其他嵌入微處理器的CAN控制器領(lǐng)域。文檔編號(hào)H04L7/033GK101719858SQ200910198239公開日2010年6月2日申請(qǐng)日期2009年11月3日優(yōu)先權(quán)日2009年11月3日發(fā)明者孫斌,徐曉勇,朱衛(wèi),胡越黎,閆科申請(qǐng)人:上海大學(xué)
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1