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
適用デバイス
本記事は、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を参照してください。
Boot mode | ISP0 (PIO0_5) | Description |
---|---|---|
Passive boot | HIGH | The 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 boot | LOW | One 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. |
ISP Boot mode | ISP_MODE | Description |
---|---|---|
Auto ISP | 000 | The 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 ISP | 001 | The USB HID class is used to download image of the USB0/1 port. (HS-USB is the default USB port). |
UART ISP | 010 | The UART is used to download the image. |
SPI Slave ISP | 011 | The SPI slave is used to download the image. |
I2C Slave ISP | 100 | The I2C slave is used to download the image. |
Disable ISP | 111 | Disable 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イメージタイプを検証します。
CRCイメージであれば、imageLengthフィールドの値がCRC ONを行うための長さとして使用されます。表192を参照してください。CRCは内蔵フラッシュのイメージに対して実行されます。CRCの計算は、イメージセクタの先頭からオフセット0x0で始まり、長さで指定されたバイト数まで続きます。この長さにはCRC値フィールドを構成するoffsetToSpecificHeaderフィールドが含まれていないため、計算されたCRCはCRC値フィールドをスキップすることになります。その結果を構造体のoffsetToSpecificHeaderエントリと比較し、一致するものがあればイメージは有効、そうでなければ無効と判断されます。CRCイメージでない場合は、CRCは実行されません。
署名付きイメージの場合は、imageLengthフィールドの値が認証を行う長さとして使用されます。認証は内蔵フラッシュのイメージに対して行われます。認証はイメージセクタの先頭からオフセット0x0で始まり、lengthで指定されたバイト数まで続きます。offsetToSpecificHeaderフィールドの値は、証明書を格納するオフセットを指します。