2013-10-29 02:45 AM
Hello everyone !!
i am having some problem interfacing my 3.3 volt gpio pins to a 5 volt device. i am basically a software developer but trying to understand the cause of the problem at electronic level.here are the details, if anyone can help i will really appreciate it --Purpose of my program : To generate a PWM on the GPIO with maximum frequency of 200 KiloHertz .My Setup : I have a STM32F4Discovery board, being powered by the USB from my PC. Whose GPIO pin ( specifically PE15) is connected to the external 5volt device.The external device is a Stepper Motor Drive i am using for motor control.Pin configuration : output type = Push Pull speed = 50 MhzGPIO_PuPd = GPIO_PuPd_NOPULL
Observations : I am getting around 4.5 Volt from the USB Port on my PC(should be 5 though..)The board is converting this down to 2.7 - 2.8 volt (which should be 3.3 volt !!) , and providing it to the STM32F407VGT6 microcontroller on the board.This same voltage is being reflected in the GPIO pins .Now the PWM voltage levels are -Low State - 0 voltHigh State - 2.7 voltThe problem - The external 5 volt device does not pick up the GPIO voltage level in the high state.now i do understand that its my mistake to interface a 3.3 volt micro-controller with a 5 volt device but still i wish to connect it as i don't have any other option.I am trying to change the drive to 3.3 Volt one , but meanwhile i want to look at any other option which can help me use this same microcontroller.i think if the GPIO high state becomes at around 3.3 volt it will work even with a 5 volt device, but the current 2.7 is not reliable at all.or otherwisea mechanism to convert the 3.3 volt signal to 5 volt at high frequency (200KHz) would solve the problem. #gpio-3.3-5-volt-stm32f4discovery2013-10-29 05:20 AM
You're not going to be able to drive motors directly, but you should be able to get 5V outputs by using OD mode and pulling to 5V externally with a pull-up resistor. This will work for light loads.
USB may also not be able to supply enough current to drive motors either.For motors you'll need some drivers, and a better supply.2013-10-29 01:02 PM
i think if the GPIO high state becomes at around 3.3 volt it will work even with a 5 volt device, but the current 2.7 is not reliable at all.
Really depends on the device. Read up on TTL vs CMOS.Simple solution is a signal level converter. Can be done with simple FET/transistor or if you need multiple signals converted, then 74AVCH8T2452013-10-29 08:37 PM
Thanks ''clive1'' ... i did mention that i am using a drive for this specific purpose... the signal are not going into stepper, but the stepper drive...still i got your point :)
i'll try to use the pull up with OD trick... and get back to you.@rocketdawg - yes i am going to connect multiple pins in near future... probably control more motors... the device is TTL compatible... i'll try to connect the signal level converter...looks promising.thanks !