[PWM] Changing two Duty Cycle in a synchronized way.

Hi all,

In my travel with BBB, I have succeded in driving a brushed dc motor with the BeagleBone Black but the interface given by pwm_test kernel module operate on one pwm at time.

The fact is that I need to to drive two complementary signals, so when I modify the duty cicle of one PWM i need to modify the other.

Do you think that this is possible with the current module PWM_test ot do you think I need to develop a brand new module?


I have a comparable question: Can I couple the PWM channels as we do in traditional bare metal approaches?

I want to drive 3 outputs 120 degrees from each other with a pulse, at a low frequency.

Can this somehow be achieved using Beaglebone with Linux?


1 Like


This is a good question. I am not sure…

I have not tested two PWM capable modules from the same PWM peripheral on the am335x supported BBB SBC yet.

I have two Servo Capes here by me. I guess I can try or even trying two servos w/ resistors on the 3.3v lines may prove valuable in this effort.

It seems fathomable. I just have not tried it myself.


I don’t think you can link the PWM’s. You need to treat them as separate with each pair having the same frequency. Check the datasheet for the MPU.
Even if they can be linked, I don’t think the kernel driver does that. They are treated as separate entities.

However as all PWM are clocked from the same source, you could approximate 3 outputs 120 degrees apart, but starting each PWM after a delay. It would be very rough though.

If you need 3 PWM’s to drive a BLDC motor for example, then no, you won’t be able to do that safely.

However as you have said a low frequency you are probably not driving a motor, in which case it might work for you. Really depends what you are doing with the PWM’s.

1 Like