MCU が LCD 画面を駆動する方法と設計上の考慮事項

2023-07-17

シングルチップマイコンの分類と応用
MCUはメモリの種類によりROMを内蔵しないタイプとROMを内蔵するタイプに分けられます。オンチップ ROM のないチップの場合は、外部 EPROM (通常は 8031) に接続する必要があります。オンチップ ROM を備えたチップは、オンチップ EPROM (通常は 87C51)、MASK オンチップ マスク ROM (通常は 87C51、チップは 8051)、オンチップ フラッシュ タイプ (通常は 89C51) およびその他のタイプに分類されます。
目的に応じて汎用品と専用品に分けられます。データ バスの幅と一度に処理できるデータ バイトの長さに応じて、8 ビット、16 ビット、および 32 ビットの MCU に分割できます。
現在、国内の MCU アプリケーション市場は民生用電子機器分野で最も広く使用されており、次に産業分野、車載電子機器市場が続きます。家庭用電化製品には、家電製品、テレビ、ゲーム機、オーディオおよびビデオ システムなどが含まれます。産業分野には、スマート ホーム、オートメーション、医療アプリケーション、新エネルギーの生成と配電が含まれます。自動車分野には、自動車のパワートレインや安全制御システムなどが含まれます。
Shenzhen Honjia Technology Co., Ltd.は、カスタマイズ可能な1.14インチ~10.1インチのLCDスクリーンとタッチスクリーンの研究開発、生産、販売を専門とし、SPIインターフェース、MCUインターフェース、RGBインターフェース、 MIPIインターフェースなど。サイズやモデルも豊富。抵抗膜式タッチスクリーンや静電容量式タッチスクリーンにも対応。
シングルチップマイコンの基本機能

ほとんどの MCU では、次の機能が最も一般的で基本的な機能です。 MCU が異なると説明が異なる場合がありますが、本質的には基本的に同じです。

1. TImer (タイマー): TImer には多くの種類がありますが、2 つのカテゴリに分類できます。1 つは固定時間間隔の TImer、つまりタイミングはシステムによって設定され、ユーザー プログラムを制御することはできません。ユーザー プログラムが選択できるのは、32Hz、16Hz、8Hz などのいくつかの固定時間間隔のみです。この種の TImer は 4 ビット MCU でより一般的であるため、クロックやタイミングなどの関連機能を実装するために使用できます。 。
もう 1 つは Programmable Timer (プログラマブル タイマー) です。名前が示すように、このタイプのタイマーのタイミング時間はユーザーのプログラムによって制御できます。制御方法には、クロックソースの選択、分周(プリスケール)の選択、プレハブ数の設定などが含まれます。MCUによっては3つすべてを同時に備えている場合もあれば、そのうちの1つまたは2つを備えている場合もあります。この種のタイマー アプリケーションは非常に柔軟であり、実際の使用方法も常に変化しています。最も一般的なアプリケーションの 1 つは、PWM 出力を実現するために使用することです。
クロックソースを自由に選択できるため、このようなタイマーは通常イベントカウンターと組み合わせて使用​​されます。
2. IO ポート: どの MCU にも特定の数の IO ポートがあります。 IO ポートがないと、MCU は外部との通信チャネルを失います。 IO ポートの構成に応じて、次のタイプに分類できます。
純粋な入力ポートまたは純粋な出力ポート: このタイプの IO ポートは、MCU ハードウェア設計によって決まります。入力または出力のみが可能であり、ソフトウェアによってリアルタイムに設定することはできません。
IO ポートの直接読み取りおよび書き込み: たとえば、MCS-51 の IO ポートは、このタイプの IO ポートに属します。 IO ポート読み取り命令を実行する場合、それは入力ポートになります。 IO ポートへの書き込み命令を実行すると、そのポートは自動的に出力ポートになります。
入出力方向を設定するプログラム プログラミング: このタイプの IO ポートの入力または出力は、実際のニーズに応じてプログラムによって設定され、アプリケーションは比較的柔軟で、I2C などの一部のバス レベル アプリケーションを実現できます。バス、各種LCD、LEDドライバ制御バスなど
IO ポートを使用する場合、重要な点に留意する必要があります。入力ポートの場合、フローティング状態にならないようにクリアなレベルの信号が必要です (プルアップまたはプルアップを追加することで実現できます)。ダウン抵抗);出力ポートの場合、その出力の状態レベルは外部接続を考慮する必要があり、スタンバイまたは静的状態では電流ソースまたはシンクがないことを確認する必要があります。
3. 外部割り込み: 外部割り込みも、ほとんどの MCU の基本機能です。これは通常、信号のリアルタイムトリガ、データサンプリング、ステータス検出に使用されます。割り込みには、立ち上がりエッジ、立ち下がりエッジ トリガー、レベル トリガーなどのいくつかの種類があります。外部割り込みは通常、入力ポートを通じて実装されます。 IO ポートの場合、割り込み機能は入力に設定されている場合にのみ有効になります。出力ポートの場合、外部割り込み機能は自動的にオフになります (ATMEL の ATiny シリーズでは一部の例外があり、出力ポートでも割り込み機能をトリガーできます)。外部割り込みの適用は次のとおりです。
外部トリガー信号の検出: 1 つはシリコン制御整流器の制御、バースト信号の検出などのリアルタイム要件に基づくもので、もう 1 つは省電力の必要性です。
信号周波数の測定: 信号が見逃されないようにするには、外部割り込みが理想的な選択です。
データのデコード: リモート コントロール アプリケーションの分野では、設計コストを削減するために、マンチェスター エンコードや PWM エンコードのデコードなど、さまざまなエンコード データをデコードするソフトウェアを使用する必要があることがよくあります。
Key detection and system wake-up: For an MCU that enters the Sleep state, it generally needs to be woken up through an external interrupt. The most basic form is a key, and the level change is generated by the action of the key.
4. Communication interface: The communication interface provided by MCU generally includes SPI interface, UART, I2C interface, etc., which are described as follows:
SPI インターフェイス: このタイプのインターフェイスは、ほとんどの MCU が提供する最も基本的な通信方法です。データ送信は同期クロックによって制御されます。信号には、SDI (シリアル データ入力)、SDO (シリアル データ出力)、SCLK (シリアル クロック)、および Ready 信号が含まれます。場合によっては、Ready 信号がない場合があります。このタイプのインターフェイスはマスター モードでもスレーブ モードでも動作します。よく言われるのは、誰がクロック信号を提供しているのかを確認することです。クロックを提供する側がマスターであり、その反対側がスレーバーです。
UART (Universal Asynchronous Receive Transmit): 最も基本的な非同期送信インターフェイスです。信号線はRxとTxのみです。基本データ形式は、スタートビット + データビット(7ビット/8ビット) + パリティビット(偶数、奇数、なし) + ストップビット(1~2ビット)です。 1ビットのデータにかかる時間をBaud Rate(ボーレート)といいます。
ほとんどの MCU では、データ ビットの長さ、データ チェック方法 (奇数チェック、偶数チェック、チェックなし)、ストップ ビットの長さ (ストップ ビット)、およびボー レートをプログラミングによって柔軟に設定できます。確かに。このタイプのインターフェイスで最も一般的に使用される方法は、PC のシリアル ポートと通信することです。
I2C インターフェイス: I2C はフィリップスによって開発されたデータ伝送プロトコルで、SDAT (シリアル データ入出力) と SCLK (シリアル クロック) の 2 つの信号によっても実装されます。その最大の利点は、複数のデバイスをこのバスに接続でき、アドレスを通じて識別してアクセスできることです。 I2C バスの最大の利点の 1 つは、ソフトウェアを使用して IO ポート経由でバスを実現するのが非常に便利であることです。また、その送信データ レートは SCLK によって完全に制御されます。制御するには、UART インターフェイスとは異なり、高速または低速にすることができます。 、厳格な速度要件があります。
5. ウォッチドッグ (ウォッチドッグ タイマー): ウォッチドッグはほとんどの MCU の基本構成でもあり (一部の 4 ビット MCU にはこの機能がない場合があります)、ほとんどの MCU ウォッチドッグはプログラムによるリセットのみを許可し、リセットすることはできません。これは閉じられており (Microchip PIC シリーズ MCU など、プログラムの焼き付け時に設定されるものもあります)、一部の MCU (Samsung の KS57 シリーズなど) は、プログラムがウォッチドッグ レジスタにアクセスしている限り、特定の方法で開くかどうかを決定します。は自動的にオンになり、再度オフにすることはできません。一般にウォッチドッグのリセット時間はプログラムで設定できます。ウォッチドッグの最も基本的な用途は、予期しない障害による MCU のクラッシュに対する自己回復機能を提供することです。

マイクロコントローラープログラミング
MCU プログラムのプログラミングと PC プログラムのプログラミングには大きな違いがあります。 C ベースの MCU 開発ツールはますます人気が高まっていますが、効率的なプログラム コードやアセンブリの使用を好む設計者にとって、アセンブリ言語は依然として最も簡潔で効率的なプログラミング言語です。

MCUプログラミングの場合も、基本的な枠組みはほぼ同じと言えますが、大きく分けて初期化部分(これがMCUプログラミングとPCプログラミングの最大の違いです)、メインプログラムループ本体、割り込み処理プログラムの3つに分かれます。次のように説明されました。
1. 初期化: すべての MCU プログラムの設計にとって、初期化は最も基本的かつ重要なステップであり、一般に次のものが含まれます。
すべての割り込みをマスクし、スタック ポインターを初期化します。初期化部分では通常、割り込みが発生することは望ましくありません。
システムの RAM 領域をクリアして、メモリを表示します。完全に必要ではない場合もありますが、信頼性と一貫性の観点から、特に偶発的なエラーを防ぐために、適切なプログラミング習慣を身に付けることをお勧めします。
IO ポートの初期化: プロジェクトのアプリケーション要件に従って、関連する IO ポートの入出力モードを設定します。入力ポートの場合は、プルアップまたはプルダウン抵抗を設定する必要があります。出力ポートについては、不要なエラーを防ぐために、その初期レベルの出力を設定する必要があります。
割り込み設定: プロジェクトで使用する必要があるすべての割り込みソースについては、それらを有効にし、割り込みのトリガー条件を設定する必要があります。一方、使用しない冗長割り込みについては、それらをオフにする必要があります。
その他の機能モジュールの初期化: 使用する必要のある MCU のすべての周辺機能モジュールについて、UART 通信、ボーレート、データ長、検証方法、ストップなど、プロジェクトのアプリケーション要件に従って対応する設定を行う必要があります。ビットの長さなどを設定する必要があります。プログラマタイマーの場合は、クロックソース、分周、リロードデータなどを設定する必要があります。
パラメータの初期化: MCU ハードウェアとリソースの初期化が完了したら、次のステップはプログラムで使用されるいくつかの変数とデータを初期化することです。この部分の初期化は、特定のプロジェクトとプログラムの全体的な配置に従って設計する必要があります。 EEPROM を使用してプロジェクトの事前作成データを保存する一部のアプリケーションでは、プログラムのデータへのアクセス速度を向上させ、システムの消費電力を削減するために、初期化中に関連データを MCU の RAM にコピーすることをお勧めします (原則として)。 、外部 EEPROM へのアクセスにより、電源の消費電力が増加します)。
2. メインプログラムのループ本体: ほとんどの MCU は長時間連続して動作するため、メインプログラム本体は基本的にサイクリックに設計されています。複数の動作モードを持つアプリケーションの場合、複数のループ本体が状態フラグを通じて相互に変換される可能性があります。プログラム本体には、一般的に以下のモジュールが配置されます。
計算プログラム: 計算プログラムは一般に時間がかかるため、割り込み処理、特に乗算と除算には断固として反対されます。
リアルタイム要件が低い、またはリアルタイム要件がないプログラムを処理する。

ディスプレイ送信プログラム: 主に外部 LED および LCD ドライバーを使用するアプリケーション用。
3. 割り込み処理プログラム: 割り込みプログラムは主に、外部からの突然の信号の検出、キーの検出と処理、タイミングカウント、LED ディスプレイのスキャンなど、高いリアルタイム性が要求されるタスクやイベントを処理するために使用されます。
一般に、割り込みプログラムはコードを可能な限り簡潔かつ短くする必要があります。リアルタイムで処理する必要のない関数の場合、割り込みでトリガー フラグを設定すると、メイン プログラムが特定のトランザクションを実行します。これは非常に重要です。特に低電力、低速 MCU の場合、すべての割り込みに対するタイムリーな応答を保証する必要があります。
4. 異なるタスク本体の配置では、異なる MCU には異なる処理方法があります。
たとえば、低速、低消費電力の MCU (Fosc=32768Hz) アプリケーションの場合、そのようなプロジェクトがすべてハンドヘルド デバイスであり、通常の LCD ディスプレイを使用していることを考慮すると、ボタンやディスプレイへの応答には高いリアルタイム性が必要となるため、一般に時間指定割り込みが使用されます。ボタンアクションとデータ表示を処理するために使用されます。 Fosc>1MHz アプリケーションなどの高速 MCU の場合、この時点では MCU にはメイン プログラム ループ本体を実行するのに十分な時間があり、対応するタイミングでのみ中断できます。 にさまざまなトリガー フラグを設定し、すべてのタスクを実行します。実行するメインプログラム本体に。
5. MCU のプログラミング設計において、特に注意が必要な点がもう 1 つあります。

割り込みとプログラム本体で同じ変数やデータへの同時アクセスや設定を防止します。有効な防止方法としては、このようなデータの処理をモジュール化して、トリガーフラグを判断してデータの該当操作を実行するかどうかを決定することが考えられます。一方、他のプログラム本体 (主に割り込み) では、処理が必要なデータの処理場所は、トリガーされたフラグを設定するだけです。 - これにより、データの実行が予測可能かつ一意であることが保証されます。

マイコン開発スキル

1. プログラムのバグを減らす方法
プログラムのバグを軽減するには、まずシステム運用時に考慮すべき以下のオーバーレンジ管理パラメータを考慮する必要があります。
物理パラメータ: これらのパラメータは主にシステムの入力パラメータであり、励起パラメータ、取得および処理中の動作パラメータ、処理終了時の結果パラメータが含まれます。

リソースパラメータ: これらのパラメータは主に、メモリ容量、ストレージユニットの長さ、スタッキングの深さなど、システム内の回路、デバイス、および機能ユニットのリソースです。
アプリケーション パラメータ: これらのアプリケーション パラメータは、多くの場合、一部のシングルチップ マイクロコンピュータや機能ユニットのアプリケーション条件を表します。プロセスパラメータ: システムの動作中に規則的に変化するパラメータを指します。


2. C言語プログラミングコードの効率を向上させる方法
シングルチップマイコンの開発と応用においては、シングルチップマイコンのプログラム設計にC言語を使用することは避けられない傾向となっています。 C でプログラミングする際に最高の効率を達成したい場合は、使用している C コンパイラに精通することが最善です。まず、コンパイルされた各 C 言語に対応するアセンブリ言語のステートメント行数をテストして、効率を明確に知ることができます。今後プログラミングする場合は、コンパイル効率が最も高いステートメントを使用してください。各 C コンパイラには特定の違いがあるため、コンパイル効率も異なります。優れた組み込みシステム C コンパイラのコード長と実行時間は、アセンブリ言語で記述された同じ関数レベルよりもわずか 5 ~ 20% 長いだけです。

開発時間が限られた複雑なプロジェクトの場合は、C 言語を使用できますが、C 言語と MCU システムの C コンパイラに精通しており、C コンパイラ システムが処理するデータ型とアルゴリズムに特別な注意を払っていることが前提となります。サポートできる。 C 言語は最も一般的な高級言語ですが、MCU メーカーごとに C 言語のコンパイル システムが異なり、特に一部の特殊な機能モジュールの動作が異なります。そのため、これらの機能を理解していないとデバッグ時に問題が発生し、アセンブリ言語よりも実行効率が低くなってしまいます。

3. シングルチップマイコンの耐干渉問題を解決する方法 干渉を防ぐ最も効果的な方法は、干渉源を除去し、干渉経路を遮断することですが、それが困難な場合も多く、対処法に頼るしかありません。シングルチップマイコンの耐干渉性能が十分かどうか。ハードウェアシステムのアンチジャミング能力を向上させながら、ソフトウェアアンチジャミングは柔軟な設計が特徴です。
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. By using this site, you agree to our use of cookies. Privacy Policy