Mini210S 開発キットOSなしのプログラム開発手順連載(26)

Mini210S/Tiny210等開発ボード関連のフォラーム

Mini210S 開発キットOSなしのプログラム開発手順連載(26)

投稿記事by dwtechadm » 金 5 10, 2013 6:20 pm

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値を変更することができます、効果は次のとおりです。
画像





---続く
dwtechadm
 
記事: 60
登録日時: 月 2 25, 2013 1:35 pm

Return to Cortex-A8関連

オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[0人]

cron