AD7175-2使用问题记录

1.STM32 SPI接口配置

使用SPI前先了解下SPI协议:

http://bbs.chinaunix.net/thread-1916003-1-1.html

    GPIO_InitTypeDef GPIO_InitStruct;
    SPI_InitTypeDef SPI_InitStruct;

    /*使能GPIOB, SPI2时钟*/
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE);

    /*sck  miso  mosi*/
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_10MHz;
    GPIO_Init(GPIOB, &GPIO_InitStruct);

    /*配置cs为开漏输出*/
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_12;
    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_2MHz;
    GPIO_Init(GPIOB, &GPIO_InitStruct);
    GPIO_SetBits(GPIOB, GPIO_Pin_12);

    SPI_InitStruct.SPI_Mode = SPI_Mode_Master;
    SPI_InitStruct.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
    SPI_InitStruct.SPI_CRCPolynomial = 7;
    SPI_InitStruct.SPI_DataSize = SPI_DataSize_8b;
    SPI_InitStruct.SPI_NSS = SPI_NSS_Soft;
    SPI_InitStruct.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;/**/
    SPI_InitStruct.SPI_FirstBit = SPI_FirstBit_MSB;
    SPI_InitStruct.SPI_CPOL = SPI_CPOL_High;/*此处根据AD7175-2数据手册进行配置*/
    SPI_InitStruct.SPI_CPHA = SPI_CPHA_2Edge;
    SPI_Init(SPI2, &SPI_InitStruct);
    SPI_Cmd(SPI2, ENABLE);

我在使用时发现NSS位不能被SSI赋值,因此只能手动进行CS(片选)的开关操作。

2.如何使用该芯片的单端输入模式

从上图中可以看出,要使用单端方式,必须从5个输入口中选用一个作为公共点并将其作为通道的一个输入,以公共点的电压作为偏置电压。

如果调试过程中出现满量程错误(数据寄存器中为0xFFFFFF)或欠量程错误(数据寄存器中为0x000000),那么就要检查下通道寄存器的两个输入口相对电压是否正确。我在将AIN0接到0V时,显示欠量程错误;接到5V显示满量程错误,不晓得为什么。

3.单极性和双极性

例:AIN4接2.5V的电压,参考电压选用内部的2.5V,AIN0接外部模拟输入。变量voltage为计算所得电压,value为数据寄存器中的值。

单极性的计算公式为

/*第一个2.5为偏置电压,第二个2.5为参考电压.*/
voltage = 2.5 + value * 2.5 / 0xFFFFFF;</span>
双极性(偏移二进制)计算公式

/*第一个2.5为偏置电压,第二个2.5为参考电压.*/
if(ad_id & 0x800000)
{
       voltege = 2.5 + (value^0x800000) * 2.5 / 0x7fffff;/*异或是在做补码计算*/
}
else
{
       voltage = 2.5 - ((value^0x7FFFFF) + 1) *2.5 / 0x7fffff;
}/*注意"+"的优先级高于"^"*/</span>


  • 6
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
AD5940是一款功能强大的电流-电压转换器,适用于传感器的接口和测量应用。下面是AD5940的使用教程。 首先,我们需要准备AD5940的硬件连接。将AD5940与其他外部元件如传感器和电源等连接。确保电源连接正确,并为AD5940提供适当的电压。 接下来,我们需要编写AD5940的控制软件。AD5940的控制软件可以使用AD5940提供的软件开发套件进行开发。在软件开发套件中,提供了一些预定义的函数和库以帮助我们开发控制软件。我们可以根据自己的需求调用这些函数和库,并编写控制软件的逻辑。 然后,我们需要配置AD5940的寄存器。AD5940提供了多个寄存器,用于控制AD5940的不同功能和特性。我们可以使用软件开发套件提供的函数来配置寄存器的值。根据我们的需求,配置适当的寄存器值以实现所需的功能和特性。 接着,我们可以使用AD5940进行测量。AD5940支持多种测量模式,如电压测量、电流测量和阻抗测量等。我们可以调用适当的函数来启动所需的测量模式,并获取测量结果。在测量过程中,我们可以监控和调整AD5940的工作状态,确保获取准确可靠的测量结果。 最后,我们需要对AD5940进行后续处理。根据测量结果,我们可以进行数据分析、显示或记录等操作。根据具体的应用,我们可以使用适当的算法和工具对数据进行处理,以满足我们的需求。 综上所述,AD5940的使用包括硬件连接、控制软件编写、寄存器配置、测量和数据处理等步骤。了解和掌握AD5940的使用教程,可以帮助我们更好地应用这款强大的电流-电压转换器,实现各种传感器接口和测量应用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值