MSPM0L1105: Open Drain Config for GPIOs

Part Number: MSPM0L1105

Tool/software:

Hello,

I have the MSPM0L1105 MCU. I want to configure some GPIO as open drain. There seems to be an option to configure some pins as 'Open Drain 5V Tolerant', but only several pins are capable of this. I also don't need 5V tolerance, just normal 3.3V open drain. I don't see this option in the syscfg. How can I do this?

Secondly, if I have a GPIO configured as an output, can I still read this pin's digital state to see if it is logic high or logic low?

Thanks

Jesse

  • The 5 V tolerant outputs work just fine at 3.3 V, they just won't be destroyed at 5 V. And yes, you only have a few available.

  • yes, but the pins I want to use as open drain are not one of the pins I can select as 5V tolerant open drain.

    There is this 'high impedance' mode option in the IOMUX:

    The description does not make sense to me. Is this implementing an open drain config on this pin? Thanks

  • Hi Jesse,

    The description does not make sense to me. Is this implementing an open drain config on this pin? Thanks

    ODIO is special and can support 5V input, so it can not be configured as normal IO and need external pull-up resistor to output high voltage.

    SDIO can be configured to open drain, which means when it is set to output high, then it keep high impedance with the IO output, while the voltage in the pin can not work with the voltage higher than VCC. This is called high-impendece.

    Generally speaking, after SDIO configured as high-impedance, it works as normal open drain IO, but can not support voltage higher than VCC in this pin. So, it could work with your application scenario.

    Secondly, if I have a GPIO configured as an output, can I still read this pin's digital state to see if it is logic high or logic low?

    Technically, it could work. It won't make the circuit shorten or broken. You should enable input and output both. I suggest you can take a try with the board, and check whether it is normal without issue. I am also curious about it.

    B.R.

    Sal

  • Thanks Sal. 

    I did try enabling both input and output on these open drain pins, and it does work. You can configure them as outputs, then enable digital inputs:

    SYSCFG_DL_init();
    DL_GPIO_initDigitalInput(GPIO1_IOMUX);
    DL_GPIO_initDigitalInput(GPIO2_IOMUX);

    I can write to these pins and read their results as expected.

  • Hi Jesse,

    Thanks for the feedback. I will close the thread and if you have any further issue, you could file a new thread in the forum.

    B.R.

    Sal