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

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

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

投稿記事by dwtechadm » 金 5 10, 2013 3:58 pm

Mini210S 開発キット詳細URL


第XI章 システムクロック初期化

第三節 コードコンパイルとプログラミングの実行

コードをコンパイルし、Fedora端末で下記のコマンドを実行します:
# cd 11.clock_c
# make
11.clock_cのディレクトリ下にclock.binを生成し、それを開発ボードにプログラムします。


第四節 実験現象
同じく、LEDの点滅を確認できます、点滅周期は余り変わりませんが、それは Superboot がクロックを初期化したためです。クロックを初期化せず開発ボードの速度を実験したいなら、clock.c内でマクロPLL_OFFを定義しPLL機能をOFFにします、こうすれば LEDの点滅周期は大幅に下がります。本章のクロック設定は APLL と MPLLで行います、そしてハードウェアがほとんどが正常に動作できます。次の章では、シリアルポートを初期化することにより、端末で文字を入力・出力する機能を実現します。本章の知識も必要となります。





第XII章 シリアルポート設定-文字の入力および出力

第一節 S5PV210 UART 説明
汎用非同期レシーバトランスミッタはUARTと略称します、すなわちUNIVERSAL ASYNCHRONOUS RECEIVER AND TRANSMITTER、シリアルデータを送信するために使用されます。データを送信する場合は、CPUがパラレルデータUARTに書き込まれ、UARTは特定のフォーマットに従ってワイヤーでシリアル発行します;データを受信する場合は、UARTは、もう一本のワイヤの信号を検出し、シリアルをバッファ内に収集します、そしてCPUがUARTのデータを読み取ることができます。
S5PV210では、UARTは4つの独立した非同期シリアルI / Oポートを提供し、4つの独立したチャンネルがあり、各チャネルはDMAモードまたは割り込みモードで動作できます。その中、チャネル0は256byteの受信FIFOと送信FIFOがあります、チャネル1は64byteの受信FIFOと送信FIFOがあります、チャネル2と3は16byteの受信FIFOと送信FIFOがあります。
S5PV210のUART構造図は次のとおりです:
画像
S5PV210 UARTの構造図
UARTは標準TTL / CMCOSロジック•レベルを使用してデータを表現します、そしてデータ抗干渉能力を強化し、伝送距離を向上させるために、TTL / CMOSロジックレベルをRS-232ロジック•レベルに変換します、概略図で見れば、Mini210SはMAX3232SOPチップを使用し、TX0とDX0を使用します:
画像
"XuTXD0"を検索し、結果は次の通り示します:

画像

UARTピン接続図
UARTの関連レジスタを設定することにより、UARTを駆動することができます、文字を送受信できます。


第二節 プログラム説明
完全なコードは、ディレクトリ12.uart_putcharご参照ください。前の章の11.clock_cと比べ、main.c にuart.cファイルを追加したことです。

1. main.c
完全なコードは次のとおりです:
int main()
{
char c;
uart_init(); // シリアルポートを初期化

while (1)
{
c = getc (); // 文字cを受信
putc(c+1); // 文字c1を送信
}
return 0;
}
main関数では、先にuart_init()を呼び出しでUARTを初期化します、そして、 getc で PC 側のデータ(文字)を受信します、続いて putc()を呼び出し、PCへデータ(文字)+1で 返送します。

2. uart.c
uart_init()コード:
void uart_init()
{

// 1 RX / TX用にピン・コンフィギュレーションを行います
GPA0CON = 0x22222222;
GPA1CON = 0x2222;

// 2 データ形式のセット
UFCON0 = 0x1; // FIFOオンにする
UMCON0 = 0x0; //フロー制御なし
ULCON0 = 0x3; //データビット:8、パリティなし、ストップビット:1
UCON0 = 0x5; //クロック:PCLK;割り込み禁止、UARTの受信、送信をオンにする

// 3 ボーレートを設定
UBRDIV0 = UART_UBRDIV_VAL; // 35
UDIVSLOT0 = UART_UDIVSLOT_VAL; // 0x1
}

上記のコードは三つの手順があります、下記は分解説明します::
ステップ 1 RX / TX用にピン・コンフィギュレーションを行います
UARTのピン接続図を参照して、GPA0CONとGPA1CONレジスタを設定し、GPA0、GPA1ピンをUART機能に使います。
画像
GPA0CONレジスタ図

画像

GPA1CON レジスタ図
ステップ 2 データ形式のセット
<1> ULCON0 データ形式を設定する、下記図を参照ください

画像

• Word Length = 11、8bit   データの長さ;
• Number of Stop Bit = 0、1bit ストップビット;
• Parity Mode = 000、 パリティなし;
• Infrared Mode =0、 ノーマルモードを使用;
よって ULCON0=0x3
<2> 9UCON0 はUARTのコンフィギュレーションレジスタ、下記図を参照ください
画像
画像

• Receive Mode = 01 、割り込みモードまたはポーリングモード;
• Transmit Mode = 01、割り込みモードまたはポーリングモード;
• Send Break Signal = 0、通常送信;
• Loop-back Mode = 0、ループバック•モードを使用しない;
• ここでポーリングモードを使用しますので、 bit[6-9]は全部 0となります;
• Clock Selection = 0、 PCLK UARTの動作クロックとして使います;
• DMAを使用しますため、bit[16]と bit[20] 全部 0となります;
よって UCON0 = 0x5
<3> UFCON0 和 UMCON0
二つのレジスタ相対簡単で、UFCON0はFIFOをオンにします、UMCON0はフロー制御の設定とします。






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

Return to Cortex-A8関連

オンラインデータ

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

cron