程序如下:使用
STM32 HAL库
uint8_t SPI_ADIS16209_Sendbyte(uint8_t byte)
{
uint8_t d_read,d_send = byte;
if(HAL_SPI_TransmitReceive( hspi1, d_send, d_read,1,1000)!=HAL_OK)
d_read = Dummy_Byte;
return d_read;
}
uint8_t Read_ADIS16209_Data(uint8_t Dst,uint8_t *RcvBuf)
{
uint8_t i = 0;
CLR_CS();
__nop();__nop();__nop();__nop();
SPI_ADIS16209_Sendbyte(Dst 0x3f);
SPI_ADIS16209_Sendbyte(0X00);
SET_CS();
for(i=1;i>0;i--);
CLR_CS();
for(i=0;i<2;i++)
{
RcvBuf[i] = SPI_ADIS16209_Sendbyte(0x00);
}
SET_CS();
for(i=1;i>0;i--);
return 1;
}
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_SPI1_Init();
__HAL_SPI_ENABLE( hspi1);
while (1)
{
Read_ADIS16209_Data(XINCL_OUT,XINCL_OUT_DATA);
HAL_Delay(10);
Read_ADIS16209_Data(YINCL_OUT,YINCL_OUT_DATA);
HAL_Delay(10);
Read_ADIS16209_Data(ROT_OUT,ROT_OUT_DATA);
HAL_Delay(10);
}
}
以下是模拟SPI
通信程序:
void WriteToADIS16209ViaSpi(unsigned char RegisterAddress, unsigned char NumberofRegisters, unsigned char *RegisterData)
{
unsigned char ControlValue = 0;
unsigned int ValueToWrite = 0;
unsigned char RegisterIndex = 0;
unsigned char i = 0;
for(RegisterIndex=0; RegisterIndex