beagleboard / beagleboard/librobotcontrol
SPI chip select/slave select not working
- Dominant language
- C
- Stars
- 212
- Forks
- 167
- PR merge metrics
- No merged PRs in 30d
Description
**The bug**
The slave select doesn't pull down during transfer.
**Description**
1. Using pocketbeagle, with robotcontrollib 1.0.5, and an SPI device (_RFM26W_ but doesn't matter)
2. Running the '*rc_spi_loopback.c*' example
3. using '*rc_spi_init_auto_slave(BUS, SLAVE, BUS_MODE, SPI_SPEED)*'
4. Verified with oscilloscope, that the CS line doesnt move during the program. CS goes high at program start and goes low on exit.
**Temporary fix**
Temporary fix with '*rc_spi_init_manual_slave(BUS, SLAVE, BUS_MODE, SPI_SPEED, chip, pin)*' and manual manipulation of CS with *rc_spi_manual_select(BUS, SLAVE, 0) / rc_spi_manual_select(BUS, SLAVE, 1)* before/after every spi event.
This way cant use hardware CS.
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the rc_spi_loopback.c example and trace rc_spi_init_auto_slave(BUS, SLAVE, BUS_MODE, SPI_SPEED) into the SPI initialization and transfer path. Compare its behavior with rc_spi_init_manual_slave and rc_spi_manual_select. Done means hardware chip select pulls low during transfers and returns high afterward without manual CS control.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- c
- Domain
- embedded-iot
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100