2021/05/28(金)LPC55xx : Flexcomm Interface serial communication

参照: NXP LPC55S1x PDS R1.5, 7.24.3節、
LPC55S2x PDS R2.0, 7.23.3節 *1
適用: NXP EdgeVerse LPC MCUs:
LPC55S16, LPC5516
LPC55S14, LPC5514
LPC5512
LPC55S28, LPC5528
LPC55S26, LPC5526

*1 : この記事は筆者が私的利用のために製品データシートを抜粋、翻訳したものです。いかなる問題に対しても責任は負いません。

適用デバイス

本記事は、LPC551x/S1xのデータシートを元に作成しています。また、本節の範囲においてはLPC552x/S2xのデータシートとは仕様の細部が異なるだけであることから、LPC551x/S1xのそれとの差分のみを提供します。
LPC55S2xのLPC55S1xとの違い

I2Sのチャネルペアの個数の違い

  • LPC55S1x/LPC551xデバイスは、Flexcomm Interface 0~5はそれぞれ1チャネルペアのI2Sを提供し、Flexcomm Interface 6~7はそれぞれ4チャネルペアのI2Sを提供します。
  • LPC55S2x/LPC552xデバイスは、Flexcomm Interface 0~7はそれぞれ1チャネルペアのI2Sを提供します。

Flexcomm Interface serial communication

各Flexcomm Interfaceには、ペリフェラル機能の選択肢がありますが、そのうちの一つをユーザーが選択しなければ、その機能を設定して使用することはできません。

Features

  • 非同期、同期マスタ、または同期スレーブ動作のUSART
  • 最大4つのスレーブセレクトが可能なSPIマスタ、またはSPIスレーブ
  • I2C(マスタ、スレーブ、モニタの各機能を含む)
  • Flexcomm Interface 0~5はそれぞれ1チャネルペアのI2Sを提供し、Flexcomm Interface 6~7はそれぞれ4チャネルペアのI2Sを提供します。
  • USART、SPI、I2Sのトラフィックデータは、Flexcomm FIFOを使用します。I2C機能はFIFOを使用しません。

SPI serial I/O (SPIO) controller

Features
  • SPIマスタモード(送受信)で50Mbit/s、SPIスレーブ受信モードで25Mbit/s、SPIスレーブ送信モードで50Mbit/sまでのビットレートに対応します。
  • マスタまたはスレーブ動作
  • 4~16ビットのデータフレームを直接サポート。より大きなフレームはソフトウェアでサポート。
  • SPI機能では、それぞれ8エントリの独立した送信および受信FIFOのサポートがあります。
  • DMA転送に対応 : SPInの送受信機能はシステムのDMAコントローラと連動しています。
  • 到着するデータを読み出すことなく、スレーブにデータを送信することができます。この機能はSPIメモリの設定時に役立ちます。
  • 最大4つのスレーブセレクト入出力は、極性を選択でき、使い方も自由自在です。

I2C-bus interface

(割愛)

USART

Features
  • Maximum bitrates of 6.25Mbit/s in asynchronous mode and 10Mbit/s in synchronous mode for USART functions.
  • 7, 8, or 9 data bits and 1 or 2 stop bits.
  • マスタまたはスレーブで動作する同期モード。連続クロックオプション付き。
  • ソフトウェアアドレス比較によるマルチプロセッサ/マルチドロップ(9ビット)モード
  • RS-485トランシーバの出力イネーブル制御
  • ボーレートを自動検出するAutobaudモード
  • Parity generation and checking: odd, even, or none.
  • ソフトウェアで選択可能なオーバーサンプリング : 5~16クロック(非同期モード)
  • 1つの送信データバッファと1つの受信データバッファ
  • 自動フロー制御のためのハードウェア信号にRTS/CTSを採用。ソフトウェアによるフロー制御は、Delta CTS検出、Transmit Disable制御、および任意のGPIOをRTS出力として使用して行うことができます。
  • Received data and status can optionally be read from a single register
  • ブレークの生成と検出
  • 受信データは3つのサンプルのうちの2つの「投票」です。1つのサンプルが異なる場合、ステータスフラグが設定されます。
  • Autobaud機能付きのボーレート生成器を内蔵
  • FRD(フラクショナル・レート・ディバイダ)は、すべてのUSARTで共有されます。
  • Receiver Ready、Transmitter Ready、Receiver Idle、受信ブレーク検出の変化、フレーミングエラー、パリティエラー、Overrun、Underrun、Delta CTS検出、受信サンプルノイズ検出のための割り込みが利用可能。
  • ループバックモードでは、データおよびフローコントロールのテストが可能です。
  • 同期式スレーブモードでは、ディープスリープおよびディープスリープ2モードからの復帰が可能です。
  • 特別な動作モードでは、32.768kHzのRTC発振器をUARTクロックとして使用し、最大9600ボーでの動作が可能です。このモードはデバイスがディープスリープ状態にあるときに使用でき、文字を受信したときにデバイスを復帰させることができます。
  • USARTの送受信機能は、システムのDMAコントローラと連動しています。
  • USART機能は、それぞれ16エントリの独立した送信および受信FIFOのサポートがあります。

I2S-bus interface

I2Sバスは、デジタルオーディオやデータ収集などのストリーミングデータ転送アプリケーション向けの標準的な通信インターフェースを提供します。I2Sバスの仕様は1つのデータ、1つのクロック、1つのワードセレクト/フレームトリガ信号を持つ3線式シリアルバスを定義しており、シングルまたはデュアル(モノラルまたはステレオ)のオーディオデータ転送を(他の構成に加えて)提供します。Flexcomm Interface 0~5にはそれぞれ1つのI2Sチャネルペアが、Flexcomm Interface 6~7にはそれぞれ4つのI2Sチャネルペアが実装されています。

1つのFlexcomm Interface内のI2Sインターフェースは、1つのマスタまたはスレーブとして構成可能なチャネルペアを提供します。残りのチャネルペアは、存在する場合、常にスレーブとして動作します。1つのFlexcomm Interface内の全てのチャネルペアは、1組のI2S信号を共有し、同じモード、同じフレーム構成を使用して、送信または受信のいずれかの動作のために一緒に構成されます。このようなチャネルペアはすべて、時分割多重化(TDM)に携わることができます。MCLKの入力や出力が必要な場合は、I2Sブロックの外でシステムレベルのクロックスキームで処理されます。
Features
  • Flexcomm Interfaceは、1つ以上のI2Sチャネルペアを実装し、最初のチャネルペアはマスタまたはスレーブ、残りのチャネルペアはスレーブとなります。すべてのチャネルペアは、送信または受信のいずれか、およびその他の共有属性について一緒に設定されます。
  • 1つのFlexcomm Interface内の全チャネルのデータサイズは、4ビットから32ビットまで設定可能です。各チャネルペアは独立して1つのチャネルとして動作するように設定することもできます(ステレオ動作ではなくモノラル動作)。
  • 1つのFlexcomm Interface内のすべてのチャネルペアは、シングルビットクロック(SCK)、ワードセレクト/フレームトリガ(WS)、データライン(SDA)を共有します。
  • 1つのFlexcomm Interface内のすべてのI2Sトラフィックのデータは、Flexcomm FIFOを使用します。FIFOの深さは8エントリです。
  • 左詰め、右詰めのデータモード
  • FIFOのレベルトリガを使用したDMAに対応
  • 複数のステレオやモノラルスロットを持つTDMをサポート。各チャネルペアは任意のデータスロットとして振る舞います。複数のチャネルペアが1本のTDMデータラインの異なるスロットとして参加できます。
  • 選択によってビットクロックとWSを反転させることができます。
  • 対応するサンプリング周波数は、デバイスの構成やアプリケーションの制約(システムクロックの周波数やPLLの有無など)によって異なりますが、一般的には標準的なオーディオデータレートに対応しています。

High-speed SPI serial I/O controller

Features
  • マスタまたはスレーブ動作
  • SPIマスタモード(送受信)で50Mbit/s、スレーブモード(送受信)で50Mbit/sまでのビットレートに対応します。
  • 4~16ビットのデータフレームを直接サポート。より大きなフレームはソフトウェアでサポート。
  • SPI機能では、それぞれ8エントリの独立した送信および受信FIFOのサポートがあります。
  • DMA転送に対応 : SPInの送受信機能はシステムのDMAコントローラと連動しています。
  • 到着するデータを読み出すことなく、スレーブにデータを送信することができます。この機能はSPIメモリの設定時に役立ちます。
  • 最大4つのスレーブセレクト入出力は、極性を選択でき、使い方も自由自在です。

2021/05/13(木)LPC55xx : Boot ROM

参照: NXP LPC55S1x RM R1.3, 6.2~6.3節 *1

Features

様々なブートオプションやAPIを可能にするブートローダを搭載した128kBのオンチップブートROM。
  • ISPピンやPFR領域のCMPA設定に基づいて(9章「LPC55S1x/LPC551x Flash API」参照)、内蔵フラッシュからの自動ブートをサポートします。
  • IAPの呼び出し。8章「LPC55S1x/LPC551x ISP and IAP」を参照してください。
  • 内蔵フラッシュをプログラミングするための FLASH API。5章「LPC55S1x/LPC551x Flash」を参照してください。
  • 1ビットSPIフラッシュデバイスからのSPIフラッシュリカバリブートをサポートします。詳細は6.4.3項を参照してください。

General description

内蔵ROMメモリはブートコードの格納に使用されます。リセット後、Armプロセッサはこのメモリからコードの実行を開始します。ブートローダのコードは、電源投入時、リセット時、低電力モードのディープパワーダウンからのWake時に毎回実行されます。

LPC55S1x/LPC551xはコードとデータの保存用に内蔵フラッシュを備えているため、イメージは内蔵フラッシュに保存する必要があります。その後、コードが検証され、ブートROMのベクタがオンチップフラッシュに移されます。

CMPAビットの値、ISPピン、およびイメージヘッダタイプの定義に応じて、ブートローダは内蔵フラッシュから起動するか、ISPモードで実行するかを決定します。6.5節「PFR region definitions」を参照してください。LPC55S1x/LPC551xは、ISPピンの状態を読み込んでブートソースを決定します。表189を参照してください。
表189 Boot mode and ISP download modes based on ISP pins
Boot modeISP0 (PIO0_5)Description
Passive bootHIGHThe LPC55S1x/LPC551x will look for valid image in the internal flash, if no valid image is found, the LPC55S1x/LPC551x will enter ISP boot mode based on DEFAULT_ISP_MODE bits.
ISP bootLOWOne of the serial interfaces (UART0, I2C1, SPI3, HS_SPI, USB0-FS, USB1-HS) is used to download image from host into internal flash. The first valid probe message on USART, I2C, SPI or USB locks in that interface.

表190 ISP download mode based on DEFAULT_ISP_MODE bits (6:4, word 0 in CMPA)
ISP Boot modeISP_MODEDescription
Auto ISP000The LPC55S1x/LPC551x probes the active peripheral from one of below serial interfaces, and download image from the probed peripherals: UART0, I2C1, SPI3, HS_SPI, USB0-FS or USB1-HS.
USB HID ISP001The USB HID class is used to download image of the USB0/1 port. (HS-USB is the default USB port).
UART ISP010The UART is used to download the image.
SPI Slave ISP011The SPI slave is used to download the image.
I2C Slave ISP100The I2C slave is used to download the image.
Disable ISP111Disable ISP mode.

表191にISPのピンアサインを示しますが、これはROMコードで使用されるデフォルトのピンアサインであり、変更することはできません。

(表191、表192、図8は割愛)

図8にトップレベルのブート処理を示します。リセットが解除された後にブートが開始されます。

CPUのクロックは96MHzのFROをベースに48MHzとなっています。Cortex-M33がブートローダを起動するとSWDアクセスが無効になるため、この間、デバッガはCPUに接続することができません。ブートROMはISPピンのリセット状態に基づいて、ブートモードを決定します。

ブートモードが決定され、イメージが内蔵フラッシュに存在すると、ブートローダはベクタテーブルとイメージヘッダの検証を行います。

ブートROMはイメージの有効性チェックのために以下のチェックを行います。
  • セキュアブートが有効な場合、ヘッダとCMPAの設定を使ってイメージを検証します。詳細は「Secure Boot」の章を参照してください。
  • セキュアブートが有効になっておらず、イメージヘッダでCRCチェックが有効になっている場合は、CRC32を使用してイメージを検証します。
  • 認証チェックもCRCチェックも有効になっていない場合は、SPとPCを検証します。
  • 基本的なイメージチェックに合格した場合、TZMイメージタイプを検証します。
イメージの先頭は、表192に記載されているフォーマットに従います。ブートローダは0x0000 0024にあるイメージタイプマーカを調べて、ユーザーイメージのスキャンを開始します。この値がサポートされているイメージタイプマーカと一致した場合、イメージヘッダの検証が始まります。イメージヘッダの検証が完了すると、TZMイメージタイプフィールドの検証が行われます。

CRCイメージであれば、imageLengthフィールドの値がCRC ONを行うための長さとして使用されます。表192を参照してください。CRCは内蔵フラッシュのイメージに対して実行されます。CRCの計算は、イメージセクタの先頭からオフセット0x0で始まり、長さで指定されたバイト数まで続きます。この長さにはCRC値フィールドを構成するoffsetToSpecificHeaderフィールドが含まれていないため、計算されたCRCはCRC値フィールドをスキップすることになります。その結果を構造体のoffsetToSpecificHeaderエントリと比較し、一致するものがあればイメージは有効、そうでなければ無効と判断されます。CRCイメージでない場合は、CRCは実行されません。

署名付きイメージの場合は、imageLengthフィールドの値が認証を行う長さとして使用されます。認証は内蔵フラッシュのイメージに対して行われます。認証はイメージセクタの先頭からオフセット0x0で始まり、lengthで指定されたバイト数まで続きます。offsetToSpecificHeaderフィールドの値は、証明書を格納するオフセットを指します。

*1 : この記事は筆者が私的利用のためにReference Manualを抜粋、翻訳したものです。いかなる問題に対しても責任は負いません。

2021/04/06(火)LPC55xx DMA : Trigger operational detail

参照: NXP LPC55S1x RM R1.3, 22.5.1.3項 *1

Trigger operational detail

DMAチャンネルで転送を開始するには、必ず何らかのトリガが必要です。トリガには、ハードウェアトリガとソフトウェアトリガがあり、いくつかの方法で使用できます。

SWTRIGビットが0に設定されているチャンネルは、ハードウェアまたはソフトウェアによってトリガをかけることができます。ソフトウェアトリガは,SETTRIGレジスタの該当ビットに1を書き込むことで実現します。ハードウェアトリガの場合は、関連するチャネルのCFGレジスタのHWTRIGEN、TRIGPOL、TRIGTYPE、TRIGBURSTフィールドの設定が必要です。チャネルの初期設定時に、XFERCFGレジスタのSWTRIGビットを設定すると、直ちに転送が開始されます。

関連するCFGレジスタのPERIPHREQENビットが設定されていれば、チャネル上の転送はDMAリクエストのペースに合わせて行われます。それ以外の場合は、全速力で転送が行われます。

CTLSTATレジスタのTRIGビットは、XFERCFGレジスタの値CLRTRIG(ビット0)によって決定される転送の終了時にクリアすることができます。CLRTRIGに1があると、ディスクリプタが使い果たされたときにトリガがクリアされます。

*1 : この記事は筆者が私的利用のためにReference Manualを抜粋、翻訳したものです。いかなる問題に対しても責任は負いません。

2021/04/04(日)NXP MCU公式トピック(LPC、Kinetis、etc.)

LPC5500 Series

  • Arm® Cortex®-M33 based Microcontroller Series for Mass Market, Leveraging 40nm Embedded Flash Technology 記事
  • MCU Tech Minutes 動画
    • Exploring the SCTimer Feature on LPC5500 Series MCUs.
    • (placeholder)

LPC551x Family

  • NXPのLPC55S16 MCU、PSAレベル2とSESIP Assuranceレベル2認定を取得 記事
  • 1ドル切るArm Cortex-M33集積MCU、オランダNXPが発表 記事

LPC552x Family

  • NXPのCortex-M33ベースMCU、第2弾はメインストリーム製品 記事

Kinetis KE1xZ Family

  • 耐水タッチ機能統合の5Vマイクロコントローラー 記事

Kinetis K32 L2/L3 Family

  • NXP、K32 L3シリーズ・マイクロコントローラを量産開始:消費電力を低減し、インダストリアルIoTセンサ・ノードに対応 記事

2021/03/28(日)LPC551x/S1x データシート : 概要と特長

参照: NXP LPC55S1x PDS R1.4, 1章~2章 *1

概要

LPC55S1x/LPC551xは、ARM Cortex-M33ベースの組み込みアプリケーション用マイクロコントローラです。これらのデバイスには、CASPER Cryptoエンジン、最大256KBのオンチップフラッシュ、最大96KBのオンチップSRAM、オンザフライでフラッシュを暗号化/復号化するPRINCEモジュール、コードウォッチドッグ、High-speed/Full-speedのUSBホストおよびデバイスインターフェース(Full-speedの場合はクリスタルレス動作)、CAN FD、5つの汎用タイマ、1つのSCTimer/PWM、1つのRTC/アラームタイマ、1つの24ビットマルチレートタイマ(MRT)、Windowed Watchdog Timer(WWDT)、9つのフレキシブルなシリアル通信ペリフェラル(USART、SPI、高速SPI、I2C、またはI2Sインターフェースとして構成可能)、プログラマブルロジックユニット(PLU)、同時変換が可能な1つの16ビット2.0Msps ADC、コンパレータ、温度センサを搭載しています。

ARM Cortex-M33は、TrustZone®テクノロジーにより、貴重なIPやデータを保護するアイソレーション機能を備えたセキュリティ基盤を提供します。また、デジタル信号処理(DSP)命令を内蔵しているため、デジタル信号制御システムの設計やソフトウェア開発を容易にします。また、LPC55S1x/LPC551xは、セキュリティ要件をサポートするために、セキュアブート、HASH、AES、RSA、UUID、ダイナミック暗号化・復号化、デバッグ認証、TBSAコンプライアンスをサポートしています。

特長とメリット

  • ARM Cortex-M33コア(r0p4)を搭載
  • CASPER Cryptoコプロセッサは、楕円曲線暗号(Elliptic Curve Cryptography、ECC)などの特定の非対称暗号アルゴリズムに必要な様々な機能のハードウェアアクセラレーションを可能にするために提供されます。
  • オンチップメモリ
    • 最大256KBのオンチップフラッシュプログラムメモリ、フラッシュアクセラレータ、512バイトのページ消去・書き込みが可能。
    • 最大96KBのSRAM(コードバス上の16KB SRAM、システムバス上の最大64KBのSRAM(連続した64KB)、およびシステムバス上の16KB USB SRAMで構成され、USBインターフェースや汎用的な用途に使用することができます。
  • PRINCEモジュールは、オンチップフラッシュに書き込まれるデータをリアルタイムに暗号化し、暗号化されたフラッシュデータを読み出し時に復号化することで、アプリケーションコードなどの資産の保護を可能にし、セキュアなフラッシュアップデートを可能にします。
  • オンチップROMブートローダを搭載
    • オンチップフラッシュからのイメージの起動
    • CRC32によるイメージ・インテグリティ・チェックに対応
    • インシステムプログラミング(ISP)コマンドによるフラッシュプログラミングに対応:以下のインターフェースを使用します。HIDクラスのデバイスを使用したUSB0/1インターフェース、自動ボーレートのUARTインターフェース(Flexcomm 0)、モード3(CPOL=1、CPHA=1)を使用したSPIスレーブインターフェース(Flexcomm 3または8)、I2Cスレーブインターフェース(Flexcomm 1)。
    • ROM API機能。フラッシュプログラミングAPI、電源制御API、NXP Secure BootファイルフォーマットVer.2.0(SB2ファイル)を用いたセキュアファームウェアアップデートAPI。
    • PRINCE暗号化フラッシュ領域からのイメージのブートをサポート
    • NXPデバッグ認証プロトコル バージョン1.0 (RSA-2048)および1.1 (RSA-4096)をサポート
    • デバッグ認証によるシールドパートのFault Analysisモードへの移行に対応
  • セキュアブートをサポート
    • RSASSA-PKCS1-v1_5シグネチャとSHA256ダイジェストを暗号化署名の検証に使用しています。
    • RSA-2048ビット公開鍵(2048 bit modulus, 32-bit exponent)に対応
    • RSA-4096ビットの公開鍵(4096 bit modulus, 32-bit exponent)に対応
    • イメージ公開鍵の検証にx509証明書フォーマットを採用
    • 最大4つの取消可能なRoot of Trust(RoT)または認証局キーをサポート。4つのRoT公開鍵のSHA-256ハッシュダイジェストを保護されたフラッシュ領域(PFR)に格納することで、Root of Trustを確立。
    • イメージキーリボケーションによるロールバック防止機能をサポートし、x509証明書のシリアルナンバーフィールドを利用した最大16個のイメージキー証明書のリボケーションをサポート。
  • シリアルインターフェース
    • Flexcomm Interfaceには、最大9つのシリアル周辺回路が含まれます(Flexcomm Interface 0~7およびFlexcomm Interface 8)。各Flexcomm Interface(高速SPI専用のFlexcomm 8を除く)は、USART、SPI、I2C、I2Sの各インターフェースをソフトウェアで選択できます。各Flexcomm Interfaceには、USART、SPI、I2SをサポートするFIFOが搭載されています。各Flexcomm Interfaceには、共有フラクショナルボーレートジェネレータやタイムアウト機能など、さまざまなクロックオプションが用意されています。Flexcomm 0~5はそれぞれ1チャネルペアのI2Sを、Flexcomm 6~7はそれぞれ4チャネルペアのI2Sを提供します。
    • I2Cバスインターフェースは、Fast-modeおよびFast-mode Plusに対応し、最大1Mbit/sのデータレートで、複数のアドレス認識とモニタモードを備えています。また、2組のトゥルーI2Cパッドは、スレーブとしてHigh-speedモード(3.4Mbit/s)に対応します。
    • USB 2.0フルスピードホスト/デバイスコントローラは、オンチップPHYと専用DMAコントローラを搭載し、テクニカルノート(TN00065)に記載されているソフトウェアライブラリの例を参考に、デバイスモードでのクリスタルレス動作をサポートしています。
    • オンチップHS PHYを備えたUSB 2.0ハイスピードホスト/デバイスコントローラ
  • デジタル周辺機能
    • (割愛)
  • セキュリティ機能
    • ARM TrustZone®に対応
    • AES-256暗号化/復号化エンジンは、PUFまたはソフトウェアから供給された鍵を直接使用可能です。
    • セキュアハッシュアルゴリズム(SHA2)モジュールは、専用のDMAコントローラを使用したセキュアブートをサポートします。
    • PUF(Physical Unclonable Function)は、シリコンフィンガープリント用の専用SRAMを使用。PUFは、64~4096ビットの鍵の生成、保存、再構築が可能。鍵抽出用のハードウェアも含まれています。
    • True Random Number Generator(TRNG)
    • 識別のための128ビットのデバイス固有のシリアル番号(UUID)
    • セキュアGPIO
    • コードフローの整合性を検出するコードウォッチドッグ
  • タイマ
    • (割愛)
  • アナログ周辺機能
    • 5つの差動チャネルペア(または10のシングルエンドチャネル)を持つ16ビットADCは、複数の内部および外部トリガ入力を備え、最大2.0MSamples/secのサンプルレートを実現します。ADCは、差動ペアに属する2つのADC入力チャネルの同時変換をサポートしています。
    • ADCに接続された温度センサを内蔵
    • 5つの入力端子と外部または内部基準電圧を備えたコンパレータ
  • クロック生成
    • (割愛)
  • 省電力モードとウェイクアップ
    • PMU(Power Management Unit)を内蔵し、消費電力を最小限に抑えます。
    • 省電力モード:スリープ、ディープスリープ(RAM保持)、パワーダウン(RAM保持とCPU保持)、ディープパワーダウン(RAM保持)。
    • ペリフェラルの割り込みによるウェイクアップオプションを設定可能。
    • ウォッチドッグオシレータから動作するマイクロティックタイマと、32.768kHzのクロックから動作するリアルタイムクロック(RTC)を、スリープおよびディープスリープモードからの復帰に使用することができます。
    • パワーオンリセット(POR)(約0.8V)
    • VBAT_DCDCのブラウン・アウト検出器(BOD)は、強制リセットのための個別のしきい値を備えています。
  • 内蔵のDC-DCコンバータで動作
  • 1.8V~3.6Vの単一電源に対応
  • JTAGバウンダリスキャンをサポート
  • 動作温度範囲 -40 °C ~ +105 °C
  • HLQFP100、VFBGA98、HTQFP64の各パッケージで提供

*1 : この記事は筆者が私的利用のために製品データシートを抜粋、翻訳したものです。いかなる問題に対しても責任は負いません。

2021/03/28(日)LPC55xx DMA Register : Set valid register

参照: NXP LPC55S1x RM R1.3, 22.6.13項 *1

Set valid register

SETVALID0(set valid 0)レジスタでは、1つまたは複数のDMAチャネルのCTRLSTATレジスタのVALIDビットをセットすることができます。VALIDビットの説明については、22.6.17項「Channel transfer configuration registers」を参照してください。このレジスタは書き込み専用です。

CFGVALIDビットおよびSV(set valid)ビットは、ソフトウェアによるより直接的なDMAブロックタイミング制御を可能にします。一連のディスクリプタの中の各チャネルディスクリプタは、CFGVALIDビットの設定またはチャネルのSETVALIDフラグの設定によって有効にすることができます。

通常、CFGVALIDビットはセットされています。これにより、DMAはチャネルディスクリプタがアクティブであり、実行可能であることを伝えます。DMAは、CFGVALIDビットがセットされたディスクリプタブロックを、ソフトウェアの介入なしに順次実行していきます。

CFGVALIDビットを0に設定したままにしておくと、ソフトウェアが継続をトリガするまで、DMAシーケンスをディスクリプタで一時停止させることができます。DMA送信中に、CFGVALIDが0に設定されたチャネルディスクリプタが見つかった場合、DMAは(以前にバッファリングされた)SETVALID0のそのチャネルに対するフラグをチェックします。見つかった場合、DMAはディスクリプタを有効に設定し、SVビットをクリアし、ディスクリプタの処理を再開します。それ以外の場合、DMAはチャネルのSETVALID0ビットがセットされるまで一時停止します。

*1 : この記事は筆者が私的利用のためにReference Manualを抜粋、翻訳したものです。いかなる問題に対しても責任は負いません。