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

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

3天内不再提示

STM32F103控制ad7606采集程序分享

姚小熊27 来源:网络整理 2018-05-21 11:31 次阅读

stm32f103系列性能

1. 速度,跟51和AVR相比,相当快了。

2. 容量,目前能直接购买到512K FLASH的。

3. 管脚,64,100,144等,只可惜,小管脚(少于32腿的),没有

4. RAM, 48K,跟AVR的4K相比,太庞大。

5. 外设,5个USART,2个IIC,2个SPI,USB,等等,常用的都有。

6. 软件,STM有自己的固件库,可加速开发,不用再细看寄存器

ad7606特性

8/6/4路同步采样输入

真双极性模拟输入范围: +10V, +5V

5V单模拟电源,VoRIVE: 2.3V至5V

完全集成的数据采集解决方案

模拟输入箝位保护

具有1 MQ模拟输入阻抗的输入缓冲器

二阶抗混叠模拟滤波器

片内精密基准电压及缓冲

16位、200 kSPSADC (所有通道)

通过数字滤波器提供过采样功能

灵活的并行/串行接口

SPI/QSPI“/MICROWIRE”/DSP兼容性能

模拟输入通道提供7 kV ESD额定值

95.5dB SNR,-107dBTHD

士0.5LSBINL,+0.5LSB DNL

低功耗: 100 mW

待机模式: 25 mW

64引脚LQFP封装

STM32F103控制ad7606采集程序分享

1、配置STM32F103的SPI口

void AD7606_Port_Init(void)

{

GPIO_InitTypeDef GPIO_InitStructure;

SPI_InitTypeDef SPI_InitStructure;

RCC_APB2PeriphClockCmd(AD_SPI_CS_GPIO_CLK | AD_SPI_MISO_GPIO_CLK | AD_SPI_SCK_GPIO_CLK, ENABLE);

RCC_APB1PeriphClockCmd(AD_SPI_CLK, ENABLE);

/////////////////////////SPI_CLK////////////////////////

GPIO_InitStructure.GPIO_Pin = AD_SPI_SCK_PIN;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;

GPIO_Init(AD_SPI_SCK_GPIO_PORT, &GPIO_InitStructure);

/////////////////////////SPI_MISO////////////////////////

GPIO_InitStructure.GPIO_Pin = AD_SPI_MISO_PIN;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;

GPIO_Init(AD_SPI_MISO_GPIO_PORT, &GPIO_InitStructure);

/////////////////////////SPI_CS////////////////////////

GPIO_InitStructure.GPIO_Pin = AD_SPI_CS_PIN;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(AD_SPI_CS_GPIO_PORT, &GPIO_InitStructure);

/////////////////////////SPI_³õʼ»¯////////////////////////

SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;

SPI_InitStructure.SPI_Mode = SPI_Mode_Master;

SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;

SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;

SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;

SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;

SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_32;

SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;

SPI_InitStructure.SPI_CRCPolynomial = 7;

SPI_Init(AD_SPI, &SPI_InitStructure);

SPI_Cmd(AD_SPI, ENABLE);

/////////////////////////AD7606_RESET////////////////////////

RCC_APB2PeriphClockCmd(AD_RESET_GPIO_CLK | AD_CONVT_GPIO_CLK , ENABLE);

GPIO_InitStructure.GPIO_Pin = AD_RESET_PIN;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(AD_RESET_GPIO_PORT, &GPIO_InitStructure);

/////////////////////////AD7606_CONVT////////////////////////

GPIO_InitStructure.GPIO_Pin = AD_CONVT_PIN;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

GPIO_Init(AD_CONVT_GPIO_PORT, &GPIO_InitStructure);

}

2、AD7606复位信号

void AD7606_Reset(void)

{

AD_RESET_LOW();

AD_RESET_HIGH();

AD_RESET_HIGH();

AD_RESET_HIGH();

AD_RESET_HIGH();

AD_RESET_LOW();

}

3、AD7606开始转换信号

void AD7606_StartConvt(void)

{

AD_CONVT_LOW();

AD_CONVT_LOW();

AD_CONVT_LOW();

AD_CONVT_HIGH();

}

4、STM32F103读取AD7606数据

short AD7606_ReadBytes(void)

{

short AD7606_Data = 0;

while (SPI_I2S_GetFlagStatus(AD_SPI, SPI_I2S_FLAG_TXE) == RESET)

{

}

SPI_I2S_SendData(AD_SPI, 0xFFFF);

while (SPI_I2S_GetFlagStatus(AD_SPI, SPI_I2S_FLAG_RXNE) == RESET)

{

}

AD7606_Data = SPI_I2S_ReceiveData(AD_SPI);

return AD7606_Data;

}

5、STM32F103读取AD7606前CS拉低,拉高,重新开始转换

void samp_return(void)

{

int j=0;

AD_SPI_CS_LOW();

for(j=0;j《6;j++)

{

AD7606_Return[j]=AD7606_ReadBytes();

}

AD_SPI_CS_HIGH();

//ads7606_Delay(100);

AD7606_StartConvt();

ads7606_Delay(200);

}

6、数据量转化为模拟量公式

电压=samp_sum_jiaoshudu_return[0]*10.0/32768/(2.5/2.5);//采用正负10电压模拟输入,参考电压2.5V

7、主函数main中初始化AD7606

AD7606_Port_Init();

Adc_Init();

AD7606_Reset();

AD_SPI_CS_HIGH();

AD_CONVT_HIGH();

AD7606_StartConvt();

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

    关注

    33

    文章

    474

    浏览量

    62544
  • AD7606
    +关注

    关注

    5

    文章

    48

    浏览量

    22969
收藏 人收藏

    评论

    相关推荐

    c8051f控制AD7606通道出错

    各位大神,为什么我用c8051f340单片机控制AD7606采集电压,然后通过USB发送给电脑,发现每次每组发到电脑上的都是从第七个通道开始,顺序是第七第八第一第二直到第六,感觉应该
    发表于 11-19 09:33

    请问有用C语言或汇编来控制AD7606采集和读取程序

    由于项目需求,用到贵公司的AD7606芯片进行数据采集,用TI的MSP430F6459作为主控MCU,现在在写AD7606控制程序,但一直
    发表于 01-15 11:40

    AD7606中文资料pdf

    AD7606中文资料,AD7606中文资料,AD7606中文资料
    发表于 12-11 17:19 169次下载

    基于AD7606同步采样ADC的智能电网方案设计

    利用STM32AD7606进行多通道同步采集
    发表于 05-13 14:41 44次下载

    AD7606_SPI例程(STM32F103

    利用STM32F103ZET和AD7606进行同步采集源代码。
    发表于 05-13 14:41 127次下载

    STM32F103芯片FFT程序

    STM32F103芯片使用DSP库进行FFT运算的资料与程序
    发表于 06-07 16:30 108次下载

    stm32f103采集四路ADC并且显示到OLED上程序

    stm32f103采集四路ADC并且显示到OLED上程序
    发表于 01-16 18:07 181次下载

    ad7606stm32连接电路介绍

    本文首先对stm32产品概述及特性进行了介绍,其次介绍了AD7606相关概念,最后介绍了ad7606stm32连接电路图。
    发表于 05-21 11:45 1.8w次阅读
    <b class='flag-5'>ad7606</b>与<b class='flag-5'>stm32</b>连接电路介绍

    利用STM32多种型号和AD7606数据采集的源代码系列资料免费下载

    本文档的主要内容详细介绍的是利用STM32多种型号和AD7606数据采集的源代码系列资料免费下载包括:AD7606 FSMC例程,SPI例程,51单片机例程。
    发表于 10-17 08:00 261次下载

    STM32F103 CAN模板程序

    STM32F103 CAN模板程序
    发表于 11-09 11:08 47次下载
    <b class='flag-5'>STM32F103</b> CAN模板<b class='flag-5'>程序</b>

    AD7606 mbed IIO应用程序

    AD7606 mbed IIO应用程序
    发表于 03-22 13:57 13次下载
    <b class='flag-5'>AD7606</b> mbed IIO应用<b class='flag-5'>程序</b>

    STM32F103点灯程序(寄存器)

    STM32F103点灯程序(寄存器)
    发表于 12-08 17:21 20次下载
    <b class='flag-5'>STM32F103</b>点灯<b class='flag-5'>程序</b>(寄存器)

    基于STM32AD7606的数据采集例程

    基于STM32AD7606的数据采集例程,内涵STM32的。AD7606模组原理图和接线图。
    发表于 12-07 15:36 115次下载

    用于stm32f103 A/D信号采集的处理

    用于stm32f103 A/D信号采集的处理
    发表于 08-01 18:13 3次下载

    ad7606采集数据异常

    在工业自动化领域,AD7606是一种常用的模数转换器(MCU)芯片,用于采集模拟信号并转换为数字信号。然而,有时候在使用AD7606进行数据采集过程中,会出现异常情况。本文将详细探讨
    的头像 发表于 01-08 11:00 1140次阅读