STM32
直播中

吕珠峰

9年用户 764经验值
擅长:可编程逻辑
私信 关注
[问答]

读AD7193内部差分通道的数据,出错了的原因?

AD7193相关的设置、读写函数,都是找的AD官网上的函数,然后把SPI通讯部分用IO口模拟SPI实现。
现在读取AD7193内部温度没问题,控制AD7193的GPIO也没问题。
读AD7193内部差分通道的数据,出错了。

主程序初始化部分,设置了AD7193配置,然后while循环里,每1s读取一次。
因为ad7193内部有8个通道或者是4个差分通道(此时用的是差分通道),应该先设置打开通道1,然后读取,分两个命令操作。

现在是如果打开通道1,再读取内部数据寄存器,读取的值是实际值的一半;
如果屏蔽掉打开通道1这个操作,直接读取内部数据寄存器,读取的值是正确的;
后来发现,不光是打开通道1,只要是涉及ad7193的操作,然后再读取寄存器值,读出来的都是实际值的一半。

  • int main(void)
  • {
  •         u32 value_temp;
  •         u8 send_value1, send_value2, send_value3, send_value4;

  •         GPIO_Config();
  •         SPI3_Init();
  •         USART1_Config();
  •         tiM3_Config(9999, 7199);
  •         WriteToADT7310ViaSPI(0x01,0x00);
  •         AD7193_GPIO23_ENABLE(1);

  •         ADG702_Set(1);
  •         AD5160_Set(100);
  •         ADG738_Set(0x02);
  •         AD7193_RangeSetup(1, AD7193_CONF_GAIN_8);
  •         AD7193_ConfigSetup(1, 0);
  •         AD7193_ChannelSelect(AD7193_CH_0);

  •         while(1)
  •         {
  •                 if(flag_1ms == 1)
  •                 {
  •                         flag_1ms = 0;

  •                         AD7193_ChannelSelect(AD7193_CH_0);
  •                         value_temp = AD7193_SingleConversion();
  •                         send_value1 = (value_temp * 502)/(0x1000000);

  •                         usart1_send(0xDD);
  •                         usart1_send(send_value1);
  •                 }
  •         }
  • }



回帖(1)

岳臻俊

2024-5-11 17:11:17
根据您提供的信息,您在使用AD7193时遇到了读取差分通道数据的问题。在这种情况下,可能的原因有以下几点:

1. **通道配置错误**:确保您正确配置了AD7193的通道。在您的代码中,您提到了先设置打开通道1,然后读取。请检查您的配置代码,确保您正确地设置了通道1的差分模式。

2. **SPI通信问题**:虽然您提到SPI通信部分使用IO口模拟SPI实现,但仍然可能存在通信问题。请检查您的SPI通信代码,确保数据正确发送和接收。

3. **时序问题**:在读取AD7193数据时,可能存在时序问题。请检查您的代码,确保在读取数据之前,AD7193有足够的时间完成转换。

4. **初始化问题**:请检查您的初始化代码,确保AD7193正确初始化。这包括设置正确的通道、增益、采样率等参数。

5. **固件问题**:如果以上步骤都无法解决问题,您可能需要检查AD7193的固件。确保您使用的是最新的固件版本,或者尝试使用不同的固件版本。

为了解决这个问题,您可以尝试以下步骤:

1. **检查通道配置**:确保您正确配置了通道1的差分模式。

2. **检查SPI通信**:确保您的SPI通信代码正确发送和接收数据。

3. **检查时序**:确保在读取数据之前,AD7193有足够的时间完成转换。

4. **检查初始化**:确保AD7193正确初始化,包括设置正确的通道、增益、采样率等参数。

5. **尝试不同的固件版本**:如果问题仍然存在,尝试使用不同的固件版本。

6. **查看数据手册**:仔细阅读AD7193的数据手册,确保您遵循了所有必要的步骤和注意事项。


举报

更多回帖

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