Mini210S 開発キット詳細URL
第XX章 ADC 変換試験
第一節 S5PV210 ADC
S5PV210 ADC は10bit 和 12bitをサポート、 そして10チャネル入力をサポートしており、入力のアナログ信号を10bit/12bitのバイナリデジタル信号に変換します。本章でクロックは5MHz、最大変換速度1MSPS。この章では、基本のADC変換知識をご紹介します。構造図は下記図をご参照ください。
Mini210S adc 回路図:
チャンネル0の入力は可変抵抗器に接続されており、可変抵抗を調整することで、、ADCは異なる値に変換することができます。
第二節 プログラム説明
完全なコードは、ディレクトリ20.adcご参照ください。
1. main.c
main()関数は簡単で、adc_test()関数を呼び出しで adcをテストします、adc_test()はディレクトリ adc.cに定義されます。
2. adc.c
関数 adc_test()コード:
void adc_test(void)
{
printf("\r\n##################adc test################\r\n");
while(1)
{
printf("adc = %d\r\n"、read_adc(0));
delay(0x100000);
}
}
1つのwhileループを通じてチャンネル0の adcから変換値を読み取りし続きます、コア関数は read_adc()、手順は5つあります:
ステップ 1 クロック設定。コード:
TSADCCON0 = (1<<16)|(1 << 14) | (65 << 6);
先ず 12bit adcを使用し、分周を有効にして、分周係数を66と設定します
ステップ 2 チャンネル選択:
ADCMUX = 0;
レジスタ ADCMUXを設定、チャンネル0を選択。
ステップ 3 変換起動。コード:
TSADCCON0 |= (1 << 0);
while (TSADCCON0 & (1 << 0));
先ずレジスタ TSADCCON0 の bit[0]を設定し、 A/D変換を起動し、bit[0]を読み取り、変換機能を確認します。
ステップ 4 変換プロセスを確認します。コード:
while (!(TSADCCON0 & (1 << 15)) );
レジスタTsdACCON0 の bit[15]読み取り、1になると転換が終了します。
ステップ 5 データを読み取り、コード:
return (TsdATX0 & 0xfff);
ここでは12bit モードを使用しますため、レジスタTsdATX0 の初頭の 12bitのみ読み取ります。
第三節 コードコンパイルとプログラミングの実行
コードをコンパイルし、Fedora端末で下記のコマンドを実行します:
# cd 20.adc
# make
在 20.adcのディレクトリ下にadc.binを生成し、それを開発ボードにプログラムします。
第四節 実験現象
シリアルポート端末で数字をプリします、12bit ADCを使用するため、範囲は 0~4095です、可変抵抗器を調整することによって、ACD値を変更することができます、効果は次のとおりです。
---続く