mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-25 01:05:27 +03:00
PICO: IO tag changes, updated pins.
This commit is contained in:
parent
7969451f7c
commit
9c8543ac35
7 changed files with 474 additions and 386 deletions
|
@ -60,33 +60,33 @@ const spiHardware_t spiHardware[] = {
|
|||
.device = SPIDEV_0,
|
||||
.reg = SPI0,
|
||||
.sckPins = {
|
||||
{ DEFIO_TAG_E(P2) },
|
||||
{ DEFIO_TAG_E(P6) },
|
||||
{ DEFIO_TAG_E(P18) },
|
||||
{ DEFIO_TAG_E(P22) },
|
||||
{ DEFIO_TAG_E(PA2) },
|
||||
{ DEFIO_TAG_E(PA6) },
|
||||
{ DEFIO_TAG_E(PA18) },
|
||||
{ DEFIO_TAG_E(PA22) },
|
||||
#ifdef RP2350B
|
||||
{ DEFIO_TAG_E(P34) },
|
||||
{ DEFIO_TAG_E(P38) },
|
||||
{ DEFIO_TAG_E(PA34) },
|
||||
{ DEFIO_TAG_E(PA38) },
|
||||
#endif
|
||||
},
|
||||
.misoPins = {
|
||||
{ DEFIO_TAG_E(P0) },
|
||||
{ DEFIO_TAG_E(P4) },
|
||||
{ DEFIO_TAG_E(P16) },
|
||||
{ DEFIO_TAG_E(P20) },
|
||||
{ DEFIO_TAG_E(PA0) },
|
||||
{ DEFIO_TAG_E(PA4) },
|
||||
{ DEFIO_TAG_E(PA16) },
|
||||
{ DEFIO_TAG_E(PA20) },
|
||||
#ifdef RP2350B
|
||||
{ DEFIO_TAG_E(P32) },
|
||||
{ DEFIO_TAG_E(P36) },
|
||||
{ DEFIO_TAG_E(PA32) },
|
||||
{ DEFIO_TAG_E(PA36) },
|
||||
#endif
|
||||
},
|
||||
.mosiPins = {
|
||||
{ DEFIO_TAG_E(P3) },
|
||||
{ DEFIO_TAG_E(P7) },
|
||||
{ DEFIO_TAG_E(P19) },
|
||||
{ DEFIO_TAG_E(P23) },
|
||||
{ DEFIO_TAG_E(PA3) },
|
||||
{ DEFIO_TAG_E(PA7) },
|
||||
{ DEFIO_TAG_E(PA19) },
|
||||
{ DEFIO_TAG_E(PA23) },
|
||||
#ifdef RP2350B
|
||||
{ DEFIO_TAG_E(P35) },
|
||||
{ DEFIO_TAG_E(P39) },
|
||||
{ DEFIO_TAG_E(PA35) },
|
||||
{ DEFIO_TAG_E(PA39) },
|
||||
#endif
|
||||
},
|
||||
},
|
||||
|
@ -94,33 +94,33 @@ const spiHardware_t spiHardware[] = {
|
|||
.device = SPIDEV_1,
|
||||
.reg = SPI1,
|
||||
.sckPins = {
|
||||
{ DEFIO_TAG_E(P10) },
|
||||
{ DEFIO_TAG_E(P14) },
|
||||
{ DEFIO_TAG_E(P26) },
|
||||
{ DEFIO_TAG_E(PA10) },
|
||||
{ DEFIO_TAG_E(PA14) },
|
||||
{ DEFIO_TAG_E(PA26) },
|
||||
#ifdef RP2350B
|
||||
{ DEFIO_TAG_E(P30) },
|
||||
{ DEFIO_TAG_E(P42) },
|
||||
{ DEFIO_TAG_E(P46) },
|
||||
{ DEFIO_TAG_E(PA30) },
|
||||
{ DEFIO_TAG_E(PA42) },
|
||||
{ DEFIO_TAG_E(PA46) },
|
||||
#endif
|
||||
},
|
||||
.misoPins = {
|
||||
{ DEFIO_TAG_E(P8) },
|
||||
{ DEFIO_TAG_E(P12) },
|
||||
{ DEFIO_TAG_E(P24) },
|
||||
{ DEFIO_TAG_E(P28) },
|
||||
{ DEFIO_TAG_E(PA8) },
|
||||
{ DEFIO_TAG_E(PA12) },
|
||||
{ DEFIO_TAG_E(PA24) },
|
||||
{ DEFIO_TAG_E(PA28) },
|
||||
#ifdef RP2350B
|
||||
{ DEFIO_TAG_E(P40) },
|
||||
{ DEFIO_TAG_E(P44) },
|
||||
{ DEFIO_TAG_E(PA40) },
|
||||
{ DEFIO_TAG_E(PA44) },
|
||||
#endif
|
||||
},
|
||||
.mosiPins = {
|
||||
{ DEFIO_TAG_E(P11) },
|
||||
{ DEFIO_TAG_E(P15) },
|
||||
{ DEFIO_TAG_E(P27) },
|
||||
{ DEFIO_TAG_E(PA11) },
|
||||
{ DEFIO_TAG_E(PA15) },
|
||||
{ DEFIO_TAG_E(PA27) },
|
||||
#ifdef RP2350B
|
||||
{ DEFIO_TAG_E(P31) },
|
||||
{ DEFIO_TAG_E(P43) },
|
||||
{ DEFIO_TAG_E(P47) },
|
||||
{ DEFIO_TAG_E(PA31) },
|
||||
{ DEFIO_TAG_E(PA43) },
|
||||
{ DEFIO_TAG_E(PA47) },
|
||||
#endif
|
||||
},
|
||||
},
|
||||
|
@ -230,6 +230,11 @@ void spiInitDevice(SPIDevice device)
|
|||
return;
|
||||
}
|
||||
|
||||
// Set owners
|
||||
IOInit(IOGetByTag(spi->sck), OWNER_SPI_SCK, RESOURCE_INDEX(device));
|
||||
IOInit(IOGetByTag(spi->miso), OWNER_SPI_SDI, RESOURCE_INDEX(device));
|
||||
IOInit(IOGetByTag(spi->mosi), OWNER_SPI_SDO, RESOURCE_INDEX(device));
|
||||
|
||||
spi_init(SPI_INST(spi->dev), SPI_SPEED_20MHZ);
|
||||
|
||||
gpio_set_function(IO_PINBYTAG(spi->miso), GPIO_FUNC_SPI);
|
||||
|
@ -260,6 +265,10 @@ bool spiInternalReadWriteBufPolled(SPI_TypeDef *instance, const uint8_t *txData,
|
|||
// Initialise DMA before first segment transfer
|
||||
void spiInternalInitStream(const extDevice_t *dev, bool preInit)
|
||||
{
|
||||
#ifndef USE_DMA
|
||||
UNUSED(dev);
|
||||
UNUSED(preInit);
|
||||
#else
|
||||
UNUSED(preInit);
|
||||
|
||||
int dma_tx = dma_claim_unused_channel(true);
|
||||
|
@ -282,17 +291,22 @@ void spiInternalInitStream(const extDevice_t *dev, bool preInit)
|
|||
channel_config_set_dreq(&config, spi_get_dreq(SPI_INST(spi->dev), false));
|
||||
|
||||
dma_channel_configure(dma_rx, &config, dev->rxBuf, &spi_get_hw(SPI_INST(spi->dev))->dr, 0, false);
|
||||
#endif
|
||||
}
|
||||
|
||||
// Start DMA transfer for the current segment
|
||||
void spiInternalStartDMA(const extDevice_t *dev)
|
||||
{
|
||||
#ifndef USE_DMA
|
||||
UNUSED(dev);
|
||||
#else
|
||||
// TODO check correct, was len + 1 now len
|
||||
dma_channel_set_trans_count(dev->bus->dmaTx->channel, dev->bus->curSegment->len, false);
|
||||
dma_channel_set_trans_count(dev->bus->dmaRx->channel, dev->bus->curSegment->len, false);
|
||||
|
||||
dma_channel_start(dev->bus->dmaTx->channel);
|
||||
dma_channel_start(dev->bus->dmaRx->channel);
|
||||
#endif
|
||||
}
|
||||
|
||||
// DMA transfer setup and start
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue