void TM_SPI_WriteMulti16(SPI_TypeDef* SPIx, uint16_t* dataOut, uint32_t count) { /* Check if SPI is enabled */ SPI_CHECK_ENABLED(SPIx); while (count--) { /* Wait busy */ SPI_WAIT_TX(SPIx); /* Fill output buffer with data */ *(__IO uint16_t *)&SPIx->DR = *dataOut++; /* Wait for SPI to end everything */ SPI_WAIT_RX(SPIx); /* Read data register */ (void)*(__IO uint16_t *)&SPIx->DR; } }
void TM_SPI_ReadMulti(SPI_TypeDef* SPIx, uint8_t* dataIn, uint8_t dummy, uint32_t count) { /* Check if SPI is enabled */ SPI_CHECK_ENABLED(SPIx); while (count--) { /* Wait busy */ SPI_WAIT_TX(SPIx); /* Fill output buffer with data */ *(__IO uint8_t *)&SPIx->DR = dummy; /* Wait for SPI to end everything */ SPI_WAIT_RX(SPIx); /* Save data to buffer */ *dataIn++ = *(__IO uint8_t *)&SPIx->DR; } }
void TM_SPI_ReadMulti16(SPI_TypeDef* SPIx, uint16_t* dataIn, uint16_t dummy, uint32_t count) { uint32_t i; /* Check if SPI is enabled */ SPI_CHECK_ENABLED(SPIx); /* Wait for previous transmissions to complete if DMA TX enabled for SPI */ SPI_WAIT(SPIx); for (i = 0; i < count; i++) { /* Fill output buffer with data */ SPIx->DR = dummy; /* Wait for SPI to end everything */ SPI_WAIT(SPIx); /* Save data to buffer */ dataIn[i] = SPIx->DR; } }
void TM_SPI_WriteMulti16(SPI_TypeDef* SPIx, uint16_t* dataOut, uint32_t count) { uint32_t i; /* Check if SPI is enabled */ SPI_CHECK_ENABLED(SPIx); /* Wait for previous transmissions to complete if DMA TX enabled for SPI */ SPI_WAIT(SPIx); for (i = 0; i < count; i++) { /* Fill output buffer with data */ SPIx->DR = dataOut[i]; /* Wait for SPI to end everything */ SPI_WAIT(SPIx); /* Read data register */ (void)SPIx->DR; } }
void TM_SPI_ReadMulti16(SPI_TypeDef* SPIx, uint16_t* dataIn, uint16_t dummy, uint32_t count) { /* Check if SPI is enabled */ SPI_CHECK_ENABLED(SPIx); /* Wait for previous transmissions to complete if DMA TX enabled for SPI */ SPI_WAIT_TX(SPIx); while (count--) { /* Wait busy */ SPI_WAIT_TX(SPIx); /* Fill output buffer with data */ SPIx->DR = dummy; /* Wait for SPI to end everything */ SPI_WAIT_RX(SPIx); /* Save data to buffer */ *dataIn++ = SPIx->DR; } }
void SPI_SendMulti(SPI_TypeDef* SPIx, uint8_t* dataOut, uint8_t* dataIn, uint32_t count) { uint32_t i; /* Check if SPI is enabled */ SPI_CHECK_ENABLED(SPIx); /* Wait for previous transmissions to complete if DMA TX enabled for SPI */ SPI_WAIT(SPIx); for (i = 0; i < count; i++) { /* Fill output buffer with data */ //SPIx->DR = dataOut[i]; SPI_SendData8(SPIx, dataOut[i]); /* Wait for SPI to end everything */ SPI_WAIT(SPIx); /* Read data register */ //dataIn[i] = SPIx->DR; dataIn[i] = SPI_ReceiveData8(SPIx); } }