以器件ID寄存器为例,采用以下函数进行读取数据,无法读到正确的数据。采用STM32F103C8T6芯片作为控制器,硬件电路的电平转换参考了AD9251的评估版。
读取寄存器对应的函数
uint8_t ReadToAD9269_reg(uint16_t reg_addr )
{
// uint16_t data_temp=reg_addr|0x8000;
uint8_t reg_data=0x00;
AD9269_LE_1();
__NOP();
AD9269_CLK_0();
AD9269_LE_0();
AD9269_write_byte(0X80);
AD9269_write_byte(reg_addr);
AD9269_CLK_0();
AD9269_DATA_read();//GPIO读
for(int i=0;i<8;i++)
{
AD9269_CLK_1();
if(AD9269_R_SDO()==1)
reg_data|= (0x80 >> i);
AD9269_CLK_0();
}
AD9269_CLK_0();
AD9269_LE_1();
return reg_data;
}
以下是逻辑分析仪对应读寄存器对应的时序分析

以下是写寄存器对应的部分时序

Edit Notes
修改型号[edited by: ewgiy at 12:15 PM (GMT -5) on 31 Dec 2024]