Power off and power on via button the iMX6ULL module

Hi everyone.

I would like to turn on and turn off the iMX6ULL by pressing a button, like happening in a laptop. I saw that the Colibri Evaluation Board board has the chip LTC2954 to control the power supply and send the information to the SOM proceeds to power off when the button is pressed. How can I use the pins INT and KILL connected to SOM to achieve the goal?

Thanks!

Charles Dias.

Hi @CharlesDias,

Sorry for the delay. To clarify, do you intend to use the button to power on/off by hardware or software?

The Colibri Evaluation Board uses a hardware approach. Although it uses the LTC2954 to power on/off the module, it does not make use of neither the INT nor KILL pins (see “Operation Without μP” in the LTC2954 datasheet). Both pins are not physically connected to module as it can be seen in its schematic, page 3, which can be downloaded here. If you intend to proceed with this route it is recommended to follow the schematic.

If you still plan to use both the INT and KILL pins, do know that they must be connected to module (e.g. to the GPIO pins) and their handling must be done in software (see Read GPIO Using Events), following what is written in the LTC2954 datasheet.

Please let me know if need any further assistance.

Best regards,
André

Hi @andre_m.tx,

Thank you for your support. I have some questions. My plan is to use an external button to power on/off the system. I don’t know if the better approach is to power on/off by hardware or software. Which one do you suggest?

Using the LTC2954, I imagine in the following steps. Please, check if it is this approach makes sense:

  1. While the system is power off (the power supply doesn’t provide the 3.3V to SOM);
  2. The user presses the external button connected to LTC2954. At this moment, the LCT2954 will activate the MOSFET to power on the power supply and provide the 3.3V to SOM. After this, the SOM will be running and applies high-level signal to KILL pin in a period of time less than 512ms (requirement of LTC2954). Which pin do you recommend connecting to KILL to achieve this time requirement?
  3. While the system is running, if a user presses the external button, the LCT2954 will send an INT signal to SOM and the SOM will execute the poweroff command;
  4. When the system finishes the poweroff the SOM applies low-level signal to KILL pin. At this moment, the LCT2954 deactivates the MOSFET and poweroff the power supply;
  5. The system is ready to repeat Step 1.

In this case describe above, I have some concern about if the iMX6ULL:

  1. Does the iMX6ULL is able to identify a signal provide by INT pin that has a pulse with 32ms of max duration? Which pin do you recommend connecting to INT to achieve this time requirement?
  2. Is it possible to iMX6ULL apply the high-level signal to KILL pin in a period of time less than 512ms after apply 3.3V to SOM? Which pin do you recommend connecting to KILL to achieve this time requirement?

I read in the iMX6ULL datasheet when I execute the poweroff command on iMX6ULL the only way to reactivate the system from the Shut-Down state is by pressing the reset button or removing and reapplying the 3V3 main supply voltage rail.

Sorry for many questions! And thank you so much!

Charles Dias

Hi @CharlesDias,

It depends on the amount of control you intend to have on your system regarding its power cycle. Software gives you more control, but it requires work to set it up. Hardware requires less work to set up, but it gives you less control.

It is indeed a correct software approach setup.

I believe it should be possible to use GPIO pins to read the INT pin. Since a GPIO interrupt read requires two wait states, which is a function of a selected Burst clock (which is in the order of MHz, meaning periods in the order of μs), any GPIO pin should be able to read a 32ms signal without any problems. Refer to iMX6ULL’s Reference Manual (specifically pages 1368, 875, 825, 827) for more information.

There is a “poweroff” command implementation in our official documentation which uses a GPIO pin connected to the KILL pin (called FORCE_OFF#). In the Colibri Evaluation Board schematic previously stated, note that the KILL pin is directly brought up by a 3.3V source connected to the LCT2954. Hence, the 512ms requirement should be fulfilled by the circuit itself. I believe this is the only way to comply with such constraint since Linux boot times can take significantly more than 512ms.

This is indeed is correct.

Please let me know if need any further assistance.

Best regards,
André