色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > CAN總線波特率計(jì)算及設(shè)置方法(STM32,SJA1000,LPC2292)

          CAN總線波特率計(jì)算及設(shè)置方法(STM32,SJA1000,LPC2292)

          作者: 時(shí)間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
          SJA1000 內(nèi)部頻率基準(zhǔn)源F_BASE = Fclk/2,即外部晶振頻率Fclk的2分頻。注意任何應(yīng)用中,當(dāng)利用外部晶振作為基準(zhǔn)源的時(shí)候,都是先經(jīng)過2分頻整形的。

          1.1 位周期的組成

          本文引用地址:http://cafeforensic.com/article/201611/319141.htm

            波特率(fbit)是指單位時(shí)間內(nèi)所傳輸?shù)臄?shù)據(jù)位的數(shù)量,一般取單位時(shí)間為1s。波特率由通信線上傳輸?shù)囊粋€(gè)數(shù)據(jù)位周期的長度(Tbit)決定,如下式所示。

            Fbit=1/Tbit ?。?)

            根據(jù)Philips公司的獨(dú)立通信控制器,一個(gè)位周期由3個(gè)部分組成:同步段(tSYNC_SEG)、相位緩沖段1(tTSEG1)和相位緩沖段2(tTSEG2)。

            Tbit=tSYNC_SEG+tTSEG1+tTSEG2   (2)

            所有這些時(shí)間段,都有一個(gè)共同的時(shí)間單元——系統(tǒng)時(shí)鐘周期(TSCL)。具體到SJA1000,TSCL由總線時(shí)序寄存器的值來確定。 SJA1000有2個(gè)總線時(shí)序寄存器,即總線時(shí)序寄存器0(BTR0)和總線時(shí)序寄存器1(BTR1)。這2個(gè)寄存器有自己不同的功能定義,共同作用決定總線的通信波特率。

            總線時(shí)序寄存器0 定義波特率預(yù)設(shè)值BRP(共6位,取值區(qū)間[1,64]和同步跳轉(zhuǎn)寬度SJW(共2位,取值區(qū)間[1,4])的值。位功能說明如表1所列。

            表1

          bit7bit6bit5bit4bit3bit2bit1bit0
          SJW.1SJW.0BRP.5BRP.4BRP.3BRP.2BRP.1BRP.0

            CAN的系統(tǒng)時(shí)鐘周期TSCL,可以由BRP的數(shù)值為決定,計(jì)算公式如下:

            TSCL=2TCLK×BRP=2TCLK×(32BRP.5+16BRP.4+

            8BRP.3+4BRP.2+2BRP.1+1BRP.0+1) ?。?)

            其中TCLK為參考時(shí)間的周期。

            TCLK=1/fCLK  (4)

            為了補(bǔ)償不同總線控制器的時(shí)鐘振蕩器之間的相位偏移,任何總線控制器必須在當(dāng)前傳送的相關(guān)信號(hào)邊沿重新同步。同步跳轉(zhuǎn)寬度定義了每一位周期可以被重新同步縮短或延長的時(shí)鐘周期的最大數(shù)目。

            tSJW=TSCL×(2×SJW.1+1×SJW.0+1)?。?)

            總線時(shí)序寄存器1 定義每個(gè)位周期長度采樣點(diǎn)的位置和在每個(gè)采樣點(diǎn)的采樣數(shù)目。位功能說明如表2所列,其中SAM意義見表3。

            表2

          bitbitbitbitbitbitbitbit
          SAMTSEG2.2TSEG2.1TSEG2.0TSEG1.3TSEG1.2TSEG1.1TSEG1.0

            表3

          功能
          SAM0三倍:總線采樣三次:建議在中/低速總線(A和B級(jí))使用,有處于過濾總線上毛刺
          1單倍:總線采樣一次;建議使用在高速總線上(SAEC級(jí))

            TSEG1(共4位,取值區(qū)間[1,16])和TSEG2(共3位,取值區(qū)間[1,8])決定了每一位時(shí)鐘數(shù)目和采樣點(diǎn)的位置。這里

            tSYNC_SEG=1×TSCL(此時(shí)間段固定) (6)

            tTSEG1=TSCL×(8×TSEG1.3+4×TSEG1.2+2×TSEG1.1+1×TESG1.0+1)  (7)

            tTSEG2=TSCL×(4×TSEG2.2+2×TSEG2.1+1×TESG2.0+1)  (8)

            位周期的標(biāo)量值(NBT)定義為,SYNC_SEG(同步段系統(tǒng)時(shí)鐘周期數(shù))、TSEG1(相位緩沖段1系統(tǒng)時(shí)鐘周期數(shù))、TSEG2(相位緩沖段2系統(tǒng)時(shí)鐘周期數(shù))之和。這決定了它的取值區(qū)間為[3,25],在1個(gè)取樣點(diǎn)時(shí),最小值一般取4;在3個(gè)取樣點(diǎn)時(shí),最小值一般取5。

            NBT=Tbit/TSCL=SYNC_SEG+TSEG1+TSEG2  (9)

            位周期的一般結(jié)構(gòu)如圖1所示。

            

            其實(shí)CAN的波特率計(jì)算特簡單,只是我們無意識(shí)地把簡單的問題復(fù)雜化了。
              
              假設(shè)我們先不考慮BTR0中的SJW位和BTR1中的SAM位。那么,BTR0和BTR1就是2個(gè)分頻系數(shù)寄存器;它們的乘積是一個(gè)擴(kuò)展的分頻系數(shù)。即:
              
               BTR0×BTR1=F_BASE/Fbps (1)
               其中:
               內(nèi)部頻率基準(zhǔn)源F_BASE = Fclk/2,即外部晶振頻率Fclk的2分頻。注意任何應(yīng)用中,當(dāng)利用外部晶振作為基準(zhǔn)源的時(shí)候,都是先經(jīng)過2分頻整形的。
             ?。?)式中,當(dāng)晶振為16M時(shí),F(xiàn)_BASE=8000K
               當(dāng)晶振為12M時(shí),F(xiàn)_BASE=6000K
               Fbps就是我們所希望得到的CAN總線頻率。單位為K。
               設(shè)(1)式中BTR0=m,BTR1=n,外部晶振16M,則有:
               m • n =8000/ Fbps (2)
               這樣,當(dāng)Fbps取我們希望的值時(shí),就會(huì)得到一個(gè)m * n的組合值。當(dāng)n選定,m值也唯一。
               n值CAN規(guī)范中規(guī)定8~25。(也就是BTR1的值)基本原則為:Fbps值越高時(shí),選取n(通過設(shè)置BTR1)值越大。其原因不難理解。
               我假定一般應(yīng)用中選取n=10,也就是:
               同步段+相位緩沖段1+相位緩沖段2 =1+5+4
               則(2)式簡化為
               m=800/Fbps
              
               m的最大設(shè)置值為64,SJA1000最大分頻系數(shù)m*n=64x25=1600。因此標(biāo)準(zhǔn)算法中通常以16M晶振為例。其實(shí)有了公式(1),任何晶振值(6M~24M)都很容易計(jì)算。
               SAM的確定:低頻時(shí),選SAM=1,即采樣3次。高頻100K以上時(shí),取SAM=0,即采樣1次。
               SJA重同步跳寬選取: 與數(shù)字鎖相環(huán)技術(shù)有關(guān)。n值選得大時(shí),SJA可以選得大,即一次可以修正多個(gè)脈沖份額Tscl。n值小或頻率低時(shí),選SJA=1。即BTR0.7和BTR0.6都設(shè)為0。
              
            問題: 1、SJA1000中,BTR1中相位緩沖段1為什么設(shè)計(jì)的比相位緩沖段2大8個(gè)Tscl ?按道理應(yīng)該一樣才對。
               2、下例BTR0和BTR1的設(shè)置有什么問題?
               BTR0=0x40, BTR1=0x1C。

          參數(shù)說明: CAN_ByteRate 波特率(Kbit/s) BTR0BTR1 *
          :* 0 50XBFH 0XFFH *
          ;* 1 100X67H 0X2FH *
          ;* 2 200X53H 0X2FH *
          ;* 3 400X87H 0XFFH *
          ;* 4 500X47H 0X2FH *
          ;* 5 800X83H 0XFFH *
          ;* 6 1000X43H 0X2FH *
          ;* 7 125 0X03H 0X1CH *
          ;* 8 200 0X81H 0XFAH *
          ;*9 250 0X01H 0X1CH *
          ;* 10 400 0X80H 0XFAH *
          ;* 11 500 0X00H 0X1CH *
          ;* 12 666 0X80H 0XB6H *
          ;* 13800 0X00H 0X16H *
          ;* 14 1000 0X00H 0X14H *



          評論


          技術(shù)專區(qū)

          關(guān)閉