mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-23 16:25:31 +03:00
Allow mixed speed and mode on a SPI bus by CR1 caching
This commit is contained in:
parent
4778ad6c0f
commit
343e9b3a67
22 changed files with 390 additions and 58 deletions
|
@ -174,8 +174,12 @@
|
|||
|
||||
// On shared SPI buss we want to change clock for OSD chip and restore for other devices.
|
||||
|
||||
#ifdef USE_SPI_TRANSACTION
|
||||
#define __spiBusTransactionBegin(busdev) spiBusTransactionBegin(busdev)
|
||||
#define __spiBusTransactionEnd(busdev) spiBusTransactionEnd(busdev)
|
||||
#else
|
||||
#ifdef MAX7456_SPI_CLK
|
||||
#define __spiBusTransactionBegin(busdev) {spiSetDivisor((busdev)->busdev_u.spi.instance, max7456SpiClock);IOLo((busdev)->busdev_u.spi.csnPin);}
|
||||
#define __spiBusTransactionBegin(busdev) {spiBusSetDivisor(busdev, max7456SpiClock);IOLo((busdev)->busdev_u.spi.csnPin);}
|
||||
#else
|
||||
#define __spiBusTransactionBegin(busdev) IOLo((busdev)->busdev_u.spi.csnPin)
|
||||
#endif
|
||||
|
@ -185,6 +189,7 @@
|
|||
#else
|
||||
#define __spiBusTransactionEnd(busdev) IOHi((busdev)->busdev_u.spi.csnPin)
|
||||
#endif
|
||||
#endif
|
||||
|
||||
busDevice_t max7456BusDevice;
|
||||
busDevice_t *busdev = &max7456BusDevice;
|
||||
|
@ -476,7 +481,11 @@ bool max7456Init(const max7456Config_t *max7456Config, const vcdProfile_t *pVcdP
|
|||
UNUSED(cpuOverclock);
|
||||
#endif
|
||||
|
||||
spiSetDivisor(busdev->busdev_u.spi.instance, max7456SpiClock);
|
||||
#ifdef USE_SPI_TRANSACTION
|
||||
spiBusTransactionInit(busdev, SPI_MODE3_POL_HIGH_EDGE_2ND, max7456SpiClock);
|
||||
#else
|
||||
spiBusSetDivisor(busdev, max7456SpiClock);
|
||||
#endif
|
||||
|
||||
// force soft reset on Max7456
|
||||
__spiBusTransactionBegin(busdev);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue