OpenEtherCATsociety / SOES

Simple Open Source EtherCAT Slave
Other
559 stars 244 forks source link

Question of LAN9252 & LAN9253 difference in code #147

Closed YBKIMadn closed 11 months ago

YBKIMadn commented 1 year ago

Hello ! I am developing a EtherCAT slave device.

The device configuration is based on STM32F4 & LAN9252, LAN9253. I success to communicate EtherCAT communication via TwinCAT program. But I cannot use PDO map in SOEM.

Now I am testing STM32F4 Nucleo board with commercialized LAN9252, LAN9253 device and I used DieBie Slave code for base.

My problem is when I connect STM32F4 with LAN9252, the PDO map using ./slaveinfo is work but with LAN9253 doesn't work as follow. It shows Invalid mailbox header errors and PDO mapping according to CoE doesn't display anything. Do I have to change some parameters to use LAN9253 device ?

----- STM32F4 with LAN9252 SOEM (Simple Open EtherCAT Master) Slaveinfo Starting slaveinfo ec_init on rteth0 succeeded. Time: 322538.464 SDO slave:1 index:1c00.00 error:06010000 Unsupported access to an object 1 slaves found and configured. Calculated workcounter 3

Slave:1 Name:DieBieSlave - NunChuck Output size: 8bits Input size: 72bits State: 4 Delay: 0[ns] Has DC: 1 DCParentport:0 Activeports:0.1.0.0 Configured address: 1001 Man: 00000959 ID: 01001201 Rev: 00000000 SM0 A:1000 L: 128 F:00010026 Type:1 SM1 A:1080 L: 128 F:00010022 Type:2 SM2 A:1100 L: 1 F:00010024 Type:3 SM3 A:1180 L: 9 F:00010020 Type:4 FMMU0 Ls:00000000 Ll: 1 Lsb:0 Leb:7 Ps:1100 Psb:0 Ty:02 Act:01 FMMU1 Ls:00000001 Ll: 9 Lsb:0 Leb:7 Ps:1180 Psb:0 Ty:01 Act:01 FMMUfunc 0:1 1:2 2:3 3:0 MBX length wr: 128 rd: 128 MBX protocols : 04 CoE details: 23 FoE details: 00 EoE details: 00 SoE details: 00 Ebus current: 0[mA] only LRD/LWR:0 PDO mapping according to CoE : SM2 outputs addr b index: sub bitl data_type name [0x0000.0] 0x7000:0x01 0x01 BOOLEAN LED0 [0x0000.1] 0x0000:0x00 0x07 SM3 inputs addr b index: sub bitl data_type name [0x0001.0] 0x6000:0x01 0x08 INTEGER8 JoyStickX [0x0002.0] 0x6000:0x02 0x08 INTEGER8 JoyStickY [0x0003.0] 0x6000:0x03 0x10 INTEGER16 AcceleroMeterX [0x0005.0] 0x6000:0x04 0x10 INTEGER16 AcceleroMeterY [0x0007.0] 0x6000:0x05 0x10 INTEGER16 AcceleroMeterZ [0x0009.0] 0x6000:0x06 0x01 BOOLEAN ButtonC [0x0009.1] 0x6000:0x07 0x01 BOOLEAN ButtonZ [0x0009.2] 0x6000:0x08 0x01 BOOLEAN NunChuckDataValid [0x0009.3] 0x0000:0x00 0x05 End slaveinfo, close socket End program

----- STM32F4 with LAN9253 SOEM (Simple Open EtherCAT Master) Slaveinfo Starting slaveinfo ec_init on rteth0 succeeded. Time: 322901.048 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.049 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.050 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.051 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.052 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.053 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.054 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.056 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.057 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.058 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.059 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.060 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.137 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.138 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.139 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.140 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.141 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.142 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.144 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.145 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.146 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.147 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.148 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.149 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.150 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.152 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.153 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.154 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.155 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.156 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.157 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.159 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.160 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.161 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.162 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.163 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.164 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.165 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.242 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.243 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.244 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.245 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.247 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.248 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.249 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.250 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.251 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.252 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.253 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.255 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.256 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.257 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.258 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.259 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.260 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.262 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.263 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.264 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.265 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.266 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.267 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.269 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.270 MBX slave:1 error:0005 Invalid mailbox header Time: 322901.271 MBX slave:1 error:0005 Invalid mailbox header 1 slaves found and configured. Calculated workcounter 3

Slave:1 Name:DieBieSlave - NunChuck Output size: 8bits Input size: 72bits State: 4 Delay: 0[ns] Has DC: 1 DCParentport:0 Activeports:1.0.0.0 Configured address: 1001 Man: 00000959 ID: 01001201 Rev: 00000000 SM0 A:1000 L: 128 F:00010026 Type:1 SM1 A:1080 L: 128 F:00010022 Type:2 SM2 A:1100 L: 1 F:00010024 Type:3 SM3 A:1180 L: 9 F:00010020 Type:4 FMMU0 Ls:00000000 Ll: 1 Lsb:0 Leb:7 Ps:1100 Psb:0 Ty:02 Act:01 FMMU1 Ls:00000001 Ll: 9 Lsb:0 Leb:7 Ps:1180 Psb:0 Ty:01 Act:01 FMMUfunc 0:1 1:2 2:3 3:0 MBX length wr: 128 rd: 128 MBX protocols : 04 CoE details: 23 FoE details: 00 EoE details: 00 SoE details: 00 Ebus current: 0[mA] only LRD/LWR:0 PDO mapping according to CoE : End slaveinfo, close socket End program

ArthurKetels commented 1 year ago

When you read the datasheets of the two devices you will notice that the interface is quite different. So you have to adapt the driver for the LAN9253. The 53 is an update over the 52 and has a much more efficient interface. As of now SOES does not have a specific driver for the 53.

arbite commented 1 year ago

I seem to remember DieBie slave uses SPI for comms. LAN9253 needs length information for FASTREAD command. LAN9252 did not need this as it only ever did a DWORD at a time. FASTREAD is used in SPIReadPDRamRegister in driverSWLAN9252.c You need to add length info after the address, but before the dummy bytes

solomon112 commented 12 months ago

I use linux demo for lan9253, can you write code for lan9253 (linux)。driver and hal code。 thank you

nakarlsson commented 11 months ago

As mentioned, the devices differ. At the moment there is no plan to added support for LAN9253 on GitHub. Feel free to provide a port @solomon112

"can you write a demo for lan9253" #158.