AN-2601: TMC9660 の設定およびブートストラッピング

UblTools ソフトウェアを使用したTMC9660 IC のブートストラッピング

このアプリケーション・ノートでは、UblTools ソフトウェア・パッケージを使ってTMC9660 IC のブートストラップを行う方法について、初回の通信からブート設定オプションの評価、そして製品で使用する際のデバイスのプログラミング方法まで、詳しく説明します。 

TMC9660 IC は、設定可能なブートローダを使用することで様々な設定に対応でき、幅広いアプリケーションに適しています。UblToolsパッケージを使用することで、この設定作業を簡単な設定ファイルとして簡略化でき、これを評価中に一時的にIC に適用することも、製品用に内蔵のワンタイム・プログラマブル(OTP)メモリに恒久的に書き込むこともできます。TMC9660 で追加機能を利用するために必要な外付けメモリも、ブートローダとUblTools を使用してブートストラップを行うことができます。

UblTools の特徴

  • TMC9660 のブートローダへのハイレベルなアクセスが可能
  • 簡単なステップバイステップによる操作
  • TMC9660 評価用ボード向けサンプルを提供
  • カスタムの通信スタックへの組込みに対応

チップとの直接通信

TMC-EvalSystem をサポート

 

アナログ・デバイセズでは、文化的に適切な用語および言語を提供するよう、技術資料の更新を行っております。これは広い範囲にわたるプロセスですが、できるだけ早期に段階的に導入して行く予定です。完了までしばらくお待ちいただけますようお願いします。 

クイック・スタート・ガイド:開始にあたって

このアプリケーション・ノートでは、UblTools を使用してTMC9660 IC のブートストラップを行うためのクイック・リファレンスを示します。まだブートストラップされていないTMC9660 IC の電源をオンにした後やリセットから回復した後、およびTMC9660 との接続が確立された後に必要な手順を詳しく説明します。 

また、ユニバーサル非同期レシーバ-トランスミッタ(UART)による直接シリアル接続を使用したTMC9660 との接続方法、およびTMC9660 の評価用キット(EV kit)との接続方法についても詳しく説明します。なお、TMC9660 EV kit は直接シリアル接続には対応していないため、その代わりにLandungsbruecke 接続ボードを介して間接的に接続します。 

このクイック・スタートのセクションには、利用可能なすべてのコマンド・オプションについての詳細なリファレンスが記載されているわけではなく、評価を行うためのTMC9660 のブートストラッピングについて、推奨のシーケンスが示されています。UblTools の詳細については、UblTools のコマンド・リファレンスのセクションを参照してください。


UblTools のセットアップ


UblTools をセットアップするため、まずアナログ・デバイセズのウェブサイト(https://www.analog.com/jp/products/TMC9660.html)からUblTools のインストーラをダウンロードして実行してください。インストーラはユーザが指定したインストール・ディレクトリにフォルダを作成し、以下のファイルを生成します。 

  • ublcli.exe—TMC9660 のブートローダと通信するために使用するプログラムです。インストールする必要はありません。コマンド・ライン/CLI を使用して直接、簡単に実行できます(以降のセクションで説明します)。
  • ubl_evalsystem_wrapper.py—評価用ボードTMC9660-STEPPER-EVAL およびTMC9660-3PH-EVAL に搭載されたTMC9660 とublcli.exeを接続するためのPython ラッパー・スクリプトです。このスクリプトを実行するには、Python をインストールする必要があります。
  • ioconfig_tmc9660-stepper-eval.toml—TMC9660-STEPPER-EVAL のデフォルトのブート設定ファイルです。
  • ioconfig_tmc9660-3ph-eval.toml—TMC9660-3PH-EVAL のデフォルトのブート設定ファイルです。
  • partition_tmc9660-eval.toml—TMC9660-STEPPER-EVAL およびTMC9660-3PH-EVAL で利用可能な外付けSPI フラッシュ用のデフォルトのパーティション・ファイルです。

UblTools は現在、Windows にのみ対応しています。Linux への対応も予定されていますが、まだ利用できません。


ublcli.exe の使用方法


注:以下はすべて、Windows のPowerShell でublcli.exe を使用するための説明です。コマンドを実行可能なシェルであればどれでも、同様にublcli.exe を実行させることができます。また、このセクションの説明は、PowerShell の使用についてほとんど予備知識がないことを前提としています。PowerShell、または他のシェルに関する知識を既に持っている場合には、以下の手順は他の方法で実行しても構いません。

PowerShell ウィンドウを開くため、まずWindows キーとR キーを同時に押します。[ファイル名を指定して実行]ウィンドウが表示されます。ここに"powershell"(クオーテーション・マークは不要)と入力し、Enter を押します。[ファイル名を指定して実行]ウィンドウが閉じ、PowerShell ウィンドウが開きます。 

次に、ublcli.exe ファイルをダウンロードした場所に移動します。例えば、"C:\Downloads"フォルダにファイルがある場合、以下のPowerShell コマンドを入力します。

cd C:\Downloads

これで、ublcli.exe プログラムをPowerShell で簡単に実行できます。 

.\ublcli.exe

このコマンドは、コマンドの簡単な使用ガイドを出力します。 

更に詳細な使用ガイドを出力するには、以下を実行します。 

.\ublcli.exe --help

ublcli.exe のバージョンを出力するには、以下を実行します。 

.\ublcli.exe --version

注:アプリケーション・ノートでこれ以降に示すコマンド説明では、読みやすくするため先頭の".\"は省略します。


TMC9660 との接続


TMC9660 との通信に使用するコマンドはすべて、接続設定が必要です。 

シリアル・ポートを通じて未設定のTMC9660 チップと接続するために有効な、2 つの接続設定例を以下に示します。2 つの例で使用している"inspect chip"は、チップの基本情報を問い合わせて表示するコマンドです。接続設定の詳細については、TMC9660 のブート設定ファイルのセクションを参照してください。 

UART ベースの接続の場合、接続ポートを指定するだけです。例としてCOM123 シリアル・ポートを通じて接続したTMC9660 に対して"inspect chip"コマンドを実行するには、以下のように入力します。 

ublcli.exe --port COM123 inspect chip

RS485 ベースの接続の場合、RS485 のTX_EN ピンおよび遅延も指定する必要があります。例えば、TX_EN ピンとしてGPIO 2 を使用してCOM123 からTMC9660 に接続し、前後に20 刻みの遅延を入れる場合、以下のように入力します。 

ublcli.exe --port COM123 --tx-en-pin 2 --tx-en-delays 20 inspect chip

TMC9660 評価用キットとの接続

TMC9660 には、TMC-EvalSystem の評価用ボードとしてTMC9660-3PH-EVAL とTMC9660-STEPPER-EVAL の2 製品が用意されています。これらの評価用ボードは、USB-UART シリアル・アダプタを通じて直接、またはEV kits のLandungsbruecke ボードを通じて接続できます。Landungsbruecke を通じた接続では、TMC9660 IC との直接通信が可能なシリアル・ポートは利用できません。その代わり、Landungsbruecke に複数のコマンドを送信することで、TMC9660 のブートローダとの通信を行います。 

これらの評価用ボードと接続するため、UblTools にはPython ヘルパー・スクリプトのubl_evalsystem_wrapper.py が含まれています。このスクリプトを使用するには、Python をインストールする必要があります。 

EvalSystem のTMC9660 と接続するには、以下を実行します。 

python ubl_evalsystem_wrapper.py COM123 inspect chip

以下に示すように、このスクリプトによりラッパー・スクリプトは内部でublcli.exe を呼び出します。 

ublcli.exe --use-pipes --ignore-crc inspect chip (このコマンドは手動では実行しないでください!)

このスクリプトにより、以下が順に実行されます。 

  • スクリプトは、ublcli.exe からコマンド・リクエストを受け取ります。
  • スクリプトは、TMCL ベースのリクエストをLandungsbruecke に送ります。
  • Landungsbruecke は、接続されたTMC9660 IC にブートローダ・コマンド・リクエストを送ります。
  • スクリプトは、Landungsbruecke からTMC9660 の返答を受け取ります。
  • スクリプトは、この返答をublcli.exe に送ります。

環境変数を使用したublcli.exe の設定方法

標準的な設定でUblTools を使用する場合、ublcli.exe を実行するたびに接続設定を変更することはありません。また、簡略化のため、すべての接続設定は環境変数を使用して変更できるようになっています。例えば、引数"--port"を使用して毎回ポートを指定する代わりに、環境変数UBL_PORT を使用することで、1 回で指定できます。 

環境変数は、PowerShell で以下のコマンドを使用することで設定できます。 

$Env:UBL_PORT = “COM123”

これは"UBL_PORT"変数の値を"COM123"に設定するコマンドで、これによりublcli.exe はCOM123 を使用してTMC9660 と接続します。 

注:これ以降のコマンド例はすべて、環境変数を使用して接続が設定されていることを前提とします。そのため、以降の例では接続設定は記載されません。

注:この環境変数の設定方法は、PowerShell のプロンプトが実行されている間のみ適用されます。閉じると、値はもう設定されていない状態になります。


設定ファイルの生成


UblTools を使用してTMC9660 チップを設定するには、設定ファイルが必要です。設定ファイル形式の詳細については、TMC9660 のブート設定ファイルのセクションを参照してください。 

ブランクの設定ファイルを生成するには、以下を実行します。 

ublcli.exe setup config

その代わりに、接続されたTMC9660 で実行中の設定を読み出すには、以下を実行します。 

ublcli.exe inspect config

どちらのコマンドも、toml の設定ファイルを出力します。 

生成された設定ファイルは、所望の設定に編集できます。例えば、VEXT1 LDO で5V 出力を生成するように設定するには、以下の行を追加してファイルを編集します。

[ldo]
vext1_voltage = 5.0 # 0.0, 2.5, 3.3, 5.0
図1. VEXT1 LDO 用の設定スニペット 

設定を更新した後は、以下のコマンドでTMC9660 IC に適用します。 

ublcli.exe write config my_configuration.toml

これにより、TMC9660 のブートローダは更新された設定を適用します。 

外付けメモリの設定

TMC9660 は外付けメモリの使用に対応しており、モータ制御の起動時に外付けストレージからモータ・パラメータをロードしたり、外付けメモリからTMCL スクリプトを実行したりするなどの追加機能を利用できます。これらの機能が必要ない場合は、このセクションは不要ですので飛ばして読み進んでください。 

外付けメモリ(SPI フラッシュ、またはI2C で電気的に消去可能なプログラマブル読出し専用メモリ[EEPROM])をTMC9660 で使用するには、いくつかの手順を踏む必要があります。 

以下の例では、GPIO12 をチップ・セレクトとして設定したSPI0 に、外付けのSPI フラッシュ・メモリ(W25X40CLSNIG)を接続する方法を示しています。TMC9660-STEPPER-EVAL とTMC9660-3PH-EVAL のどちらも、以下の書込みでこのメモリを使用します。 

最初に、TMC9660 と外付けメモリの接続を設定する必要があります。以下の行を追加してブート設定ファイルを編集し、TMC9660 に書き込んでください。

  [spi_flash]
enabled           = true
frequency         = 10000000     #  Hz : 40 MHz / (N+1), N: 3-15
pin_cs            = 12           #  0 – 18
spi_block         = "SPI0"       #  "SPI0", "SPI1"
pin_spi0_sck      = 11           #  6, 11 (Required when spi_block = "SPI0")

図2. SPI フラッシュ用の設定スニペット

オプションの手順として、最初にSPI フラッシュを完全に消去することができます。これは次のコマンドで実行します。 

ublcli.exe write SPI erase

他のUblTools コマンドは、SPI に書き込む際に、メモリ・セクションを自動的に消去してから書込みを行います。そのため、メモリに既に書き込まれている内容を消去する必要がない場合、この手順は必須ではありません。 

次に、SPI フラッシュのパーティションを行う必要があります。外付けメモリのパーティションを行うには、UblTools は別のtoml 設定ファイル(パーティション・ファイル)を使用します。このパーティション・ファイルを使用した以下の例では、2 つのパーティションを設定します。1 つはモータ制御システムの起動時に適用されるモータ・パラメータの保存用で、もう1 つがモータ・スクリプトの保存用です。パーティション・ファイル形式の詳細については、UblTools のパーティション・ファイル形式のセクションを参照してください。

partition_config_version = "v1.0"
 
  [part_table]
version        = "v1.1"
size           = 0x00080000   # Memory size: 4Mibit = 512KiB
sector_size    = 0x1000       # Sector size: 4KiB

  [[part_table.partition]]
name      = "settings"
type      = "TMCL_CONFIG"
offset    = 0x1000
size      = 0x1000
writable  = true

  [[part_table.partition]]
name      = "script"
type      = "TMCL_SCRIPT"
offset    = 0x2000
size      = 0x2000
writable  = true
図3. 外付けメモリのパーティション・ファイル

設定を書き込むには、以下のコマンドを実行します。 

ublcli.exe write SPI partition my_partition.toml

パーティションが正しく書き込まれたことを確認するには、以下のコマンドを使用して書き込まれた設定をリード・バックします。 

ublcli.exe inspect SPI

注:I2C EEPROM も同様の手順です。該当する設定セクションは"[i2c_eeprom]"で、コマンドは"SPI"の代わりに"I2C"を使用します。また、I2C EEPROMの消去コマンドは、完了までに数分かかることに注意してください。


モータ制御システムの起動


モータ制御システムを起動するには、以下のコマンドを実行します。 

ublcli.exe start

注:リセット後または電源サイクル後には、"write config"コマンドによる動作時の設定は失われるため、モータ制御システムを起動する前に再度、適用する必要があります。これに対し、外付けメモリの内容は保持されます。


設定の恒久的な書込み


TMC9660 の設定を完了させた後、内蔵のOTP メモリに書き込むことで電源オン時に自動で設定を適用できるようになります。 

注意:この手順は恒久的です。この手順は、セットアップを完全に終了し、設定をテストした後にのみ、実施してください。TMC9660 には、全部で4 つの設定スロットがあります。設定スロットは、後続のスロットに書き込むことでのみ無効化されます。最後のスロットが書き込まれると、新しい設定を書き込むことはできなくなります。TMC9660 が適切に起動できないような誤った設定を書き込んでしまった場合(通信インターフェースの誤設定など)、あらためて正しい設定を書き込むことはできません!

設定を恒久的に書き込むには、設定書込みコマンドに"--burn"フラグを追加して実行します。最初に"--dry-run"を追加してこのコマンドを実行し、コマンドの記述に誤りがないことを確認することを推奨します。 

ublcli.exe write config my_configuration.toml --burn --dry-run

次に、推奨した"--dry-run"を削除して、実際にOTP への書込みを実行します。 

ublcli.exe write config my_configuration.toml --burn

このコマンドは、書込みを実行する前に確認を要求します。確認をスキップするには、"--yes"フラグを追加します。この手順は製品を設定する場合にのみ使用することを強く推奨します。マニュアル評価では使用しないでください。 

書込みが終わると、それ以降の電源オン時にはいつでもその設定が適用されます。 

電源オン時に適用されるOTP の設定は、以下のコマンドで調べることができます。 

ublcli.exe inspect config OTP

設定の詳細:モータ制御システムの起動

設定ファイルには、モータ制御システムを起動させるかどうかを指定するオプションがあります("[bootstrap]"セクションの"load_rom_code")。UblTools には、設定ファイルを使用する2 つの主要なワークフロー、すなわち実行時の書込みとOTP への恒久的な書込みに対して、このオプション値に対応した特別な動作があります。この特別な動作を制御するため、専用のフラグ("--boot""--noboot")を利用します。

表1. 2 つの書込みコマンドに対するブート・フラグの影響
COMMAND BOOT FLAG
  No flag set --boot  --no-boot
write config If “load_rom_code = true” is set, exit with an error instead of writing. If “load_rom_code = true” is set, launch the motor control after writing the configuration. If “load_rom_code = true” is set, ignore it. 
write config --burn If “load_rom_code = false” is set, exit with an error instead of burning.  Burn the configuration even if “load_rom_code = false” is set.

この動作は、設定の書込み時に誤ってブートされるのを防ぐことを目的としており、ユーザはブートするかしないかを明確に選択する必要があります。 

恒久的な設定の書込みの場合、この動作によって、モータ制御システムを起動できない設定が誤って書き込まれることを防止できます。必要な場合は、そのような設定を使用することもできます。例えば、設計上、予めTMC9660 IC をブートローダ・モードに保持したままの設定にする必要がある場合などです。 

UBLTOOLS のコマンド・リファレンス

このセクションでは、すべてのコマンドの詳細なリファレンスを示します。 


一般的な設定


デフォルトでは、ublcli.exe は実行中のコマンドの基本的な情報しか出力しません。詳細な情報を見るには、コマンドに"-v"フラグを追加します。 

ublcli.exe -v inspect chip

情報量を増加するために、"v"は3 つまで追加できます。最も詳細な情報を得る場合、TMC9660 に送ったすべてのデータグラムとそれに対する返答が出力されます。

ublcli.exe -vvv inspect chip

注:"-v"フラグは実行するコマンドの前に置いてください。

"--help"フラグを追加すると、ublcli.exe の使用方法の情報を確認できます。

ublcli.exe --help

このフラグは、サブコマンドの終わりにも追加できます。これにより、サブコマンドの使用方法情報も確認できます。例えば、"inspect"コマンドのサブコマンドを確認するには、以下を実行します。 

ublcli.exe inspect --help


接続設定 


TMC9660 チップとの接続に使用するコマンドはすべて、接続設定が必要です。 

ublcli.exe とTMC9660 を接続するには、シリアル・ポートを使用するか、外部のラッパー・プログラムを介してカスタムの接続ロジックを使用するかの2 つの方法があります。 

シリアル接続

シリアル・ポートを通じて接続するには、以下の設定を使用します。ここに示すすべての設定は、コマンド・ラインの引数を使用するか、環境変数を設定することによって行うことができます。どちらも行った場合は、コマンド・ラインの引数が使用されます。

表2. CLI の引数
CLI の引数 環境変数 説明
--port UBL_PORT ublcli.exe が接続するシリアル・ポート。これは必要な引数です。
--timeout UBL_TIMEOUT ublcli.exe が返答を待つ時間(単位:秒)。デフォルト:5.0
--baud-rate UBL_BAUDRATE TMC9660 とのシリアル通信のボー・レート。デフォルト:115200
--chip-addr UBL_CHIP_ADDR TMC9660 のUART 通信プロトコルで使用するチップ・アドレス。デフォルト:1
--host-addr UBL_HOST_ADDR TMC9660 のUART 通信プロトコルの返答に想定されるホスト・アドレス。設定しない場合、UblTools は、最初に受信した返答で使用されているホスト・アドレスを検出し、それ以降の返答の想定アドレスとして使用します。
--tx-en-pin UBL_TX_EN_PIN TX_EN として使用するTMC9660 のGPIO。このオプションを設定した場合、UblTools はBOOTSTRAP_RS485 コマンドを送り、RS485 通信のセットアップを行います。
--tx-en-delays UBL_TX_EN_DELAYS BOOTSTRAP_RS485 コマンドの一部として設定する前後の遅延。デフォルト:16

すべての接続設定は、実行するコマンドの前に置いてください。 

有効:"ublcli.exe --port COM123 inspect chip" 
無効:"ublcli.exe inspect chip --port COM123" 

カスタム接続

シリアル・ポートによるTMC9660 との直接接続ができない場合は、代わりに接続を処理する別のプログラムとublcli.exe を接続することができます。この手法により、あらゆる形式のカスタム接続ロジックに対応できます。これには、異なるプロトコルを通じてUblTools の通信をトンネルする、UART の代わりにSPI を通じてTMC9660 と接続する、等が含まれます(これらに限定されるものではありません)。例えば、この手法は、Trinamic Modular Evaluation System の評価用ボードやTMCL-IDE で使用します。 

カスタム接続を生成するには、引数"--use-pipes"をublcli.exe に追加します。これにより、ublcli.exe は標準のエラー出力を通じてリクエスト・データグラムを送信し、標準入力を通じて返答を待ちます。送信データはUART リクエスト・バイトで、リード・バックされるデータは有効なUART の返答であることが想定されています。 

引数"--use-pipes"を追加した場合、シリアル接続の引数は無視され、ublcli.exe によるシリアル・ポートへの接続はすべてなくなります。 

アプリケーション例は、UblTools のubl_evalsystem_wrapper.py スクリプトを参照してください。 


コマンド:setup config


このコマンドは、ブート設定用のサンプルtoml ファイルとデフォルト値、および設定可能な値とオプション・パラメータのリストを出力します。これは、設計において、TMC9660 の設定ファイルを生成するための初期値として使用できます。 

代わりに実行中の設定や保存されている設定を読み出す場合には、コマンド:inspect config も参照してください。 

このコマンドにはオプションの引数はありません。 


コマンド:inspect


このコマンドを使用して、接続されているTMC9660 について調べることができます。 

引数がない場合、inspect コマンドは、デフォルトでサブコマンドのinspect chip を実行します。 

以下に、接続されているTMC9660 の様々な項目について調べるためのサブコマンドを示します。 

コマンド:inspect chip

このコマンドは、接続されているチップの基本的な情報を出力します。また、接続チップ(TMC9660)と共に、デフォルトでブートローダ・バージョンも出力します。このコマンドは、オプションの"--extended"フラグに対応しています。このフラグにより、より詳細な情報を出力できます。 

このアプリケーション・ノートでは、接続性をチェックするためのコマンドとして使用しています。それは、このコマンドがチップと接続するための最もシンプルなコマンドの1 つであるため、そして副次的な影響がないためです。 

コマンド:inspect config

このコマンドは、接続されているTMC9660 から設定を読み出すために使用します。 

設定は常にtoml 形式で出力されるため、"write config"コマンドを使用して書き戻すことができます。 

デフォルトで、または"active"サブコマンドを追加することで、動作中のTMC9660 に適用されている設定の現在値を出力します。 

"OTP"サブコマンドを追加した場合、OTP に保存されている設定を出力します。このサブコマンドはデフォルトで、OTP のすべての設定ページをチェックして、次の電源オン時に適用されるページを出力します。また、オプションの引数"--page"を使用すると、特定のOTPページの内容を出力できます。

コマンド:inspect SPI

このコマンドは、接続されているSPI フラッシュ・メモリについての情報を読み出すために使用します。接続されたメモリでパーティションが行われている場合、パーティション情報を出力します。そうでない場合、SPI フラッシュが接続されているかどうか、すなわちTMC9660 がSPI フラッシュを検出できたかどうかを出力します。 

既知の問題:ublcli.exe v1.0.0 では、このコマンドでパーティション・テーブルのチェック・サムを検証することはできません。チェック・サムが一致しない場合でも、無効なテーブルの内容を有効であるかのようにレポートします。この問題はv1.0.1 で修正されました。v1.0.1 では、無効なチェック・サムをレポートします。

コマンド:inspect I2C

このコマンドは、接続されているI2C EEPROM メモリについての情報を読み出すために使用します。接続されたメモリでパーティションが行われている場合、パーティション情報を出力します。そうでない場合、I2C EEPROMが接続されているかどうか、すなわちTMC9660がI2C EEPROMを検出できたかどうかを出力します。 

既知の問題:ublcli.exe v1.0.0 では、このコマンドでパーティション・テーブルのチェック・サムを検証することはできません。チェック・サムが一致しない場合でも、無効なテーブルの内容を有効であるかのようにレポートします。この問題はv1.0.1 で修正されました。v1.0.1 では、無効なチェック・サムをレポートします。


コマンド:write


このコマンドを使用して、TMC9660 への様々な書込み動作を実行します。

コマンド:write config

このコマンドを使用して、TMC9660 に設定ファイルを適用します。ブートローダは、IC の動作中にこの設定を適用します。これにより、限定されたOTP メモリを使い切ることなく、様々なオプションを評価できます。 

このコマンドは、TMC9660 のブート設定ファイルに記載された設定ファイルを、TMC9660 への設定書込みアクセス・シーケンスに変換します。 

注:このコマンドの最後にのみ実行される可能性のある、2 つの動作があります。1 つは、通信インターフェースの更新で、これによりUblTools の接続が切断される可能性があります。もう1 つは、モータ制御システムの起動で、これによりブートローダの動作が停止します。このコマンドを使用する際には、この2 つの動作のうち、多くても1 つだけが起こるようにしてください。そうでない場合、通信が切断されないようにするか、"write config"を2 回実行することにより2 段階でTMC9660 を設定するようにしてください。 

コマンド:write config --burn

引数"--burn"を追加すると、設定をOTP メモリに書き込みます。この作業は恒久的です! 

TMC9660 には、内部に全部で4 つの恒久書込みスロットがあり、後続のスロットはその前のスロットを上書きします。 

最初に、オプションの引数"--dry-run"を追加してこのコマンドを実行し、コマンドのすべての引数が正しいことを確認することを推奨します。確認した後にのみ、このフラグを削除して実際の書込み作業を実施してください。 

デフォルトで、このコマンドは書込み動作のマニュアル確認を要求します。確認の要求は、引数"--yes"を使用することで飛ばして進めることができます。この引数は、製品環境においてのみ使用することを強く推奨します。マニュアル評価の間は使用しないでください! 

コマンド:write SPI

このコマンドは、外付けのSPI フラッシュに書き込むために使用します。 

コマンド:write SPI erase

このコマンドは、接続されているSPI フラッシュの内容をすべて消去します。

コマンド:write SPI partition

このコマンドは、外付けのSPI フラッシュにパーティション・テーブルを書き込みます。コマンドは、パーティション・テーブルを書き込むために必要な領域を自動的に消去します。ただし、パーティション内の古いデータは消去しません。適切に動作させるため、SPI フラッシュは最初に消去することを推奨します。 

コマンド:write I2C

このコマンドは、外付けのI2C EEPROMに書き込むために使用します。 

コマンド:write I2C erase

このコマンドは、接続されたI2C EEPROMの内容をすべて消去します。 

注:低速の接続設定および大容量のEEPROMでは、このコマンドの実行に最大数分間の長い時間がかかります。これは、消去が、メモリ内容をクリアするためにすべてのメモリ位置に書込みを行う作業だからです。

コマンド:write I2C partition

このコマンドは、外付けのI2C EEPROMにパーティション・テーブルを書き込みます。コマンドは、パーティション・テーブルを書き込むために必要な領域を自動的に消去します。ただし、パーティション内の古いデータは消去しません。適切に動作させるため、I2CEEPROMは最初に消去することを推奨します。


コマンド:start


このコマンドを使用して、TMC9660 のモータ制御システムを起動します。 

デフォルトで、このコマンドは動作中の設定で選択されているモード(パラメータ・モードまたはレジスタ・モード)でモータ制御システムを起動します。オプションの引数"--mode"を使用することで、この選択を上書きできます。"--mode param"でパラメータ・モードに、"--mode reg"でレジスタ・モードに上書きします。 

注:モード選択は、TMC9660 のブートストラップ設定、BOOT_MODE を使用します。この設定はデフォルトで、ハードウェア内で予約済みの値になっています。このコマンドは、ハードウェアから予約済みの値を読み出すと、"--mode"によって上書きされない限り、起動前にBOOT_MODE の選択値を予約済みの値からパラメータ・モードに変更します。

TMC9660 のブート設定ファイル

UblTools を使用したブートストラッピングでは、設定ファイルを使用します。設定ファイルはtoml ファイルで、TMC9660 に適用する設定が含まれています。 

設定ファイルに記載されていない設定は、設定を適用しても更新されないままです。ただし、セットアップの手順を簡素化するため、ファイルにはすべての設定を記載することを推奨します。 


toml 形式の概要


ここに示すのは、toml ファイル形式の基本的な概要です。カバーしているのはこのファイル形式の機能の一部のみです。 

toml ファイル形式は、キー/値のペアによる行で構成されています。キーは単純な文字列(例えば、enabled など)で、値には様々な型(例えば、ブーリアン(true)、整数(255)、文字列("auto16")など)を使用できます。 

キー/値のペアは、テーブル(例えば、[uart]など)を使用してグループ化できます。また、ドットを使用してグループを表すことができます。以下の設定例を参照してください。ここで、"enabled=true"という行が"[uart]"テーブルに含まれていますが、これは、テーブルを宣言しないで"uart.enabled=true"と記述するのと同じです。

# Example boot configuration: UART settings for a TMC966X 
io_config_version = "v0.1"

  [uart]
enabled       = true 
pin_ic_tx     = 6         # 0, 6
pin_ic_rx     = 7         # 1, 7
baud_rate     = "auto16"  # 9600, 19200, 38400, 57600, 115200, 1000000, "auto8", "auto16"
chip_address  = 1         # 1-255
host_address  = 255       # 1-255 (must be different than chip_address)
図4. ブート設定の例

利用可能な設定の一覧は、以下のセクションを参照してください。 


設定および設定値の一覧


このセクションでは、利用可能な設定の全リストを示します。デフォルト値は太字で表示してあります。設定によってはデフォルト値のないものもあります(別のenable 設定によってディスエーブルされる設定など)。

App の設定

この設定では、app モードを選択します。 

表3. App の設定
設定 説明
app_settings. app_type “param”, “reg” レジスタ・モードとパラメータ・モードのどちらで実行するか選択します。

注:この設定は、TMC9660 のブートストラップ設定、BOOT_MODE に対応します。IC 内部では、この設定はデフォルトで予約済みの値になります。UblTools を使用する際、start コマンドは最初にすべての予約済みの設定をパラメータ・モードに再設定します。

ブートストラップの設定

以下の設定は、ブートローダによるアプリケーションの起動に関するものです。 

表4. ブートストラップの設定
設定 説明
bootstrap.disable_selftest false, true 電源オン時に行われる内部ROM およびRAMのセルフテストをディスエーブルします。この設定は、OTP に書き込まれた場合にのみ有効です。
bootstrap.load_rom_code  false, true  ROM のアプリケーション・コードからモータ制御システムをロードして実行します。
bootstrap.fault_on_app_exit false, true モータ制御アプリケーション・コードが終了してブートローダに戻ると、FAULTN ピンがアサートされます。
bootstrap.fault_on_app_entry false, true モータ制御アプリケーション・コードがロードされると、FAULTN ピンがアサートされます。注:モータ制御システムは、完全に初期化されるとFAULTN ピンのアサートを解除します。
bootstrap.fault_on_config false, true ブートローダが設定の処理を開始するとFAULTN ピンをアサートし、処理が完了するとアサートを解除します。注:これにより、クロックの再設定などの遅い動作の完了を、FAULTN ピンで知ることができます。

低ドロップアウト電圧レギュレータ

以下の設定は、TMC9660 のLDO 電圧レギュレーションに関するものです。 

表5. LDO の設定
設定 説明
ldo.vext1_voltage 0, 2.5, 3.3, 5.0 目的のVEXT1 ピン出力電圧
ldo.vext1_slope_speed 3.0, 1.5, 0.75, 0.37 VEXT1 LDO ソフトスタートのスロープ速度(単位:μs)
ldo.vext2_voltage 0, 2.5, 3.3, 5.0 所望のVEXT2 ピン出力電圧
ldo.vext2_slope_speed 3.0, 1.5, 0.75, 0.37 VEXT2 LDO ソフトスタートのスロープ速度(単位:μs)
ldo.ldo_short_fault false, true LDO 短絡時にFAULTN ピンをアサート

ユニバーサル非同期レシーバ-トランスミッタ/UART

以下の設定は、TMC9660 に接続するUART に関するものです。 

表6. UART の設定
設定 説明
uart.enabled false, true UART 通信をイネーブル。イネーブルされた場合、以下の設定が必要となります。
uart.baud_rate 9600, 19200, 38400, 57600, 115200, 1000000, "auto8", "auto16" UART 通信速度の選択。
uart.chip_address 0 – 255 UART チップ・アドレスの選択。デフォルト:1
uart.host_address 0 – 255 UART ホスト・アドレスの選択。デフォルト:255
uart.pin_ic_tx 6, 0 Tx に使用するGPIO の選択。
uart.pin_ic_rx 7, 1 Rx に使用するGPIO の選択。
uart.pin_ic_txen 2, 8 Tx イネーブルに使用するGPIO の選択(オプション)。
uart. txen_pre_delay 0 – 255 uart.pin_ic_txen が設定されている場合、設定する必要があります。
uart. txen_post_delay 0 – 255 uart.pin_ic_txen が設定されている場合、設定する必要があります。

SPI スレーブ

以下の設定は、TMC9660 に接続するSPI スレーブに関するものです。 

表7. SPI スレーブの設定
設定 説明
spi_slave.enabled false, true SPI スレーブの接続をイネーブル。イネーブルされた場合、以下の設定が必要となります。
spi_slave.spi_block SPI0”, “SPI1” SPI0 とSPI1 のどちらを使用するか選択。
SPI0:
  • MISO:GPIO 9
  • MOSI:GPIO 10
  • SCK:GPIO 6 またはGPIO 11
  • CSN:GPIO 12
SPI1:
  • MISO:GPIO 17
  • MOSI:GPIO 18
  • SCK:GPIO 14
  • CSN:GPIO 15
spi_slave.pin_spi0_sck 6, 11 SPI0 のSCK としてGPIO 6 を使用するかGPIO 11 を使用するか選択。spi_flash.spi_block = SPI0 を選択した場合にのみ、設定が必要です。

SPI フラッシュ

以下の設定は、外付けSPI フラッシュ・メモリに関するものです。 

表8. SPI フラッシュの設定
設定 説明
spi_flash.enabled false, true 外付けSPI フラッシュ・メモリをイネーブル。イネーブルした場合、追加でSPI フラッシュの設定を行う必要があります。
spi_flash.frequency 2500000, 2666666, 2857142, 3076923
3333333, 3636363
4000000, 4444444
5000000, 5714285
6666666, 8000000, 10000000
SPI フラッシュとの通信に使用するクロック周波数。
spi_flash.spi_block “SPI0”, “SPI1” SPI0 とSPI1 のどちらを使用するか選択。
SPI0:
  • MISO:GPIO 9
  • MOS:GPIO 10
  • SCK:GPIO 6 またはGPIO 11

SPI1:
  • MISO:GPIO 17
  • MOSI:GPIO 18
  • SCK:GPIO 14
spi_flash.pin_spi0_sck 6, 11 SPI0 のSCK としてGPIO 6 を使用するかGPIO 11 を使用するか選択。spi_flash.spi_block = SPI0 を選択した場合、設定が必要です。
spi_flash.pin_cs 0 – 18 チップ・セレクトとして使用するGPIO の選択。

外付けメモリの使用

以下は、チップの機能が、接続された外付けメモリをどのように利用するかを設定するものです。 

表9. 外付けメモリの設定
設定 説明
ext_mem.tmcl_script "spi-flash", "i2c-eeprom" (オプション)tmcl スクリプトの保存場所の選択。
ext_mem.parameter_storage "spi-flash", "i2c-eeprom" (オプション)パラメータの保存場所の選択。

ホール

以下の設定は、ホール・センサーに関するものです。

表10. ホールの設定
設定 説明
hall.enabled false, true ホール・センサーをイネーブル。イネーブルされた場合、以下の設定が必要となります。
hall. pin_u 2, 7, 9 ホールのU 信号に使用するGPIO の選択。
hall. pin_v 3, 15 ホールのV 信号に使用するGPIO の選択。
hall. pin_w 4, 8, 10 ホールのW信号に使用するGPIO の選択。

ABN1

以下の設定は、ABN1 センサーに関するものです。 

表11. ABN1 エンコーダの設定
設定 説明
abn1.enabled false, true ABN1 エンコーダの使用をイネーブル。
abn1.pin_a 5, 8, 17 エンコーダ信号A に使用するGPIO の選択。(abn1.enabled がtrue の場合、設定が必要)
abn1.pin_b 1, 13, 18 エンコーダ信号B に使用するGPIO の選択。(abn1.enabled がtrue の場合、設定が必要)
abn1.pin_n 14, 16 エンコーダ信号N に使用するGPIO の選択。(オプション)

I2C EEPROM

以下の設定は、外付けI2C EEPROMメモリに関するものです。 

表12. I2C EEPROM の設定
SETTING VALUES DESCRIPTION
i2c_eeprom.enabled false, true 外付けI2C EEPROM メモリをイネーブル。
i2c_eeprom.pin_scl 4, 12, 13 クロック・ラインに使用するGPIO の選択。
i2c_eeprom.pin_sda 5, 11, 14 データ・ラインに使用するGPIO の選択。
i2c_eeprom.address 0 – 7 EEPROM アドレスの設定。
i2c_eeprom.frequency 0 – 5 Hz: 100000 × 2^N。

SPI エンコーダ

以下の設定は、SPI エンコーダに関するものです。 

表13. SPI エンコーダの設定
設定 説明
spi_encoder.enabled false, true SPI エンコーダをイネーブル。
spi_encoder.spi_block "SPI0", "SPI1" SPI0 とSPI1 のどちらを使用するか選択。
SPI0:
  • MISO:GPIO 9
  • MOSI:GPIO 10
  • SCK:GPIO 6 またはGPIO 11

SPI1:
  • MISO:GPIO 17
  • MOSI:GPIO 18
  • SCK:GPIO 14
spi_encoder.spi_mode 0 – 3 SPI エンコーダとの通信に使用するSPI モード。
spi_encoder.frequency 2105263, 2222222, 2352941, 2500000, 2666666, 2857142, 3076923, 3333333, 3636363, 4000000, 4444444, 5000000, 5714285, 6666666, 8000000, 10000000 SPI エンコーダとの通信に使用するクロック周波数(単位:Hz)。
spi_encoder.pin_spi0_sck 6, 11 spi_block = "SPI0"の場合、設定が必要です。
spi_encoder.pin_cs 12, 13,
16 for spi_block="SPI0", 15 forspi_block="SPI1"
チップ・セレクト(CS)に使用するGPIO の選択。

フェーズ・ロック・ループ/PLL

以下の設定は、内部PLL に関するものです。 

表14. PLL の設定
設定 説明
pll.enabled false, true PLL をイネーブル。
pll.source IntOsc”, “ExtOsc”, “ExtClk” PLL が使用するソース・クロックの選択。
pll.sys_frequency 15000000, 40000000 PLL が生成するシステム周波数の選択。注:モータ制御システムは、起動時に40MHz のシステム周波数を必要とします。
pll.ext_frequency 1000000-32000000 外部発振器またはクロックの周波数(単位:Hz)。1MHz の倍数にする必要があります。外部発振器の場合、8MHz の倍数にする必要があります。
pll.xtal_boost false, true 外部発振器の起動中に最大駆動電流を印加するかどうかを選択。

リファレンス・スイッチ

以下の設定は、GPIO ピンを使用するリファレンス・スイッチ機構に関するものです。 

表15. リファレンス・スイッチの設定
設定 説明
ref_switch.pin_left 2, 12, 16 (オプション)左リファレンス・スイッチに使用するGPIO の選択。
ref_switch.pin_home 4, 7, 15, 17 (オプション)ホーム・リファレンス・スイッチに使用するGPIO の選択。
ref_switch.pin_right 3, 18 (オプション)右リファレンス・スイッチに使用するGPIO の選択。

Step/Dir

以下の設定は、ステッピング・モータの動作に使用するGPIO ピンのStep/Dir 信号に関するものです。 

注:Step/Dir 機能は、ABN2 機能と同時に使用することはできません。 

表16. Step/Dir の設定
設定 説明
step_dir.enabled false, true step/dir モードをイネーブル。
step_dir.pin_step 7, 11, 16 step 信号に使用するGPIO の選択。
step_dir.pin_dir 6, 15 方向信号に使用するGPIO の選択。

ウォッチドッグ

以下にウォッチドッグの設定について示します。 

表17. ウォッチドッグの設定
設定 説明
watchdog.enabled false, true ウォッチドッグ動作をイネーブル。
watchdog.timeout 250, 500, 750, 1000, 1250, 1500, 1750, 2000 タイムアウト時間(ms)の選択。

ブレーキチョッパー

以下にブレーキチョッパーの設定について示します。 

表18. ブレーキチョッパーの設定
設定 説明
brakechopper.enabled false, true ブレーキチョッパーの使用をイネーブル。
brakechopper.pin_brakechopper 0 – 18, “Y2” ブレーキ出力にGPIO を使用するかY2_HSを使用するかを選択。

機械式ブレーキ

以下に機械式ブレーキの設定について示します。 

表19. 機械式ブレーキの設定
設定 説明
mechanical_brake.enabled false, true 機械式ブレーキの使用をイネーブル。
mechanical_brake.pin_mech_brake 3, 10, 18, "Y2" ブレーキ出力にGPIO を使用するかY2_LSを使用するかを選択。

ABN2

以下の設定は、ABN2 エンコーダに関するものです。 

注:ABN2 エンコーダは、N チャンネルの使用に対応していません。
注:ABN2 エンコーダは、Step/Dir 機能と同時に使用することはできません。 

表20. ABN2 エンコーダの設定
設定 説明
abn2.enabled false, true ABN2 エンコーダをイネーブル。
abn2.pin_a 6, 15 エンコーダ信号A に使用するGPIO の選択。
abn2.pin_b 7, 11, 16 エンコーダ信号B に使用するGPIO の選択。

GPIO

以下に個々のGPIO ピン(0~18)の設定について示します。 

表21. GPIO の設定
設定 説明
gpioX.type "input", "output", “analog” (オプション)
"analog"オプションはGPIO 2、3、4、5 でのみ利用可能です。
gpioX.output_value 0, 1 gpioX.type="output"の場合に設定が必要です。
gpioX.pull_resistor "disabled", "pulldown", "pullup" (オプション)
GPIO タイプが"analog"に設定されている場合、"disabled"にのみ設定できます。

UBLTOOLS のパーティション・ファイル形式

UblTools を通じたメモリのパーテショニングには、TMC9660 に適用可能な設定ファイルを使用します。 


パーティション・テーブルの設定


ここでは、それぞれが専用の目的を持ったセクションになるようにメモリを分割するための設定について示します。

toml 形式の説明については、toml 形式の概要を参照してください。 

パーティションの記述は、2 つのパートを持った1 つのtoml ファイルで構成されます。1 番目のパートは、メモリ全体に関する値です。2番目のパートは、パーティションの一覧です。 

パーティション・ファイルの例は、クイック・スタート・ガイドの外付けメモリの設定を参照してください。

表22. パーティション・テーブルの設定—メモリの設定
設定 説明
partition_config_version "v1.0" パーティション設定ファイルのバージョン。
part_table.version "v1.1" for TMC9660 ブートローダのパーティション形式のバージョン。注:これは、GET_INFOPARTITION_VERSION を使用してブートローダから得られるバージョンです。.
part_table.size e.g., 0x00080000 for 512 KiB 外付けメモリのサイズ(単位:バイト)。2 のべき乗にする必要があります。最大値は、SPI フラッシュが224、I2CEEPROM が216 です。
part_table.sector_size e.g., 0x1000 for 4 KiB SPI フラッシュ:メモリ・セクタのサイズ(単位:バイト)。この値は、SECTOR_ERASE コマンドによって消去できるメモリ・サイズを表します。I2C:1 に設定。
表 23. パーティション・テーブルの設定—パーティションの一覧
設定 説明
part_type.partition.name e.g., “app_settings” UTF-8 にエンコードされたパーティション名。12 バイト長まで設定できます。
part_type.partition.type “MOTOR_CONFIG”, “TMCL_SCRIPT” パーティションのタイプ。"MOTOR_CONFIG"は、パラメータ・モードを起動時の値に保持します。"TMCL_SCRIPT"は、TMCL スクリプトをパラメータ・モードで実行するように設定します。
part_type.partition.offset e.g., 0x1000 外付けメモリのパーティションをオフセット(単位:バイト)。セクタ・サイズに合わせる必要があります。
part_type.partition.size e.g., 0x1000 パーティション・サイズ(単位:バイト)。セクタ・サイズの倍数にする必要があります。
part_type.partition.writable false, true パーティションを実行時に書込み可能にするかどうかの設定。注:このビットは単に指針を示すだけで、完全に実行されるわけではありません。
注:"part_type.partition"キーには、パーティションのアレイが含まれており、各アレイにはそれぞれのパーティション・キー("name"、"type"など)が記述されています。