[STM32] 调用ad7193芯片单次采样函数前后,读取其配置寄存器值不...

[复制链接]
 楼主| any012 发表于 2016-3-17 14:44 | 显示全部楼层 |阅读模式
对ad7193芯片设置完后,主循环里每个1秒调用一次单次采样函数。
结果发现读取的数偏小,芯片内部对采样的ad值按8倍增益放大,stm32读取值后再除8再转换成电压值或电阻值。
后发现,内部配置寄存器对应增益放大的值不对。

执行完单次采样后,读配置寄存器值,增益位是正确的。
在单次采样函数调用前,读配置寄存器值,数就不正确了。

  1. while(1)
  2.         {
  3.                 if(flag_1ms == 1)
  4.                 {
  5.                         flag_1ms = 0;

  6.                         value_temp2 = AD7193_GetRegisterValue(AD7193_REG_CONF, 3, 1);
  7.                         value_temp3 = AD7193_GetRegisterValue(AD7193_REG_CONF, 3, 0);

  8.                         value_temp1 = Pt100Measure(1);

  9.                         value_temp4 = AD7193_GetRegisterValue(AD7193_REG_CONF, 3, 1);
  10.                         
  11.                         usart1_send(0xDD);
  12.                         usart1_send(value_temp1 >> 16);
  13.                         usart1_send(value_temp1 >> 8);
  14.                         usart1_send(value_temp1);
  15.                         usart1_send(value_temp2 >> 16);
  16.                         usart1_send(value_temp2 >> 8);
  17.                         usart1_send(value_temp2);
  18.                         usart1_send(value_temp3 >> 16);
  19.                         usart1_send(value_temp3 >> 8);
  20.                         usart1_send(value_temp3);
  21.                         usart1_send(value_temp4 >> 16);
  22.                         usart1_send(value_temp4 >> 8);
  23.                         usart1_send(value_temp4);
  24.                 }

串口接收过来的数据是,第一次是:DD 00 00 77 10 01 1A 10 01 1A 10 01 1B 以后就一直是:                           DD 00 00 3B 10 01 1A 10 01 1A 10 01 1B  

配置寄存器是10 01 1A或10 01 1B,其末三位对应的是增益倍数。B(1011)对应的是放大8倍,A(1010)对应的是保留字。

--------------------------------------------------------------------------------------------------

感觉很奇怪:既然执行完单次采样后,读配置寄存器值,其最后是B,那么这个循环接收后,下一个循环开始的时候,也应该是B啊。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

35

主题

232

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部

35

主题

232

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部