SPI communication from userspace
Gergely Czuczy
gergely.czuczy at harmless.hu
Tue Mar 7 18:38:59 UTC 2017
Hello,
I would like to ask for some help, on how to communicate with an
Adafruit MAX31856 breakout board over the SPI bus under freebsd, on an
RPi3. As far as I can see, the spibus(4) driver is there, but there's no
driver for this chip, and I can't access the SPI calls from userspace
either. I could try to write a driver, however I don't have the
experience working with the FreeBSD kernel.
SPI communication is quite simple, you send a single byte to the device,
and if the MSB was 1 it's a write, if it's 0 it's a read operation,
remaining 7 bits is the address. Then you either write a byte to the
address, or wait for the device to respond by the next cycle.
Other difficulty is, the RPi3 provides 2 PINs for CS, and I have 3
devices, so I either have to use generic GPIO PINs, or de/multiplex it,
which might require a userspace call for device selection on the bus.
So, how should I start? What would be a good way to do the
userspace-kernelspace communication? Also, I'm not sure whether I should
do a specific driver for this device, or a generic one, and writing the
specifics in userspace.
Also, if you could point me to some documentation which would explain
how to work with the kernel, make a custom module, the possible
user/kernelspace communication possibilities, and how to call another
kernel module's functions, would be quite appreciated. Also, if someone
knows where could I find docs on the spibus driver, would be quite nice
since, it's just code so far.
Best regards,
Gergely
More information about the freebsd-hackers
mailing list