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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > PIC16位單片機(jī)CAN(6)外部AD

          PIC16位單片機(jī)CAN(6)外部AD

          作者: 時間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
          外部AD使用的是AD7170 具體的資料看datasheet。簡單說一下這個AD的注意事項。
          AD7170是一款低功耗ADC,片內(nèi)集成精密12位Σ-Δ調(diào)制器和數(shù)字濾波器,用于測量寬動態(tài)范圍、低頻信號。該器件具有一個內(nèi)部時鐘和一路差分輸入,輸出數(shù)據(jù)速率為125 Hz,增益為1。雙線式接口可簡化從AD7170獲取數(shù)據(jù)的過程。
          簡單一句話。一個時鐘輸入,一個串行轉(zhuǎn)換輸出。模擬輸入為雙極性輸入。
          時鐘和串行數(shù)據(jù)輸出就不多說了,看看時序就知道了。重點看一下什么叫做雙極性輸入。
          AD7170支持雙極性輸入范圍。雙極性輸入范圍不代表器件可以耐受相對于系統(tǒng)GND的負(fù)電壓。AIN(+)輸入端的信號以AIN(?)輸入端的電壓為基準(zhǔn)。例如,當(dāng)使用2.5 V基準(zhǔn)電壓時,如果AIN(?)為2.5 V,則AIN(+)輸入的模擬輸入范圍為0 V至5 V。
          重點是數(shù)據(jù)輸出編碼!?。?/div>
          當(dāng)ADC的輸入設(shè)為單極性輸入時,ADC的輸出碼是直接二進(jìn)制形式。以16位ADC為例,當(dāng)輸入為0V時,輸出碼是0x0000;當(dāng)輸入是一半量程時,輸出碼為0x8000;當(dāng)輸入為滿量程時,輸出為0xFFFF。
          如果ADC的輸入是雙極性的,那么ADC的輸出碼為偏移二進(jìn)制形式,以16位ADC為例,當(dāng)輸入為負(fù)的滿量程,輸出碼為0x0000;當(dāng)輸入為0V,輸出碼為0x8000;當(dāng)輸入為正的滿量程,輸出為0xFFFF。
          具體的編碼輸出可以看datasheet說明。提倡看英文版的,因為中文版的易出錯!
          根據(jù)datasheet,我使用引腳電平變化中斷來確定什么時候AD轉(zhuǎn)換完成。
          void __attribute__((__interrupt__,no_auto_psv)) _CNInterrupt(void)
          {
          IFS1bits.CNIF=0;//輸入電平變化通知中斷標(biāo)志狀態(tài)位
          IEC1bits.CNIE=0;//輸入電平變化通知中斷允許位
          if(PORTAbits.RA1==1)
          {
          Nop();
          }
          else
          {
          AD_Data=AD_ReadData()/2;
          }
          IEC1bits.CNIE=1;//輸入電平變化通知中斷允許位
          }



          關(guān)鍵詞: PIC16位單片機(jī)外部A

          評論


          技術(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); })();