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
    +关注

    关注

    30

    文章

    452

    浏览量

    61702
  • AD7606
    +关注

    关注

    5

    文章

    44

    浏览量

    22821
收藏 人收藏

    评论

    相关推荐

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

    AD7606芯片进行数据采集,用TI的MSP430F6459作为主控MCU,现在在写AD7606控制程序,但一直程序写不出来,菜鸟一枚。网上的程序例子都是FPGA或者
    发表于 01-15 11:40

    基于stm32f103的数据采集

    stm32f103的数据采集,将0-3.3v的电压转换成数字量
    发表于 05-06 16:43 45次下载

    AD7606_SPI例程(STM32F103

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

    AD7606_SPI例程(STM32F407)

    STM32F407和AD7606数据采集的源代码。
    发表于 05-13 14:41 181次下载

    STM32F103芯片FFT程序

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

    STM32F103使用总结

    STM32F103使用总结
    发表于 10-24 10:22 140次下载

    stm32f103移植

    stm32f103移植
    发表于 10-27 09:03 40次下载
    <b>stm32f103</b>移植

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

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

    使用STM32F103单片机采集16路ADC的工程文件和程序免费下载

    STM32F103单片机采集16路ADC的工程文件和程序免费下载。
    发表于 09-26 08:00 15次下载
    使用<b>STM32F103</b>单片机<b>采集</b>16路ADC的工程文件和<b>程序</b>免费下载

    STM32F103 CAN模板程序

    STM32F103 CAN模板
    发表于 11-09 11:08 40次下载
    <b>STM32F103</b> CAN模板<b>程序</b>

    基于STM32f103的FFT频率测试程序下载

    STM32f103的FFT频率测试程序下载
    发表于 08-02 10:07 150次下载

    GD32F103STM32F103的区别 2021.6.2

    F103STM32F103区别介绍关键词Key words:GD32F103STM32F103摘要Abstract:本文主要是GD32F103STM32F103区别进行介绍。目录简介
    发表于 12-08 11:06 76次下载
    GD32<b>F103</b>与<b>STM32F103</b>的区别 2021.6.2

    基于STM32F103的DAC8411驱动程序

    STM32F103的DAC8411驱动程序,亲测可用,欢迎大家一起交流
    发表于 08-28 11:21 4次下载

    基于STM32AD7606的数据采集例程

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

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

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