传感技术
直播中

万航渡路

9年用户 1409经验值
擅长:电源/新能源
私信 关注
[问答]

ADIS16209使用STM32内部SPI通信读不出数据怎么解决?

程序如下:使用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

更多回帖

发帖
×
20
完善资料,
赚取积分