/*
*********************************************************************************************************
* 函 數 名: ADXL355_SPI_Write
* 功能說明: 通過STM32的硬件SPI向ADXL355中寫入數據、命令、寄存器地址
* 形 參: address - ACC register address
Data - value to be written in 1 register write
Data2 - 2nd value to be written in 2 register write
enWriteData - write mode
* 返 回 值: 無
* 備 注:
*********************************************************************************************************
*/
void ADXL355_SPI_Write(uint8_t address, uint8_t Data, uint8_t Data2, enWriteData enMode)
{
uint8_t writeAddress;
writeAddress = ((address <<1)|ADXL355_WRITE);
if(enMode == SPI_WRITE_ONE_REG)
{
CS_ADXL355_LOW;
/* Send register address */
while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE) != SET);
SPI_I2S_SendData(SPI2,writeAddress);
/** Wait until received */
while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE) != SET);
SPI_I2S_ReceiveData(SPI2);
/* Send value to be written */
SPI_I2S_SendData(SPI2,Data);
/** Wait until received */
while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE) != SET);
SPI_I2S_ReceiveData(SPI2);
Delay_us(2);
CS_ADXL355_HIGH;
}
if(enMode == SPI_WRITE_TWO_REG)
{
CS_ADXL355_LOW;
/* Send register address */
while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE) != SET);
SPI_I2S_SendData(SPI2,writeAddress);
/** Wait until received */
while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE) != SET);
SPI_I2S_ReceiveData(SPI2);
/* Send 1st value to be written */
SPI_I2S_SendData(SPI2,Data);
/** Wait until received */
while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE) != SET);
SPI_I2S_ReceiveData(SPI2);
/* Send 2nd value to be written */
SPI_I2S_SendData(SPI2,Data2);
/** Wait until received */
while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE) != SET);
SPI_I2S_ReceiveData(SPI2);
Delay_us(2);
CS_ADXL355_HIGH;
}
}