@@ -350,10 +350,10 @@ void SPIClass::write(uint16 data, uint32 n)
350
350
while ( (regs->SR & SPI_SR_BSY) != 0 ); // wait until BSY=0 before returning
351
351
}
352
352
353
- void SPIClass::write (void *data, uint32 length)
353
+ void SPIClass::write (const void *data, uint32 length)
354
354
{
355
355
spi_dev * spi_d = _currentSetting->spi_d ;
356
- spi_tx (spi_d, ( void *) data, length); // data can be array of bytes or words
356
+ spi_tx (spi_d, data, length); // data can be array of bytes or words
357
357
while (spi_is_tx_empty (spi_d) == 0 ); // "5. Wait until TXE=1 ..."
358
358
while (spi_is_busy (spi_d) != 0 ); // "... and then wait until BSY=0 before disabling the SPI."
359
359
}
@@ -391,7 +391,7 @@ uint16_t SPIClass::transfer16(uint16_t data) const
391
391
* On exit TX buffer is not modified, and RX buffer cotains the received data.
392
392
* Still in progress.
393
393
*/
394
- void SPIClass::dmaTransferSet (void *transmitBuf, void *receiveBuf) {
394
+ void SPIClass::dmaTransferSet (const void *transmitBuf, void *receiveBuf) {
395
395
dma_init (_currentSetting->spiDmaDev );
396
396
// spi_rx_dma_enable(_currentSetting->spi_d);
397
397
// spi_tx_dma_enable(_currentSetting->spi_d);
@@ -401,11 +401,11 @@ void SPIClass::dmaTransferSet(void *transmitBuf, void *receiveBuf) {
401
401
if (!transmitBuf) {
402
402
transmitBuf = &ff;
403
403
dma_setup_transfer (_currentSetting->spiDmaDev , _currentSetting->spiTxDmaChannel , &_currentSetting->spi_d ->regs ->DR , dma_bit_size,
404
- transmitBuf, dma_bit_size, (DMA_FROM_MEM));// Transmit FF repeatedly
404
+ ( volatile void *) transmitBuf, dma_bit_size, (DMA_FROM_MEM));// Transmit FF repeatedly
405
405
}
406
406
else {
407
407
dma_setup_transfer (_currentSetting->spiDmaDev , _currentSetting->spiTxDmaChannel , &_currentSetting->spi_d ->regs ->DR , dma_bit_size,
408
- transmitBuf, dma_bit_size, (DMA_MINC_MODE | DMA_FROM_MEM ));// Transmit buffer DMA
408
+ ( volatile void *) transmitBuf, dma_bit_size, (DMA_MINC_MODE | DMA_FROM_MEM ));// Transmit buffer DMA
409
409
}
410
410
dma_set_priority (_currentSetting->spiDmaDev , _currentSetting->spiTxDmaChannel , DMA_PRIORITY_LOW);
411
411
dma_set_priority (_currentSetting->spiDmaDev , _currentSetting->spiRxDmaChannel , DMA_PRIORITY_VERY_HIGH);
@@ -451,7 +451,7 @@ uint8 SPIClass::dmaTransferRepeat(uint16 length) {
451
451
* Still in progress.
452
452
*/
453
453
454
- uint8 SPIClass::dmaTransfer (void *transmitBuf, void *receiveBuf, uint16 length) {
454
+ uint8 SPIClass::dmaTransfer (const void *transmitBuf, void *receiveBuf, uint16 length) {
455
455
dmaTransferSet (transmitBuf, receiveBuf);
456
456
return dmaTransferRepeat (length);
457
457
}
@@ -463,12 +463,12 @@ uint8 SPIClass::dmaTransfer(void *transmitBuf, void *receiveBuf, uint16 length)
463
463
* 2016 - stevstrong - reworked to automatically detect bit size from SPI setting
464
464
*/
465
465
466
- void SPIClass::dmaSendSet (void * transmitBuf, bool minc) {
466
+ void SPIClass::dmaSendSet (const void * transmitBuf, bool minc) {
467
467
uint32 flags = ( (DMA_MINC_MODE*minc) | DMA_FROM_MEM | DMA_TRNS_CMPLT);
468
468
dma_init (_currentSetting->spiDmaDev );
469
469
dma_xfer_size dma_bit_size = (_currentSetting->dataSize ==DATA_SIZE_16BIT) ? DMA_SIZE_16BITS : DMA_SIZE_8BITS;
470
470
dma_setup_transfer (_currentSetting->spiDmaDev , _currentSetting->spiTxDmaChannel , &_currentSetting->spi_d ->regs ->DR , dma_bit_size,
471
- transmitBuf, dma_bit_size, flags);// Transmit buffer DMA
471
+ ( volatile void *) transmitBuf, dma_bit_size, flags);// Transmit buffer DMA
472
472
dma_set_priority (_currentSetting->spiDmaDev , _currentSetting->spiTxDmaChannel , DMA_PRIORITY_LOW);
473
473
}
474
474
@@ -498,12 +498,12 @@ uint8 SPIClass::dmaSendRepeat(uint16 length) {
498
498
return b;
499
499
}
500
500
501
- uint8 SPIClass::dmaSend (void * transmitBuf, uint16 length, bool minc) {
501
+ uint8 SPIClass::dmaSend (const void * transmitBuf, uint16 length, bool minc) {
502
502
dmaSendSet (transmitBuf, minc);
503
503
return dmaSendRepeat (length);
504
504
}
505
505
506
- uint8 SPIClass::dmaSendAsync (void * transmitBuf, uint16 length, bool minc) {
506
+ uint8 SPIClass::dmaSendAsync (const void * transmitBuf, uint16 length, bool minc) {
507
507
uint8 b = 0 ;
508
508
509
509
if (_currentSetting->state != SPI_STATE_READY)
@@ -529,7 +529,7 @@ uint8 SPIClass::dmaSendAsync(void * transmitBuf, uint16 length, bool minc) {
529
529
// TX
530
530
dma_xfer_size dma_bit_size = (_currentSetting->dataSize ==DATA_SIZE_16BIT) ? DMA_SIZE_16BITS : DMA_SIZE_8BITS;
531
531
dma_setup_transfer (_currentSetting->spiDmaDev , _currentSetting->spiTxDmaChannel , &_currentSetting->spi_d ->regs ->DR , dma_bit_size,
532
- transmitBuf, dma_bit_size, flags);// Transmit buffer DMA
532
+ ( volatile void *) transmitBuf, dma_bit_size, flags);// Transmit buffer DMA
533
533
dma_set_num_transfers (_currentSetting->spiDmaDev , _currentSetting->spiTxDmaChannel , length);
534
534
dma_clear_isr_bits (_currentSetting->spiDmaDev , _currentSetting->spiTxDmaChannel );
535
535
dma_enable (_currentSetting->spiDmaDev , _currentSetting->spiTxDmaChannel );// enable transmit
0 commit comments