目次

EtherCAT

LAN9253

MicrochipのTeherCATスレーブコントローラ
FMMUが8つ
SyncManagergaが8つ
8kBのPDI Dual Port Memory

LAN9252,LAN9254もある,機能比較表
Microchip EtherCAT® Product Selection Guide
LAN9253はSPIの高速化のためにダミーデータが任意バイト挿入できるようにになってる.
現状はLAN9253の初期設定で使えるようにした.
といっても送信データに読み出しバイト数を追加するだけだった.

作業メモ ~2021-04-28

LAN9252ところからSPIの読み出し方が少し異なる.
SPIの書き込みはいじらなくても良かったが読み込みに関しては読み出しバイト数を追加する必要があった.

TeraTermのログ

Apr 24 2021,22:16:56
F446RE
Chip ID : 9253
Chip Rev: 0
VenderID: 04D8
ProductID: 92530000
Controller: 00C0
Revision: 0003
FMMU: 8
SyncManager: 8
soes: Slave stack init started
soes: APP_safeoutput
Hello Main
soes: state 1
soes: state 1
soes: state 1
soes: state 2
soes: 7000:01 @ 0
soes: 7000:02 @ 8
soes: 6000:01 @ 0
soes: state 12

データシート訳

9.2.5SPI READ COMMANDS

Various read commands are support by the SPI/SQI slave. The following applies to all read commands.
SPI/SQIスレーブでは、さまざまなリードコマンドがサポートされています。以下は、すべてのリードコマンドに適用されます。
MULTIPLE READS
Additional reads, beyond the first, are performed by continuing the clock pulses while SCS# is active. The upper two bits of the address specify auto-incrementing (address[15:14]=01b) or auto-decrementing (address[15:14]=10b). The internal address is incremented, decremented, or maintained based on these bits. Maintaining a fixed internal address is useful for register polling. Towards the end of the current output shift the address is incremented or decremented, if appropriate, and another synchronized capture sequence is done. Constant address and Auto-increment/decrement operation for multiple DWORDs operates as follows. Note that it is the DWORD address that remains constant or is incremented or decremented. The byte address within the DWORD always increments:

複数回のリード
SCS#がアクティブな間、クロックパルスを継続することで、最初のリードを超える追加のリードが実行されます。アドレスの上位2ビットは、オートインクリメント(address[15:14]=01b)またはオートデクリメント(address[15:14]=10b)を指定します。これらのビットに基づいて、内部アドレスのインクリメント、デクリメント、または維持が行われます。固定の内部アドレスを維持することは、レジスタのポーリングに有効です。 現在の出力シフトの終了時には、必要に応じてアドレスがインクリメントまたはデクリメントされ、別の同期キャプチャシーケンスが行われます。 複数のDWORDに対するアドレスの一定化とオートインクリメント/デクリメント動作は以下のように動作します。 なお、一定に保つのもインクリメント/デクリメントするのもDWORDのアドレスです。DWORD内のバイトアドレスは常にインクリメントします。

READ TERMINATION
To avoid internally prefetching additional data past the last data that will be output, two methods are utilized. For the READ instruction, the SI input is used. During the last output byte, the SPI master must set SI high (input byte = FFh), otherwise an internal prefetch will occur with the potential of loosing data. For other read commands (FASTREAD, SDOR, SDIOR, SQOR, SQIOR), the transfer length in bytes is provided following the address.

読み取り終了 最後に出力されるデータを過ぎても内部で追加のデータをプリフェッチしないように、2つの方法が利用されています。 READ命令では、SI入力が使用されます。最後の出力バイトの間、SPIマスターはSIをハイレベル(入力バイト=FFh)にしなければなりません。そうしないと内部プリフェッチが発生し、データが失われる可能性があります。 その他のリードコマンド(FASTREAD、SDOR、SDIOR、SQOR、SQIOR)では、アドレスの後に転送長(バイト)が記載されています。

DUMMY BYTES
In order to provide sufficient time to retrieve the register data (especially when reading from the EtherCAT Core CSRs or Process RAM while in EtherCAT Direct Mapped mode) Dummy Byte cycles may be used. The number of Dummy Bytes is set using the Set Configuration instruction and is specified per read command type. There are three values per instruction. The first is the number of Dummy Bytes that will precede the first data byte. The second is the number of Dummy Bytes that occur between bytes within a DWORD (intra-DWORD). The third is the number of Dummy Bytes that occur between DWORDs (inter-DWORD). There are no Dummy Bytes after the last data byte of a command.

ダミーバイト レジスタデータの取得に十分な時間を確保するために、ダミーバイトサイクルを使用することがあります (特に、EtherCAT Direct MappedモードでEtherCAT Core CSRやProcess RAMから読み出す場合)。 ダミーバイトの数はSet Configuration命令を使用して設定し、リードコマンドタイプごとに指定します。 命令ごとに3つの値があります。 1つ目は、最初のデータバイトの前に置かれるダミーバイトの数です。 2つ目は、DWORD内のバイト間(intra-DWORD)に発生するダミーバイトの数です。 3つ目は、DWORD間に発生するDummy Bytesの数(inter-DWORD)です。コマンドの最後のデータバイトの後にはダミーバイトはありません。コマンドの最後のデータバイトの後にはダミーバイトはありません。

参考文献