Updating the S32K144EVB to Switch between 5V and 3.3V Logic Levels

By default, the NXP S32K144EVB and microcontroller is using a 5V supply voltage and logic levels which is great for noisy environment or any 5V devices. Many of my displays and sensors use 3.3V logic levels, so I would have to use a level shifter from 5V to 3.3V. There is another way: to change the board for 3.3V logic levels so I can use directly things like a SSD1306 display.

S32K144EVB with OLED SSD1306 using 3.3V Logic Levels

S32K144EVB with OLED SSD1306 using 3.3V Logic Levels

The board schematic overview shows a VDD selection:

S32K144 EVB VDD Selection

S32K144 EVB VDD Selection

In the schematics this is implemented as shown below:

S32K144EVB power Supply Selection

S32K144EVB power Supply Selection

With the R64 (0 Ohm resistor) the board is hard-wired to use 5V (P5V0 to VDD which is the CPU supply voltage). So all what I would need is to remove R64 and install a jumper on J10 to switch between 5V and 3.3V.

Removing R64 is easy with SMD de-solder tweezers tips.

Desoldering tweezer tips

Desoldering tweezer tips

But the through holes for J10 are filled with solder, it seems the board manufacturing data used the wrong solder mask :-(.

Filled holes for J10

Filled holes for J10

Weller Desoldering Station

Weller Desoldering Station

After painfully removing the solder from HDR J10, I was able to install a 3-pin header:

Removed R64 and added J10 on S32K144EVB

Removed R64 and added J10 on S32K144EVB

With a jumper on 1-2 I have no 3.3V:

S32K144EVB J10 Jumper position for 3.3V VDD

S32K144EVB J10 Jumper place for 3.3V VDD

Another solution would have been to use a solder bridge between 1-2, but having a jumper is a much nicer way, and I can revert back to 5V VDD if I have to.

Happy Leveling 🙂

PS: that project for the SSD1306 OLED display is available on GitHub.

Links

10 thoughts on “Updating the S32K144EVB to Switch between 5V and 3.3V Logic Levels

    • Hi Juan,
      no, the K64F is a 3.3V microcontroller and cannot be used with 5V. Some Kinetis have ‘5V capable pins’, but I never have used that, as only a few pins implement this. I rather use a 5V CPU or a level shifter if needed.

      Like

  1. Hi,
    I am using RDDRONE-BMS772 board. There is s32k144 48 pack MCU on it. There is also ssd1306 128×32 display oled on the card. I am running your code by editing it. I turn on the RGB led on the card, but the screen does not work. 3.3 Volt goes to the screen. I see that I2C communication does not start in the logic analyzer. Can you help me with this?

    Best Regards!

    Liked by 1 person

    • I checked that board online (I don’t have that one), but I don’t see any SSD1306 on it? If you do not see any I2C communication, I guess you did not properly initialize the I2C peripheral or used the wrong pins?

      Like

      • Hi,
        Thank your reply.

        I’m sure I chose the pins correctly. If you look at the schematic of the card, they connected an I2C 128×32 display to the J23 in the new version. In this link, they ran the RDDRONE-BMS772 card with NUTTx. https://github.com/NXPHoverGames/RDDRONE-BMS772/blob/main/BMS772_releaseNotes_5.0.pdf

        I am writing the software on 2018.R1. I chose the iseled_freemaster_s32k144 project from the sample projects and made corrections by taking your software as an example. I am using the 128×32 part in the software. 3.3 volts is coming to the Vcc pin of the display. There is no problem with the pins. I also set the pins of my processor in the software.

        I can turn the RGB LED on and off. But there is no movement on the screen.

        I don’t get any errors in the software. When I debug, I can read the GPIO pins. But I can’t read LI2C pins. I see a question mark (?).

        I wonder if there is an error in the sample software I chose? I would be very happy if you could help me with this.

        Liked by 1 person

        • Yes, it could be that your sample software/project configures things in the wrong way. Most issues with I2C not working is because of missing/wong I2C pin muxing, or that the I2C hardware clock gate is not enabled, causing the peripheral not working because it is not clocked.

          Like

What do you think?

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.