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

          新聞中心

          EEPW首頁(yè) > 手機(jī)與無(wú)線通信 > 設(shè)計(jì)應(yīng)用 > 基于dsPIC33FJ128MC506的CAN通信(07-100)

          基于dsPIC33FJ128MC506的CAN通信(07-100)

          ——
          作者:山東省科學(xué)院自動(dòng)化研究所 張?jiān)?李明強(qiáng) 莊汝科 時(shí)間:2009-03-04 來(lái)源:電子產(chǎn)品世界 收藏

            波特率的設(shè)置

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

            正確設(shè)置通信波特率必須配置以下幾個(gè)參數(shù):同步跳轉(zhuǎn)寬度、波特率預(yù)分頻比、相位段1和相位段2的長(zhǎng)度、采樣次數(shù)及傳播時(shí)間段的長(zhǎng)度。設(shè)置程序語(yǔ)句如下:

            void ecan1ClkInit(void)

            {

            /*指定 通信時(shí)鐘利用系統(tǒng)的指令周期,在此為20MHz,即Fcan=20MHz*/

            C1CTRL1bits.CKS = 1;

            /*規(guī)定一個(gè)位包含16個(gè)TQ,分配如下:*/

            C1CFG1bits.SJW = 3; //同步段 = 1TQ

            C1CFG2bits.SEG1PH=3; //相位傳輸段1 = 4TQ

            C1CFG2bits.SEG2PHTS = 1; //相位傳輸段2長(zhǎng)度可編程設(shè)定

            C1CFG2bits.SEG2PH = 3; //相位傳輸段2 = 4TQ

            C1CFG2bits.PRSEG = 6; //傳播時(shí)間段 = 7TQ

            C1CFG2bits.SAM = 0; //采樣次數(shù)為1次

            /*根據(jù)上面設(shè)置,算出波特率的分頻比。這里要注意的是,因?yàn)镃1CFG1bits.BRP只能填入整數(shù),那么在系統(tǒng)時(shí)鐘、通訊速率和時(shí)間份額三者之間要合理選擇,否則通信不會(huì)成功。例如:如果系統(tǒng)時(shí)鐘選用其內(nèi)部FRC,標(biāo)稱(chēng)值為7.37M,倍頻后的系統(tǒng)時(shí)鐘為36.85M,采用16個(gè)TQ為一個(gè)CAN位,假設(shè)CAN的通信速率為125K的話,那么根據(jù)公式BRP=Fcan/(2*16*125K)-1,計(jì)算得出的值為3.6,因?yàn)椴荒苷?,所以永遠(yuǎn)不能得到125K的通信速率。 在此我們?nèi)?0M的時(shí)鐘,指令周期為20M,一個(gè)CAN位為16個(gè)TQ,經(jīng)計(jì)算可得BRP的值為4。*/

            C1CFG1bits.BRP =4;

            }



          關(guān)鍵詞: CAN TJA1054 dsPIC33FJ128MC506

          評(píng)論


          技術(shù)專(zhuān)區(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); })();