|
28 | 28 |
|
29 | 29 | const SPISettings DEFAULT_SPI_SETTINGS = SPISettings(); |
30 | 30 |
|
| 31 | +am_hal_iom_transfer_t iomTransfer = {0}; |
| 32 | + |
31 | 33 | SPIClass::SPIClass(uint8_t iom_instance) : IOMaster(iom_instance) |
32 | 34 | { |
33 | 35 | _duplex = ap3_spi_full_duplex; |
@@ -105,6 +107,15 @@ void SPIClass::begin() |
105 | 107 | } |
106 | 108 |
|
107 | 109 | config(DEFAULT_SPI_SETTINGS); |
| 110 | + |
| 111 | + //Set global's settings that won't change between transfers |
| 112 | + iomTransfer.ui32InstrLen = 0; // No instructions |
| 113 | + iomTransfer.ui32Instr = 0; // No instructions |
| 114 | + iomTransfer.bContinue = false; |
| 115 | + iomTransfer.ui8RepeatCount = 0; // ? |
| 116 | + iomTransfer.ui8Priority = 1; // ? |
| 117 | + iomTransfer.ui32PauseCondition = 0; // ? |
| 118 | + iomTransfer.ui32StatusSetClr = 0; // ? |
108 | 119 | } |
109 | 120 |
|
110 | 121 | void SPIClass::config(SPISettings settings) |
@@ -272,19 +283,9 @@ void SPIClass::transferIn(void *buf, size_t count) |
272 | 283 |
|
273 | 284 | void SPIClass::_transfer(void *buf_out, void *buf_in, size_t count) |
274 | 285 | { |
275 | | - am_hal_iom_transfer_t iomTransfer = {0}; |
276 | | - // iomTransfer.uPeerInfo.ui32SpiChipSelect = cs_pad; |
277 | | - iomTransfer.ui32InstrLen = 0; // No instructions |
278 | | - iomTransfer.ui32Instr = 0; // No instructions |
279 | | - iomTransfer.ui32NumBytes = count; // How many bytes to transfer |
280 | | - // iomTransfer.eDirection = AM_HAL_IOM_TX; // AM_HAL_IOM_FULLDUPLEX - Note: Ambiq SDK says that FULLDUPLEX is not yet supported // todo: |
| 286 | + iomTransfer.ui32NumBytes = count; // How many bytes to transfer |
281 | 287 | iomTransfer.pui32TxBuffer = (uint32_t *)buf_out; // todo: does this have the proper lifetime? |
282 | 288 | iomTransfer.pui32RxBuffer = (uint32_t *)buf_in; |
283 | | - iomTransfer.bContinue = false; |
284 | | - iomTransfer.ui8RepeatCount = 0; // ? |
285 | | - iomTransfer.ui8Priority = 1; // ? |
286 | | - iomTransfer.ui32PauseCondition = 0; // ? |
287 | | - iomTransfer.ui32StatusSetClr = 0; // ? |
288 | 289 |
|
289 | 290 | // Determine direction |
290 | 291 | if ((buf_out != NULL) && (buf_in != NULL)) |
|
0 commit comments