gsq19920418 发表于 2017-4-27 15:55:33

問下有關ADC程序的問題(已解決),采樣時間問題

本帖最后由 gsq19920418 于 2017-4-27 17:57 编辑

float ADC12_inquire_get(uint8_t channel)
{
        /* 開啓管脚的特殊功能 */
        if(channel < 8)
        {
                P6SEL |= 0x01 << channel;
        }
    /* 清除寄存器值 */
    ADC12CTL0 = 0x00;
        /* 内部參考2.5V,開啓ADC12,關閉中斷 */
        ADC12CTL0 = REF2_5V + REFON + ADC12ON;
        /* SMCLK時鐘,單次單通道轉換 */
        ADC12CTL1 = ADC12SSEL0 + ADC12SSEL1;
        /* 設置ADC12MEM0中存儲結果,參考電壓是Vref+和Vref-,,設置通道 */
        ADC12MCTL0 = SREF0 + SREF2 + channel;
   
    ADC12MEM0 = 0;
        /* 開啓ADC12轉換 */
        ADC12CTL0 |= ENC + ADC12SC;
    ADC12CTL0 &= ~ADC12SC;
        /* 等待ADC轉換完成 */
        while((ADC12IFG & 0x0001) == 0);

        return (float)ADC12MEM0 / 4095.0f * 2.5f;
}


    1、如果使用ADC12CTL0 &= ~ADC12SC;比設置SHP讀取到的值更準確,沒明白爲什麽?
    2、另外不設置SHP,爲什麽ADC12SC不自動清零呢?在單通道單次轉換中SHP是沒有使用的吧

黑夜之狼 发表于 2017-4-27 17:25:56

这个得看手册吧{:sweat:}
页: [1]
查看完整版本: 問下有關ADC程序的問題(已解決),采樣時間問題