How do I change the SPI clock (P9_22) speed on BBB? And what is the maximum speed?

Maybe this might be a simple thing, but i have searched and could’nt get nowhere.

Maybe this might be a simple thing, but i have searched and could’nt get nowhere.

This is set in the device tree. In the Linux Kernel source for BBB look in /arch/arm/boot/dts/am335x-bone-common.dtsi


I just need a code in python that sets that frequency to what i want!

It’s set in device tree at boot time. I don’t think you are going to find a way to change that on the fly with a running system.

I don’t need to change to clock speed when the system its running. I want to change it before and then run the system.
Using somthing like this:

import Adafruit_BBIO.GPIO as GPIO
import time
GPIO.setup(“P9_22”, GPIO.out)
GPIO.setclock(“P9_22”, 64000) #and here 64000 = 64 khz

Can’t be done in Python.


Learn to compile the device tree files and how to make changes like this.

Python can’t do everything, despite what every Python fan I’ve known claims.


Can you send me some links to do so. I fairly new to BB and dont’t know what a lot of terms mean!

I do this in my c programs all the time. The SPI driver has a bunch of ioctl() calls to change anything. If Python can’t make those ioctl() calls but supports functions for reading and writing a hardware register, you might be able to open the SPI device and then call the register access functions to change the SPI clock divider to whatever you want. Look in spruh73i.pdf to find the register to write. It’s all in terms of 48 MHz divided by N.

Ok I figured it out using python:

spi = SPI(0,0)
spi.msh=2000000 ( by changing this number will result in the clock frequency change with a max of 12.0 Mhz. SIMPLE AS THAT.),0)
Thanks for your answers.

Cool, just learned something myself today! Now that I think about it I think it’s I2C where the speed is set in device-tree only.