Post Go back to editing

AD9251利用STM32进行配置,无法进行读取,读取到的寄存器数据都是0x3F

Category: Hardware
Product Number: AD9251

以器件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]

Thread Notes

Parents
  • 更改上电顺序后,在测试模式下可以满足对应的输出,说明关于寄存器0x0D的写入是有效的,可以观察到1/0位交替、一位高电平和混频,说明写入的程序是有意义的

    在其他问题下面注意到写完一个寄存器后要用传输寄存器0xff=1,确实也这样做了

    但是,读取仍旧存在问题,读取0x01和0x02依旧是3f

    读取0x14和0x0b数据正确,但更改0x14的数据后,读取到的依旧是3F

  • 这个问题是怎么解决的?我现在遇到的是寄存器写入进去了,但是读取出来有问题,读取ID寄存器的时候回复0x3f

Reply Children
No Data