<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 淺談CAN總線的位定時參數(shù)

          淺談CAN總線的位定時參數(shù)

          作者: 時間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

          1.概述

          本文引用地址:http://www.ex-cimer.com/article/201609/303537.htm

          通信中,波特率、位周期內(nèi)采樣次數(shù)和采樣位置都可以通過編程設(shè)置,這些設(shè)置為用戶根據(jù)其應(yīng)用優(yōu)化網(wǎng)絡(luò)通信性能提供了方便。優(yōu)化參數(shù),能夠保證信息同步、通信性能、傳輸延遲和晶振誤差在極端條件下進行恰當(dāng)?shù)腻e誤檢測。

          然而系統(tǒng)的有些性能是相互沖突的,例如,在位周期末端部分選擇采樣點可以使傳播延遲有更大的容差,這時總線長度可以更長;如果在位周期的中點附近選擇采樣點,則系統(tǒng)的每個節(jié)點可以有更大的振蕩器容差??梢悦黠@地看出振蕩器容差和總線長度是互相沖突的,它們只有通過優(yōu)化參數(shù)才能兼?zhèn)洹?/p>

          本文將通過一個控制網(wǎng)絡(luò)介紹參數(shù)的基本概念和計算設(shè)置方法。該網(wǎng)絡(luò)采用AT89S52單片機、SJA1000 控制器和PCA82C250總線收發(fā)器設(shè)計,并應(yīng)用于樓宇自動化控制系統(tǒng)中,獲得了良好的應(yīng)用效果。

          2.CAN總線的位定時關(guān)系及相關(guān)概念

          下面介紹的幾個概念中有些與具體的器件有關(guān),本網(wǎng)絡(luò)中使用的CAN總線控制器件是SJA1000,因此,有關(guān)概念也都是針對SJA1000而言的。

          振蕩器時鐘周期tclk tclk是CAN總線控制器外掛晶振頻率的倒數(shù),它是CAN總線系統(tǒng)中的最小時間單位。

          系統(tǒng)時鐘周期tSCL tSCL是系統(tǒng)將tSCL分頻后得到的一個時間值,它在時間上就是一個時間份額TQ,分頻數(shù)由SJA1000的波特率預(yù)設(shè)值(BRP)決定。tSCL可由下式來計算:tSCL=2×tclk×BRP (1)

          位周期tBit位周期是一位數(shù)據(jù)在總線上的持續(xù)時間。使用Philips公司的獨立CAN控制器,一個位周期由3個部分組成:同步段( tSYNC_SEG)、相位緩沖段1(tTSEG1)和相位緩沖段2( tTseg2)。如下式所示:tBit=tSYNC_SEG+tTSEG1+tTSEG2 (2)

          CAN位定時控制寄存器BTR0和BTR1 SJA1000的地址6(BTR0)和地址7(BTR1)是位定時控制寄存器。

          BTR0的高兩位決定了同步跳轉(zhuǎn)寬度的大小,低六位決定波特率預(yù)設(shè)值; BTR1的最高位決定了總線采樣模式,低七位決定了TSEG1和TSEG2的大小。



          關(guān)鍵詞: CAN 位定時 CAN總線

          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();