新聞中心

        ARM入門筆記(5)

        作者: 時間:2016-12-02 來源:網(wǎng)絡(luò) 收藏
        模擬量輸入

        ——A/D轉(zhuǎn)換實驗

        一.目的

        通過A/D轉(zhuǎn)換,能夠正確讀取外部模擬輸入通道的電壓值。

        二.實驗程序和參數(shù)設(shè)置

        1>連接器選項設(shè)置和啟動代碼都與上個實驗相同
        2>C語言的代碼

        #i nclude "AT91SAM7S64.h"
        #i nclude "Board.h"
        volatile unsigned int EXT_AD_Val[4]; //定義A/D轉(zhuǎn)換結(jié)果值
        int main(void)
        {unsigned char i;
        *AT91C_ADC_CR = AT91C_CKGR_MOSCEN; //ADC的軟件復(fù)位,即清除ADC的所有寄存器
        *AT91C_PMC_SCER = AT91C_CKGR_MOSCEN;//使能系統(tǒng)時鐘寄存器的處理器時鐘
        *AT91C_PMC_PCER = 1 91C_ID_ADC; //使能ADC時鐘
        *AT91C_PIOA_PDR = EXT_AD0 | EXT_AD1; //禁止管腳的I/O口功能,使作為模擬輸入功能
        *AT91C_ADC_MR= 0x0f1f3f00; //軟件起動,10位分辨率,128分頻
        *AT91C_ADC_CHER = 0x33; //使能通道0,1,4,5
        *AT91C_ADC_CHDR = 0xcc; //禁能通道2,3,6,7
        *AT91C_ADC_IDR= 0xfffff; //禁止所有ADC中斷
        while (1)
        { *AT91C_ADC_CR = 0x2; //起動轉(zhuǎn)換
        while(1)
        { if ((*AT91C_ADC_SR) & 0x33)//等待轉(zhuǎn)換結(jié)束
        { EXT_AD_Val[0] = (*AT91C_ADC_CDR0) & 0x3ff;//讀取10Bit的結(jié)果值
        EXT_AD_Val[1] = (*AT91C_ADC_CDR1) & 0x3ff;
        EXT_AD_Val[2] = (*AT91C_ADC_CDR4) & 0x3ff;
        EXT_AD_Val[3] = (*AT91C_ADC_CDR5) & 0x3ff;
        for (i = 0; i
        break;
        }
        }
        }
        }

        三.總結(jié)

        執(zhí)行ADC的軟件復(fù)位,將清除ADC的所有相關(guān)寄存器,因此必須在設(shè)置ADC相關(guān)寄存器之前執(zhí)行。


        關(guān)鍵詞: ARM入門筆記模擬量輸

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 开化县| 南江县| 芮城县| 邻水| 赫章县| 高唐县| 石柱| 鹤山市| 芮城县| 武城县| 丹巴县| 珲春市| 张家界市| 裕民县| 长白| 酒泉市| 探索| 皋兰县| 松潘县| 天门市| 通许县| 衡阳市| 穆棱市| 嘉善县| 松原市| 阿克苏市| 丹江口市| 磴口县| 色达县| 商城县| 青河县| 友谊县| 乌鲁木齐市| 山丹县| 葫芦岛市| 抚顺县| 德格县| 庆城县| 沽源县| 卢湾区| 鹤峰县|