From df737bb92e7ff5f5c7495c06d0e231338805a86c Mon Sep 17 00:00:00 2001 From: guanjiao <sqrgj@163.com> Date: 星期三, 16 五月 2018 23:19:20 +0800 Subject: [PATCH] 从工程中删除platform中相关文件 --- 源码/核心板/Src/OnChipDevices/Spi.c | 104 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 104 insertions(+), 0 deletions(-) diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Spi.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Spi.c" index 04ee781..c2e4ab4 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Spi.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/OnChipDevices/Spi.c" @@ -71,3 +71,107 @@ /* Write to SPIx CR1 */ SPIx->CR1 = tmpreg; } + +/*! ------------------------------------------------------------------------------------------------------------------ + * Function: writetospi() + * + * Low level abstract function to write to the SPI + * Takes two separate byte buffers for write header and write data + * returns 0 for success, or -1 for error + */ +int writetospi_serial +( + uint16_t headerLength, + const uint8_t *headerBuffer, + uint32_t bodylength, + const uint8_t *bodyBuffer +) +{ + + int i = 0; + + decaIrqStatus_t stat ; + + stat = decamutexon() ; + + SPIx_CS_GPIO->BRR = SPIx_CS; + + for(i = 0; i < headerLength; i++) + { + SPIx->DR = headerBuffer[i]; + + while ((SPIx->SR & SPI_I2S_FLAG_RXNE) == (uint16_t)RESET); + + SPIx->DR ; + } + + for(i = 0; i < bodylength; i++) + { + SPIx->DR = bodyBuffer[i]; + + while((SPIx->SR & SPI_I2S_FLAG_RXNE) == (uint16_t)RESET); + + SPIx->DR ; + } + + SPIx_CS_GPIO->BSRR = SPIx_CS; + + decamutexoff(stat) ; + + return 0; +} // end writetospi() + + +/*! ------------------------------------------------------------------------------------------------------------------ + * Function: readfromspi() + * + * Low level abstract function to read from the SPI + * Takes two separate byte buffers for write header and read data + * returns the offset into read buffer where first byte of read data may be found, + * or returns -1 if there was an error + */ +int readfromspi_serial +( + uint16_t headerLength, + const uint8_t *headerBuffer, + uint32_t readlength, + uint8_t *readBuffer +) +{ + + int i = 0; + + decaIrqStatus_t stat ; + + stat = decamutexon() ; + + /* Wait for SPIx Tx buffer empty */ + //while (port_SPIx_busy_sending()); + + SPIx_CS_GPIO->BRR = SPIx_CS; + + for(i = 0; i < headerLength; i++) + { + SPIx->DR = headerBuffer[i]; + + while((SPIx->SR & SPI_I2S_FLAG_RXNE) == (uint16_t)RESET); + + readBuffer[0] = SPIx->DR ; // Dummy read as we write the header + } + + for(i = 0; i < readlength; i++) + { + SPIx->DR = 0; // Dummy write as we read the message body + + while((SPIx->SR & SPI_I2S_FLAG_RXNE) == (uint16_t)RESET); + + readBuffer[i] = SPIx->DR ;//port_SPIx_receive_data(); //this clears RXNE bit + } + + SPIx_CS_GPIO->BSRR = SPIx_CS; + + decamutexoff(stat) ; + + return 0; +} // end readfromspi() + -- Gitblit v1.9.3