cancel
Showing results for 
Search instead for 
Did you mean: 

X-NUCLEO IKS4A1 with STEVAL-MKI212V1 (ASM330LHHX) DIL24

Pantera_MXJ
Associate III

Hello!!

I just started with the ASM330LHHX DIL24 module for the X-NUCLEO Boards, the module is listed as compatible with the IKS4A1 (sensors below):

Pantera_MXJ_0-1752821592794.png

I have read some documents related to the procedure to make it work but it's an "old" document (see below), I look for general advice:

  • Once the module is inserted do I need to configure any jumpers in the XNUCLEO board?
  • If there is no need to modify jumper configuration on the board, does that mean that all configuration is done via software, correct?
  • Once I gain access to the ASM330, the rest of the sensors onboard the IKS4A1 will be available? all of them + the ASM330?

> If you have a tip or advice related to the configuration to enable the ASM3330 feel free to share it.

Document: an5353-how-to-use-a-sensor-on-a-dil-24-socket-in-xcubemems1-package-applications-stmicroelectronics

Thanks!

J.D

 

1 ACCEPTED SOLUTION

Accepted Solutions
Federica Bossi
ST Employee

Hi @Pantera_MXJ ,

If STEVAL-MKI212V1 must be used, it is mandatory to remove the I2C address conflict as explained in UM3239 (chapter 3.6). To remove the conflict (with LSM6DSO16IS), it is mandatory to open the solder bridges SB38 and SB39. 

Please verify also the presence of R27 and closure of SB44 (that creates right address on STEVAL-MKI212V1). Pay attention that only one INT pin can be used modifying USER_INT J2 connections.

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.

View solution in original post

2 REPLIES 2
Federica Bossi
ST Employee

Hi @Pantera_MXJ ,

If STEVAL-MKI212V1 must be used, it is mandatory to remove the I2C address conflict as explained in UM3239 (chapter 3.6). To remove the conflict (with LSM6DSO16IS), it is mandatory to open the solder bridges SB38 and SB39. 

Please verify also the presence of R27 and closure of SB44 (that creates right address on STEVAL-MKI212V1). Pay attention that only one INT pin can be used modifying USER_INT J2 connections.

In order to give better visibility on the answered topics, please click on 'Accept as Solution' on the reply which solved your issue or answered your question.
Pantera_MXJ
Associate III

Hello Federica!

Thank you so much for your reply! I had a little trip so I just had the chance to reply.

 

Yes! I discovered that I had an address conflict with the MKI212V1 and having available the board IKS02A1 with less sensors I decided to use this X-NUCLEO board instead of the IKS4A1, the IKS02A1 avoids an I2C address conflict with the MKI212V1 but so far I have not been able to get the whoami from the MKI212V1 connected to the IKS02A1, if I test the module MKI212V1 directly connected to the nucleo board I can see that the MKI212V1 does not have any conflict with the modules in the IKS02A1 board (checking I2C addresses) but no matter what I tried I cannot initialize the ASM330 onboard of the MKI212V1 via IKS02A1.

You already provided the answer to be able to work with the IKS4A1 but at this point I’m not yet willing to mess with the board as is a bit expensive to ship them from abroad in case I damage the board by accident (I know it's a simple bridge…but still)

 

Using the original code (you correct it in another post)  as base I can't init the DIL24 module so I'm not able to get the whoamI, I will check your code provided in another post but can you provide additional advice? will be greatly appreciated.

When trying to get the whoami for the ASM330, the code stops there and cannot continue.

 

printf("-- STM32 JMX MotionFX Fusion DEMO --\r\n");


    /* --- INICIALIZACIÓN DE SENSORES --- */
    // Init onboard sensors of X-NUCLEO IKS02A1
    IKS02A1_MOTION_SENSOR_Init(IKS02A1_ISM330DHCX_0, MOTION_ACCELERO | MOTION_GYRO);
    IKS02A1_MOTION_SENSOR_Init(IKS02A1_IIS2MDC_0, MOTION_MAGNETO);

    //  Init ASM330LHHX socket DIL24
    IKS02A1_MOTION_SENSOR_Init(IKS02A1_ASM330LHHX_0, MOTION_ACCELERO | MOTION_GYRO);

    /* --- SENSOR VERIFICATION (WHO_AM_I) --- */
    printf("\r\n--- Verificacion de Sensores I2C ---\r\n");

    // Verificar ISM330DHCX (On-board)
    IKS02A1_MOTION_SENSOR_ReadID(IKS02A1_ISM330DHCX_0, &who_am_i);
    printf("ISM330DHCX (On-board): Addr=0x6B, WHO_AM_I=0x%X\r\n", who_am_i);

    // Verificar IIS2MDC (On-board)
    IKS02A1_MOTION_SENSOR_ReadID(IKS02A1_IIS2MDC_0, &who_am_i);
    printf("IIS2MDC (On-board):  Addr=0x1E, WHO_AM_I=0x%X\r\n", who_am_i);

    // ! Verify ASM330LHHX (DIL24)
    IKS02A1_MOTION_SENSOR_ReadID(IKS02A1_ASM330LHHX_0, &who_am_i);
    printf("ASM330LHHX (DIL24):   Addr=0x6A, WHO_AM_I=0x%X\r\n", who_am_i);

    printf("--- End of Verification ---\r\n\r\n");

Kind regards

 

J.D