完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
导师让我设计一个基于STM32F407芯片的液压控制器,希望外接一个16位的AD转换器来提高精度,求各位大神如何采集外部16位AD芯片的 16位数据信号
|
|
相关推荐
16个回答
|
|
沙发,哈哈
|
|
|
|
其实可以通过过采样的方式提高分辨率,如果你对速度要求不高,外部16位AD需要看你具体接口,读数据手册吧
|
|
|
|
#include "stm32f10x_lib.h"
#include "main.h" #define AD7606_CS_H() {GPIOB->BSRR = GPIO_Pin_0;} // 置 “1” #define AD7606_CS_L() {GPIOB->BRR = GPIO_Pin_0;} // 置 “0” #define AD7606_CLK_H() {GPIOB->BSRR = GPIO_Pin_13;} #define AD7606_CLK_L() {GPIOB->BRR = GPIO_Pin_13;} #define AD7606_OS0_H() {GPIOE->BSRR = GPIO_Pin_9;} #define AD7606_OS0_L() {GPIOE->BRR = GPIO_Pin_9;} #define AD7606_OS1_H() {GPIOE->BSRR = GPIO_Pin_8;} #define AD7606_OS1_L() {GPIOE->BRR = GPIO_Pin_8;} #define AD7606_OS2_H() {GPIOB->BSRR = GPIO_Pin_2;} #define AD7606_OS2_L() {GPIOB->BRR = GPIO_Pin_2;} #define AD7606_Reset_ON() {GPIOB->BSRR = GPIO_Pin_1;} // ___|ˉˉˉˉˉ (0 -> 1) >= 50ns #define AD7606_Reset_OFF() {GPIOB->BRR = GPIO_Pin_1;} // ˉˉˉˉ|_____ (1 -> 0) #define AD7606_CONVT_ON() {GPIOB->BRR = GPIO_Pin_6;} // ˉˉˉˉ|____ (1 -> 0) 开始转换/脉冲 #define AD7606_CONVT_OFF() {GPIOB->BSRR = GPIO_Pin_6;} // ___|ˉˉˉˉ (0 -> 1) >= 25ns /******************************************************************************* * Function Name : AD7606_Int * Description : ADC7606 Int * Input : None * Output : None * Return : None *******************************************************************************/ void AD7606_Int(void) { AD7606_OS0_L(); AD7606_OS1_L(); AD7606_OS2_L(); // 无过采样 AD7606_CLK_H(); AD7606_Reset_ON(); AD7606_Reset_ON(); AD7606_Reset_ON(); AD7606_Reset_OFF(); AD7606_Reset_OFF(); AD7606_Reset_OFF(); } /******************************************************************************* * Function Name : AD7606_Read * Description : ADC7606 Data Get * Input : None * Output : None * Return : None *******************************************************************************/ void AD7606_Read(void) { u8 i,ii; u16 data; AD7606_CS_L(); AD7606_CONVT_ON(); AD7606_CONVT_OFF(); AD7606_CLK_L(); data=0; while((GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14)) == 0){ // 等待 BUSY 信号变低 for(i=0;i<8;i++){ // 采集8个通道数据,每通道16个脉冲 for(ii=16;ii>0;ii--){ data <<= 1; data |= (GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_5)); AD7606_CLK_H(); AD7606_CLK_H(); AD7606_CLK_L(); AD7606_CLK_L(); } ADC_buf=data; } break; } AD7606_CS_H(); } |
|
|
|
STM32控制AD7606 进行16位数据采集
|
|
|
|
看AD的接口是什么啊
|
|
|
|
得看AD采用的是哪种通信接口,具体看AD数据手册
|
|
|
|
建议用SPI接口的AD芯片。
|
|
|
|
签到!!!
|
|
|
|
經過STM32F407的FSMC介面並列讀ADC效率最高!!可選analog devices的ADC7606系列,可串列,並列控制!!
|
|
|
|
签到,好多内容,谢谢!
|
|
|
|
用ADI的 SPI 接口
|
|
|
|
使用 AD 芯片 比较靠谱!!!
|
|
|
|
楼主解决没
|
|
|
|
|
|
|
|
无回帖,不论坛
|
|
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
1373 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1303 浏览 3 评论
2616 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1450 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1882 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-2 07:18 , Processed in 0.902162 second(s), Total 103, Slave 87 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号