mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-25 17:25:20 +03:00
Fix SPI LL Segment Repetition
This commit is contained in:
parent
f5a56804b1
commit
7fb0c79ff4
1 changed files with 8 additions and 3 deletions
|
@ -644,6 +644,7 @@ void spiSequenceStart(const extDevice_t *dev)
|
||||||
spiInternalStartDMA(dev);
|
spiInternalStartDMA(dev);
|
||||||
} else {
|
} else {
|
||||||
busSegment_t *lastSegment = NULL;
|
busSegment_t *lastSegment = NULL;
|
||||||
|
bool segmentComplete;
|
||||||
|
|
||||||
// Manually work through the segment list performing a transfer for each
|
// Manually work through the segment list performing a transfer for each
|
||||||
while (bus->curSegment->len) {
|
while (bus->curSegment->len) {
|
||||||
|
@ -663,15 +664,17 @@ void spiSequenceStart(const extDevice_t *dev)
|
||||||
IOHi(dev->busType_u.spi.csnPin);
|
IOHi(dev->busType_u.spi.csnPin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
segmentComplete = true;
|
||||||
if (bus->curSegment->callback) {
|
if (bus->curSegment->callback) {
|
||||||
switch(bus->curSegment->callback(dev->callbackArg)) {
|
switch(bus->curSegment->callback(dev->callbackArg)) {
|
||||||
case BUS_BUSY:
|
case BUS_BUSY:
|
||||||
// Repeat the last DMA segment
|
// Repeat the last DMA segment
|
||||||
bus->curSegment--;
|
segmentComplete = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BUS_ABORT:
|
case BUS_ABORT:
|
||||||
bus->curSegment = (busSegment_t *)BUS_SPI_FREE;
|
bus->curSegment = (busSegment_t *)BUS_SPI_FREE;
|
||||||
|
segmentComplete = false;
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case BUS_READY:
|
case BUS_READY:
|
||||||
|
@ -680,8 +683,10 @@ void spiSequenceStart(const extDevice_t *dev)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
lastSegment = (busSegment_t *)bus->curSegment;
|
if (segmentComplete) {
|
||||||
bus->curSegment++;
|
lastSegment = (busSegment_t *)bus->curSegment;
|
||||||
|
bus->curSegment++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lastSegment && !lastSegment->negateCS) {
|
if (lastSegment && !lastSegment->negateCS) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue