0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

关于stm32的ad7792移植难题排解

GReq_mcu168 来源:互联网 作者:佚名 2017-11-06 18:37 次阅读

转换原理及参数指标

1. 采样定理

2. 为了正确无误的用图5.2.2中所示的采样信号vs表示模拟信号vi,必须满足式中, fs>=2fmax

fs为采样频率;fmax为输入信号vi的最高频率分量的频率;上式就是所谓的采样定理。满足采样定理的条件下,可以用一个低通滤波器将信号vs还原为vi,这个低通滤波器的电压传输系数|A(f)|在低于fmax的范围内应保持不变,而在fs-fmax以前应迅速下降为零,采样定理规定了A/D转换的频率下限。

AD7792 遇到的问题/学到的知识点

学到的知识点:

1.stm32

U8 unsigned char

U16 unsigned short

U32 unsigned int

2. stm32 AD7792采样的电压数值要经过转换成ASCII码字符在串口中打印出来有两种编程方式实现:

u8TempD;

u16 Datau16;

char str[20];

unsigned short iData[3];

u8 Strvbat[8]={'/','/','/',',',0,0,0,0};

u8 ASCII[21]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','+',//10->16

',',//11-17

'-',//12-18

'.',//13-19

'/',//14-20

};

方式一:(简洁版)

AD_VBat[TempD] = SPI_Read16Bit();

memcpy(&iData[0],& AD_VBat[TempD],2);

sprintf(str,"%d",iData[0]);

UART1_TX485_Puts(USART1,&str[0]);

方式二:(复杂版)

AD_VBat[TempD] = SPI_Read16Bit();

Datau16 = AD_VBat[TempD];

Strvbat[0]=ASCII[Datau16/10000];

Strvbat[1]=ASCII[Datau16%10000/1000];

Strvbat[2]=ASCII[Datau16%1000/100];

Strvbat[3]=ASCII[Datau16%100/10];

Strvbat[4]=ASCII[Datau16%10];

UART1_TX485_Puts(USART1,&Strvbat[0]);

while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);

3.遇到的问题

问题一:通过串口打印,采样的数值为32768左右转化后的电池电压为2.5V,而电池实际电压应该为3.32v采样数值应该为43582左右的数值;

问题根源:通道切换的问题;

AD77923模拟输入通道,初始化AD7792配置函数中,写配置寄存器SPI_SendByte(0x10); /* 写配置寄存器*/

SPI_Send16Bit(0x1080); // 偏置电压禁用禁用熔断电流单极性编码内部基准

SPI_Send16Bit(0x1080)设置的采样通道是采样电流的通道,所以采样的是电流的数值;

题二:在移植AD7792独立出来时,发现电池电压采样值打印为0000;

问题根源:SPI配置问题;

原理图:

错误配置:

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_7 ;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //复用推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入

GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽输出

GPIO_Init(GPIOA, &GPIO_InitStructure);

正确配置:

/* Configure SPI1 pins: SCK, MISO and MOSI */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_4|GPIO_Pin_7;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //通用推挽输出

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

/* 配置MISO为输入 */

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; //浮空输入

GPIO_Init(GPIOA, &GPIO_InitStructure);

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

原文标题:STM32菜鸟成长记录---AD7792遇到的问题

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    请教有用过AD7792测温PT100

    我用AD7792测PT100的温度 时,读到的PT100的电阻在室温下电阻值尽然有130多,明显不对,可又不知道错在那,那位大侠做过,可以给个提示吗
    发表于 08-13 17:43

    STM32菜鸟成长记录---AD7792遇到的问题

    为零,采样定理规定了A/D转换的频率下限。AD7792 遇到的问题/学到的知识点学到的知识点:1.在stm32中U8 : unsignedcharU16: unsignedshortU32
    发表于 03-24 11:07

    AD7792尝试AD转换读取的转换结果一直是(0xff,0xff)

    请大家帮忙回答一点关于AD7792使用中的一些疑问。应用场景:radxa rock pro开发板,Python脚本语言,Python库由radxa公司提供。现在的问题是:1)按照ad7792
    发表于 12-25 09:32

    AD7792转换结果波动大

    使用AD7792进行模数转换,AD7792以SPI模式与STM32连接,使用通道一进行转换,但输出结果上下波动超过10mV。已进行的错误排除: 1、使用万用表测量AD7792通道一电压
    发表于 01-17 02:55

    AD7792测温测出来的值一直为0

    AD7792测四线制铂电阻,但是测出来的值一直为0,有没有哪位大佬帮忙看看哪里有问题,谢谢ResetTime=32; CLK_H; CS_L; MOSI_H; while(ResetTime--
    发表于 04-07 12:21

    AD7792的两路激励电流源同时输出不相等的原因?

    采用AD7792做三线制的PT100方案,激励电流设置210uA,根据比率式方法来计算电阻,测试发现Iout1不等于Iout2,由此引起比较大的测量误差。 后来更换了几个AD7792,发现有些可以做到Iout1等于Iout2,请问是该片子是本身就有这种现象吗?存在个体差异
    发表于 12-04 07:06

    求助,关于AD7792偏置电压发生器设置的问题

    您好,我使用AD7792测量差分信号,外参考电压为2.5V,差分输入电压10mv,共模0V左右,AD无法准确测量出此差分电压,后阅读手册发现可以设置偏置电压发生器使能,从而提高共模电压
    发表于 12-06 07:42

    AD7792做了个一个热电偶测温模块,无规律的出现AD7792损坏是怎么回事?

    AD7792做了个一个热电偶测温模块,最近小批量使用了几百个,无规律的出现AD7792损坏,损坏后的芯片读取芯片ID值为0x48,正常的为0x4A。 每个通道都进行了防静电保护,采用ADUM1401,光耦和隔离电源与单片机进行隔离,复用芯片ADG707。
    发表于 12-08 07:55

    AD7792/AD7793,pdf datasheet (A

    The AD7792/AD7793 are low power, low noise, complete analog front ends for high precision
    发表于 09-09 10:24 38次下载

    AD7792/ad7793三通道的低噪声低功耗16/24位ADC对放大器和基准芯片

    The AD7792/AD7793 are low power, low noise, complete analog front ends for high precision measurement applications.
    发表于 10-01 12:15 18次下载
    <b class='flag-5'>AD7792</b>/ad7793三通道的低噪声低功耗16/24位ADC对放大器和基准芯片

    AD7792参考代码

    AD7792参考代码
    发表于 03-18 09:41 13次下载
    <b class='flag-5'>AD7792</b>参考代码

    AD7792/AD7793:3通道、低噪声、低功耗、16/24位Σ-ΔADC内置片内仪表放大器和基准电压源 数据手册

    AD7792/AD7793:3通道、低噪声、低功耗、16/24位Σ-ΔADC内置片内仪表放大器和基准电压源 数据手册
    发表于 03-20 17:57 14次下载
    <b class='flag-5'>AD7792</b>/AD7793:3通道、低噪声、低功耗、16/24位Σ-ΔADC内置片内仪表放大器和基准电压源 数据手册

    EVAD7792 AD7792 评估板

    EVAL-AD7792EBZ是用于AD7792的全功能评估板。该评估板可通过标准的USB接口连接到PC。用户通过随附的软件可以对ADC的性能执行详尽分析。请注意:该评估软件无法在Windows 8或Windows 10上运行(USB驱动程序不兼容Windows 7以上版本
    发表于 05-29 08:46 11次下载
    EVAD<b class='flag-5'>7792</b> <b class='flag-5'>AD7792</b> 评估板

    AD7792评估软件

    AD7792评估软件
    发表于 06-06 17:26 1次下载
    <b class='flag-5'>AD7792</b>评估软件

    低功耗模数转换器AD7792/AD7793数据手册

    低功耗模数转换器AD7792/AD7793数据手册
    发表于 07-16 14:57 11次下载