Xunwei 4412開発ボードLinux文字デバイス制御(2)

17.3キャラクターブザーブザー
LEDライトと同様に、次の図に示すように、ブザーのデバイスノードも/ devディレクトリにあります。

次の図に示すように、ブザーのハードウェアはLEDライトに似ています。

図1に示すように。
ネットワークMOTOR_場合の模式は容易に理解PWMが 高く、ネットワークは、L9014オフ低い場合ON L9014、ブザー、MOTOR_PWMは、ブザーが鳴りません。
操作方法は小型LEDライトと同様です。
ブザーテストルーチンブザーをテスト
するための簡単なbuzzertest.cファイルを記述します。
次の図に示すように、最初にヘッダーファイルを追加します。いくつかの新しいライブラリファイルが下に追加されます。通常、次のファイルが一般的に使用されます。コードを作成するときに
、便宜上直接追加できます。

次に、主な機能を次の図に示します。

上記のコードに示されているように。IOが1つしかないため、最下層は3番目のパラメーターを判断しないため、無効
です。16〜19行目では、パラメーターargv [1]に簡単な判断があり、コマンドは0または1のみです。
21〜24行目、open関数はブザーデバイスノードを開きます
26行目、ioctl関数を使用してブザーを操作します。
27行目で、close関数を使用してデバイスノードを閉じます。
コンパイルおよびテストを実行する
には Ubuntuの 前の実験で作成し、下図のようにディレクトリを入力し、システム「/ホーム/ linuxsystemcode / charcontrol」、そして、図に示すように、その中にソースコードをコピーしbuzzertest.c未満。

次の図に示すように、コマンド「arm-none-linux-gnueabi-gcc -o buzzertest buzzertest.c -static」を使用して、buzzertestファイルをコンパイルします。コマンド「ls」を使用して、buzzertest実行可能ファイルが生成されることを確認します。 。

USBフラッシュドライブからコードをコピーする方法は次のとおりです。USBフラッシュドライブはファイルシステムにコンパイルすることもできます。
コンパイルされた実行可能ファイルbuzzertestをUディスクにコピーし、開発ボードを起動し、Uディスクを挿入し、Uディスクをロードして、次のようにプログラムを実行します。
パラメータ1と0を使用すると、ブザーが鳴ります。2番目のパラメーターは実際には機能しません。

下の図に示すように、パラメータ0と0を使用すると、ブザーの鳴りが止まります。

17.4文字 ADC  アナログ-デジタル変換
LEDライトと同様に、デジタル-アナログ変換用のデバイスノードも、次の図に示すように、/ devディレクトリの下にあります。

アナログ-デジタル変換のハードウェア部分を次の図に示します。

図1に示すように。
XadcAIN0ネットワークは現在の入力電圧を読み取ることができます。スライディングレオスタットRが移動すると、1と2の間の抵抗 R12変化します。スライディングレオスタットの最大抵抗はR13で、電圧Vadc = R12 * VDD1V8_EXT / R13です。
上記の式では、Vadcは4412を通過できます。それを読み取った後、VDD1V8とR13がわかっているので、R12の抵抗を簡単に見つけることができます。次の図に示すように、4412データシートのADCの章には実際の抵抗と電圧の曲線があります。

これは値の単純な変換
です。1.8Vは10Kオームに対応し、対応するレジスタ値は0xfffです。
0Vは0オームに対応し、対応するレジスタ値は0x0です。
これは、読み取り値rを抵抗値Rに変換する簡単な式です。
R = r * 10000 / 0xfff、つまりR = r * 10000/4095。
この小さな式は、次のコードで使用されます。
アナログ-デジタル変換ルーチン
単純なADC.cファイルを記述してadcドライバーをテストします。次の図に示すように、最初にヘッダーファイルを追加します。

次に、主な機能を次の図に示します。

上記のコードに示されているように。
14行目では、デバイスノードはchar * adc = "/ dev / adc"です。
21行目で、デバイスノードファイルを開きます。
26行目で、読み取り関数を使用して、読み取り番号をバッファーに割り当てます。
30行目と31行目で、単純な変換を実行して、読み取った値を抵抗値に変換します。
テストをコンパイルして実行する
Ubuntuシステムでは、次の図に示すように、前の実験で作成したディレクトリ「/ home / linuxsystemcode / charcontrol /」を入力し、図に示すようにソース
コードADC.cをコピーします。未満。

次の図に示すように、コマンド「arm-none-linux-gnueabi-gcc -o ADC ADC.c -static」を使用してADCファイルをコンパイルし、コマンド「ls」を使用してADC実行可能ファイルが生成されることを確認します。 。

Uディスクからコードをコピーする方法は次のとおりです。これはファイルシステムにコンパイルすることもできます。具体的な方法については、セクション10.3.5を参照してください。コンパイルされた実行可能ファイルを開き、Uディスクにコピーし、開発ボードを起動し、Uディスクを挿入し、Uディスクをロードして、プログラムを実行します。
次の図に示すように、コマンド「./mnt/udisk/ADC」を使用して電流抵抗値を検出します。中央の大きな印刷パラメータは、駆動で導入されるマルチ印刷レジスタの値です。実験。

スライド抵抗を調整した後、下図のように再度テストプログラムを使用すると、出力値が変化します。

スライド式レオスタットが時計回りに回転すると抵抗値が減少し、最小値は0になります。
スライド式レオスタットが反時計回りに回転すると抵抗値が増加し、最大値は10Kになります。

 

おすすめ

転載: blog.csdn.net/mucheni/article/details/114583773