Skip to main content
Graduate II
April 17, 2024
Question

I2C multibus on alternative pins howto or is possible?

  • April 17, 2024
  • 3 replies
  • 1664 views

I ask for this , but any other same alternative use.

MM1_0-1713365673953.png

i set primary I2C on PB10,11 as on image an reserve PA10,11 and PF0,1

My plan is use alternative AF as I2C switch similar as IC PI4MSD5V9540

On PF pins is device on 5V I2C . 

In code i try add to one I2C1 (have only one) PF pins when PB is active.

			/**I2C1 GPIO Configuration
			PF0 ------> DDC_SCL
			PF1 ------> DDC_SDA
			*/
			GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
			GPIO_InitStruct.Mode = GPIO_MODE_AF_OD;
			GPIO_InitStruct.Pull = GPIO_NOPULL;
			GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
			GPIO_InitStruct.Alternate = GPIO_AF1_I2C1;
			HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);

On scope seem signals is separated and address is send (HAL_I2C_Master_Transmit one byte) and ACK on PF pins, but no next data send. Seems somethink in HAL is broken after pin add.

When code deinit PB and only switch full pins to PF + init back com works ok.

Exist way to use more as one AF pin ?

    This topic has been closed for replies.

    3 replies

    Super User
    April 17, 2024

    I would not expect to be able to use PB10/11 **AND** PF0/1 at the same time as I2C pins. And why would you want to?  That is not what the PI4MSD5V9540 does.  It only enables one port at a time.

    You certainly can enable PB10/11, talk to chips on those lines.  Then disable PB10/11 and enable PF0/1 and talk to chips on those lines.  As you've seen.

    MM..1Author
    Graduate II
    April 20, 2024

    Ok then better explain is PI4MSD5V9546A and why require ... for example price , less noise  etc.

    Graduate II
    April 17, 2024

    Would expect you could set ODR for pins HIGH, set the one you want to suspend into GPIO_MODE_OUTPUT_OD mode, and then the one you want to activate into GPIO_MODE_AF_OD

    So a masked change (AND+OR) of the GPIO MODER registers

    You'd want to make sure bus was idle/complete

    The AF MUX doesn't have any catch fences about doing conflicting things, would just expect broken / undefined operation. A UART_TX might work out of two connection, not tried.

    MM..1Author
    Graduate II
    April 18, 2024

    Seems trouble isnt OD mode, but input part, or input switching for ACK or slave. When is two port init , connection isnt dependent. Maybe i try search in reference manual.

    Super User
    April 20, 2024

    You cannot have two I/O going to same unit ;

    maybe sending on 2 switched together pins might work - but what should the chip do, with 2 pins going to one (internal) input , if A is hi and B is lo , for example ? Or two different responses coming in ?

    As @Bob S  and @Tesla DeLorean  said, switching to one I/O pair and then to other (and back...) is possible and should work,

    but not more than one input at same time to same internal input. 

    +

    >Where i can find symbolic schematics for AF switching matrix?

    see ds : pinouts ...alternative...

    AScha3_0-1713600930707.png

     

    MM..1Author
    Graduate II
    April 20, 2024

    Where i can find symbolic schematics for AF switching matrix?