开心六月综合激情婷婷|欧美精品成人动漫二区|国产中文字幕综合色|亚洲人在线成视频

    1. 
      
        <b id="zqfy3"><legend id="zqfy3"><fieldset id="zqfy3"></fieldset></legend></b>
          <ul id="zqfy3"></ul>
          <blockquote id="zqfy3"><strong id="zqfy3"><dfn id="zqfy3"></dfn></strong></blockquote>
          <blockquote id="zqfy3"><legend id="zqfy3"></legend></blockquote>
          打開APP
          userphoto
          未登錄

          開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

          開通VIP
          【轉(zhuǎn)】單片機(jī)SPI接口和AD7799通信程序

          sbit AD7799_CS=P1^4;
          sbit AD7799_RDY=P1^6;

          //SPCR    SPI控制寄存器

          //SPSR    SPI狀態(tài)寄存器

          //SPDAT    SPI數(shù)據(jù)寄存器
          void SPI_init(void)
          {
              SPCR=0x5e;//SPI控制寄存器,中斷禁止,SPI使能,高位在前,主機(jī)模式,時(shí)鐘空閑時(shí)為高,后沿觸發(fā)移位,時(shí)鐘分頻64
          SPSR=0x00;//清中斷標(biāo)志位
          }
          /*--------------------------------------------
          寫AD7799寄存器函數(shù)
          WriteData:要寫的數(shù)據(jù)
          ----------------------------------------------*/
          void WriteByteToAd7799(unsigned char WriteData)
          {
              SPDAT= WriteData;
              while(~SPSR&0x80);        //等待數(shù)據(jù)發(fā)送完
              SPSR=0x00;                     //清中斷標(biāo)志位

          }
          /*--------------------------------------------
          防止時(shí)序混亂,實(shí)現(xiàn)再同步
          ----------------------------------------------*/
          void WaiteRDY(void)
          {
              unsigned int count=0 ;
              while(AD7799_RDY)
              {    
                  count++;
                  if(count>20000)
                  {
                       //reset ad7799
                      WriteByteToAd7799(0xff);

                      WriteByteToAd7799(0xff);
                                                /*----------防止時(shí)序混亂,重新同步----------*/
                      WriteByteToAd7799(0xff);

                      WriteByteToAd7799(0xff);

                      AD7799_init();
                      break ;
                  }
              }
          }

          /*--------------------------------------------
          AD7799初始化函數(shù)
          ----------------------------------------------*/
          void AD7799_init(void)
          {
             AD7799_CS=0;
          /*------------------------增益為128,通道0----------------------------------------*/
              WriteByteToAd7799(0x10); //寫通信寄存器設(shè)置下一個(gè)操作為寫配置寄存器

              WriteByteToAd7799(0x37); //增益為128

              WriteByteToAd7799(0x30); //通道0

          /*------------------- 寫模式寄存器初始化零值校準(zhǔn)------------------------------------*/
              WriteByteToAd7799(0x08); //寫通信寄存器設(shè)置下一個(gè)操作為寫模式寄存器

              WriteByteToAd7799(0x80);

              WriteByteToAd7799(0x0A);

              WaiteRDY();              //Wait for RDY pin to go low to indicate end of calibration cycle*/
          /*------------------寫模式寄存器初始化全值校準(zhǔn)-------------------------------------*/
              WriteByteToAd7799(0x08); //寫通信寄存器設(shè)置下一個(gè)操作為寫模式寄存器

              WriteByteToAd7799(0xA0);

              WriteByteToAd7799(0x0A);

              WaiteRDY();              // Wait for RDY pin to go low to indicate end of calibration cycle
          /*------------------模式0,Continuous-Conversion Mode,Fadc=16.7HZ------------------*/
              WriteByteToAd7799(0x08);      //寫通信寄存器設(shè)置下一個(gè)操作為寫模式寄存器

              WriteByteToAd7799(0x00);

              WriteByteToAd7799(0x0A);

          }
          unsigned long ReadAd7799ConversionData(void)
          {
              unsigned long ConverData;
              unsigned char ADSAT ;
              unsigned char ErrNUM=0;
              WaiteRDY();

              WriteByteToAd7799(0x40);     //寫通信寄存器設(shè)置下一個(gè)操作為讀狀態(tài)STATUS寄存器

              WriteByteToAd7799(0xff);     //偽寫通信寄存器,為讀狀態(tài)寄存器提供時(shí)鐘

              ADSAT=SPDAT;                 //讀取接收到的數(shù)據(jù)
              while((ADSAT&0x40)||(!(ADSAT&0x08)))      //出錯(cuò)或者讀寫異常
              {
                   //reset ad7799
                   WriteByteToAd7799(0xff);

                   WriteByteToAd7799(0xff);
                                                /*----------防止時(shí)序混亂,重新同步----------*/
                   WriteByteToAd7799(0xff);

                   WriteByteToAd7799(0xff);

          //-------------------------------------------------------------------------------------     
                  AD7799_init();
                 
                  WaiteRDY();
                  WriteByteToAd7799(0x40);     //寫通信寄存器設(shè)置下一個(gè)操作為讀狀態(tài)STATUS寄存器

                  WriteByteToAd7799(0xff);     //偽寫通信寄存器,為讀狀態(tài)寄存器提供時(shí)鐘

                  ADSAT=SPDAT;                 //讀取接收到的數(shù)據(jù)
                 
                  ErrNUM++;
                  if(ErrNUM>5)break;
              }

              WriteByteToAd7799(0x58);        //寫通信寄存器設(shè)置下一個(gè)操作為連續(xù)讀數(shù)據(jù)寄存器

              WaiteRDY();
              /* Wait for RDY pin to go low to indicate end of calibration cycle*/
              if(!AD7799_RDY)
              {
                  ConverData=0 ;
          /*-----------------Read Conversion Result from AD7799's Data Register----------------*/

                  WriteByteToAd7799(0xff);             //偽寫通信寄存器,為讀數(shù)據(jù)寄存器寄存器提供時(shí)鐘
                  ConverData=SPDAT;
                  ConverData=ConverData<<8 ;

                  WriteByteToAd7799(0xff);             //偽寫通信寄存器,為讀數(shù)據(jù)寄存器寄存器提供時(shí)鐘
                  ConverData=ConverData+SPDAT;
                  ConverData=ConverData<<8 ;

                  WriteByteToAd7799(0xff);             //偽寫通信寄存器,為讀數(shù)據(jù)寄存器寄存器提供時(shí)鐘
                  ConverData=ConverData+SPDAT;
                 
              }
              if(ErrNUM>5)return(0);
              else return(ConverData);
          }

          本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
          打開APP,閱讀全文并永久保存 查看更多類似文章
          猜你喜歡
          類似文章
          AD7798,AD7799調(diào)試程序電路及pdf中文資料下載
          基于51的SPI通訊原理及協(xié)議詳解
          ISD1700語(yǔ)音芯片SPI使用總結(jié)(一)
          ad7190引腳圖及功能
          stm32之SPI
          nrf24l01中文資料
          更多類似文章 >>
          生活服務(wù)
          分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
          綁定賬號(hào)成功
          后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
          如果VIP功能使用有故障,
          可點(diǎn)擊這里聯(lián)系客服!

          聯(lián)系客服