新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > A/D TLC1543 應用

        A/D TLC1543 應用

        作者: 時間:2016-11-18 來源:網絡 收藏
        首先了解下串行A/D芯片TLC1543的參數

        本文引用地址:http://www.104case.com/article/201611/316044.htm
        有6種工作模式:
        本程序使用了2種工作模式來編程,具體看時序圖:

        源程序:

        uint Read_AD(uchar AD_Channel) //從TLC1543讀取采樣值,形參AD_Channel是采樣的通道號
        {
        uint i;
        uint AD_data; //定義AD數據儲存地址
        uchar AD_data_l=0,AD_data_h=0; //定義AD數據儲存地址高低位

        // Page13 of TLC1543_datasheet
        AD_CLOCK=0;
        AD_CS=0;

        AD_Channel<<=4;

        for (i=0;i<4;i++) //把通道號打入1543
        {
        AD_D_IN=(bit)(AD_Channel&0x80);
        AD_CLOCK=1;
        AD_CLOCK=0;
        AD_Channel<<=1;
        }

        for (i=0;i<6;i++) //填充6個AD_CLOCK
        {
        AD_CLOCK=1;
        AD_CLOCK=0;
        }

        //AD 轉換有6種模式,具體時序圖見數據手冊,這里舉例2種轉換模式


        //1)Fast Modes=>Mode1: Hight between conversion cycles ; 10 I/O CLOCKS; MSB AT DATA OUT CS falling edge

        /*AD_CS=1;
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();
        AD_CS=0; // AD轉換結束
        */

        // 2)Fast Modes=>Mode2: Low conversion cycles ; 10 I/O CLOCKS; MSB AT DATA EOC rising edge
        while(!AD_EOC); //等待AD轉換

        _nop_();_nop_();_nop_(); //延時

        for (i=0;i<2;i++) //讀取高2位:D9,D8
        {
        AD_D_OUT=1;//讀取數據以前,數據口先置高
        AD_CLOCK=1;
        AD_data_h<<=1;
        //數據高低判斷

        if (AD_D_OUT==1) //(1)容易理解的寫法
        {AD_data_h=AD_data_h+0x01;}
        else
        {AD_data_h=AD_data_h+0x00;}
        //if (AD_D_OUT) AD_data_l +=0x01; //(1)精簡寫法
        AD_CLOCK=0;
        }

        for (i=0;i<8;i++) //讀取低8位:D7--D0
        {
        AD_D_OUT=1; //讀取數據以前,數據口先置高
        AD_CLOCK=1;
        AD_data_l <<= 1;

        //數據高低判斷
        if (AD_D_OUT==1) //(1)容易理解的寫法
        {AD_data_l=AD_data_l+0x01;}
        else
        {AD_data_l=AD_data_l+0x00;}

        //if (AD_D_OUT) AD_data_l +=0x01; //(2)精簡寫法
        AD_CLOCK=0;
        }

        AD_CS=1; //不使能AD

        //AD轉換結果計算公式:AD_data= AD_data_h*256+AD_data_l
        AD_data = (uint)AD_data_h;
        AD_data <<= 8;
        AD_data=AD_data+(uint)AD_data_l; //得到AD值
        return(AD_data);
        }



        關鍵詞: ADTLC154

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 莱阳市| 呼玛县| 祁连县| 光泽县| 定襄县| 普安县| 肇州县| 东兰县| 晋州市| 秦安县| 佛学| 贡嘎县| 安塞县| 内丘县| 禹城市| 嘉荫县| 广灵县| 枞阳县| 长汀县| 丹东市| 无极县| 泽普县| 岳阳市| 万荣县| 库车县| 滨州市| 临漳县| 巫山县| 呼和浩特市| 阿城市| 叙永县| 南宫市| 义乌市| 尚义县| 龙游县| 舞阳县| 枣阳市| 高州市| 盐边县| 中江县| 剑阁县|