ADI 技术
直播中

张娟

7年用户 1993经验值
私信 关注
[问答]

请问stm32单片机的fsmc经过分压网络连接到官网ad7760模块,进行数据读取,为什么读取出来的是刚刚写入的地址值呢?

使用STM32单片机的fsmc经过分压网络连接到官网ad7760模块,进行数据读取,为什么读取出来的是刚刚写入的地址值呢?
u16 w,regl = 0;
AD7760_Reset();
AD7760_Write(CTRL_REG2, 0x0007);
AD7760_Write(CTRL_REG1, 0x401d);

  delay_us(10);
regl = AD7760_Read(OVERRANGE_REG);

要读取超量程放大器的值,为什么读出来是超量程寄存器的地址值0x00005呢?读取函数为
unsigned short AD7760_Read(unsigned short Reg)
{
  unsigned short Reg_Data;
  *(__IO uint16_t *) (Bank1_ADDRESSw) = Reg;
  delay_ns(15);
  Reg_Data = *(__IO uint16_t *) (Bank1_ADDRESSw);
  return Reg_Data;
}

回帖(2)

丁浩

2018-7-30 09:57:24
读函数改为这个,试一下:
unsigned short AD7760_Read(unsigned short Reg)
{
  unsigned short Reg_Data;
  Reg_Data = *(__IO uint16_t *) (Bank1_ADDRESSw);
  return Reg_Data;
}
举报

张娟

2018-7-30 10:14:28
引用: jdjfuwegs 发表于 2018-7-30 09:57
读函数改为这个,试一下:
unsigned short AD7760_Read(unsigned short Reg)
{

void AD7760_Write(unsigned short Reg, unsigned short Reg_Data)
{
  u16 i;
  *(__IO uint16_t *) (Bank1_ADDRESSw)= Reg;
   delay_us(5);
   //__NOP;__NOP;__NOP;__NOP;__NOP;__NOP;
  *(__IO uint16_t *) (Bank1_ADDRESSw)= Reg_Data;
 
}这是写函数,这样可以吗?
举报

更多回帖

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