DT35是一种常用的激光探测仪,它不仅测量快捷,准确,并且具有优异的抗环境光干扰性能,而ADS转换器则是数模转换器,本文主要讨论的是ADS的粗略原理及其在stm32中的应用。

ADS8320原理

ADS8320是一种串行16位A/D转换器,DT50的板子上有AD采样模块,AD转换主要通过ADS8320芯片来实现的,下图为其内部结构:

三个主要符号说明如下(其他的不必关心):

DOUT: A/D转换的数字结果串行输出端

Dclock:时钟输入端

CS/SHDN:片选/关断控制端

这里面CS/SHDN主要控制ADS8320是否工作,Dclock提供外部时钟,DOUT输出结果。

图中的串行接口电路就是我们说的SPI(串行外设接口)。我们要注意一下工作过程中各个引脚的状态。

首先CS/SHDN由高阻态变为低阻态时,ADS开始初始化,Dclock最初的几个周期是用来采样的。最开始的时候,DOUT处于

高阻态,随后在Dclock的下降沿,DOUT将输出一个可以持续一个脉冲周期的低电平的信号,作为提醒,说明要输出结果了。接

下来在16个脉冲周期里面,DOUT会从最高位(MSB)到最低位(LSB)依次输出数据,Dclock的下降沿可以用来控制A/D转换

结果在DOUT的输出。

在接下来的16个周期里面,如果不做处理,DOUT会再次将结果从最低位到最高位输出,直到最高位重复输出使得DOUT变为

高阻态,一次转换可以输出两次数据。其实这是我们可以认为的选择关闭片选信号CS/SHDN,使其只是输出一个数据

这里要注意的是,CS/SHDN接高电平时,ADS在关断模式下低功耗工作,只有CS/SHDN由高电平变为低电平时,ADS8320

才开始正常工作。

串行外设接口SPI

串行外设接口SPI(Serial Peripheral Interface)在上述的数模转换中起到了很重要的作用,其原理图如下:

图2  SPI原理图

SPI的详细的介绍可以看一下stm32教程,有很详细

的解释,我们只要关注一下,其内部含有的是串行

移位寄存器,又有主机与从机之分,每当主机通过

MOSI发给移位寄存器一位,从机就通过MISO发给

主机的移位寄存器,从而实现交换数据的目的,如

果只是单纯的读数据,那么主机中交换的数据就可

以是0.

上图中,SCLK是时钟信号,CS为片选信号。

在STM32中的应用

我用的是stm32103c8t6的板子,所以具体到每个人的板子不同的话需要将对应的IO口修改一下

    GPIO_InitTypeDef GPIO_InitStructure;SPI_InitTypeDef SPI_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE );RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2 , ENABLE );//ADS8320/*----SPI_SCLK----PB13----*/         // 时钟信号/*----SPI_SDO----PB14----*/          //串行输出/*----CS/SHDN----PB12----*/           //使能信号GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推勉输出GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;    //上拉输入GPIO_Init(GPIOB, &GPIO_InitStructure);GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;    //上拉输入GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;   GPIO_Init(GPIOA, &GPIO_InitStructure);

接下来就是SPI的配置,

    SPI_Cmd(SPI2, DISABLE);    SPI_InitStructure.SPI_Direction =SPI_Direction_2Lines_FullDuplex;SPI_InitStructure.SPI_Mode = SPI_Mode_Master;SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;  //16位数据SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;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;

初始化完成过后,我们需要做的,就是发送一个数据,然后再读取出来

//输出一个数据,再接受一个数据
int SPI_Word(u16 word)
{while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_TXE)==RESET);SPI_I2S_SendData(SPI2,word);while(SPI_I2S_GetFlagStatus(SPI2,SPI_I2S_FLAG_RXNE)==RESET);return SPI_I2S_ReceiveData(SPI2);
}int Read_ADC_Value(void)//读取数据值
{int ADC_value=0; GPIO_ResetBits(GPIOB,GPIO_Pin_12);   //复位,相当于片选信号打开ADC_value=SPI_Word(0x0000);GPIO_SetBits(GPIOB,GPIO_Pin_12);     //置位,相当于片选信号关闭return ADC_value;   //
}

这样差不多就完整的读取出来了数据。

(stm32)DT35与ADS8320相关推荐

  1. STM32通过SPI采集DT50 ADS8320数据

    具体目的 使用STM32的SPI通道,采集ADS8320对DT50(激光测距传感器)进行了AD转换之的数据.不要求进行滤波,但采集到的数据要与距离呈正相关. ** 具体代码 ** main.h #if ...

  2. 【嵌入式】openmv与stm32的串口通信

    参考:(文中部分图/文字/代码来自以下文章,部分内容由于时间久远已经找不到原作者,可联系注明或删除) PYTHON串口数据打包发送STM32接收数据解析 openmv中文文档 这里以openmv循迹代 ...

  3. 【转载】 stm32之PWM

    发现这位博主的博客被大量的转发,我也转载一篇,谁叫人家写的好呢. 原文地址:http://blog.sina.com.cn/s/blog_49cb42490100s6uh.html 脉冲宽度调制(PW ...

  4. (转)jLink使用ITM机制实现调试stm32单片机

    ----------------------------------------------------------------------------------------------- 作者:p ...

  5. STM32学习笔记9(SysTick滴答时钟)

    我不得不说意法半导体确实有点风骚!甚至有点变态.我对ST文档 STM32F10XXX参考手册的编辑水平真是不敢恭维.手册中好多说明都是含糊不清,甚至将好多对初学者来说很重要的地方都一笔带过,让人着实摸 ...

  6. python 开发板-MicroPython:STM32 上 的 Python 开发

    虽然Python在国外是一门非常火的语言,在黑客界更是赫赫有名,然而中国的大学却极少开设 Python 课程,故而国内 Python 程序员多属自学.而一个没有MCU编程经验的初学者,要想让芯片跑起来 ...

  7. STM32 GPIO的原理、特性、选型和配置

    目录 1.基本结构 2.4种输入模式 3.4种输出模式 4.GPIO选型和配置 1.基本结构 STM32 GPIO是通用输入/输出端口的英文简称,其可实现输入.输出.驱动.通信等功能,STM32的I/ ...

  8. STM32低功耗模式下GPIO如何配置最节能?

    目录 1.将未使用的GPIO 配置为模拟输入模式 2.调节GPIO 速度 3.GPIO不使用时禁用寄存器时钟 4.避免悬空未使用的引脚 STM32低功耗模式下GPIO如何配置最节能,这里总结了一下四点 ...

  9. STM32电源框图解析(VDD、VSS、VDDA、VSSA、VREF+、VREF-、VBAT等的区别)

    目录 1.名词解析 2.框图解析 2.1.独立的A/D转换器供电和参考电压 2.2.电池备份区域 STM32的工作电压(VDD )为2.0-3.6V,通过内置的电压调节器提供所需的1.8V电源,当主电 ...

最新文章

  1. 解决phpmyadmin3.4空密码登录被禁止登陆的方法
  2. 在研究所工作是什么体验?和互联网公司比,你会怎么选?
  3. Flex Socket 跨域问题的解决办法
  4. Quartus16.1布线优化选择,重编译可能会满足时序
  5. iOS经典面试题总结--内存管理
  6. OpenSilver: 通过WebAssembly 复活Silverlight
  7. 边沿触发是什么意思_集基耦合双稳电路,集成化单稳电路,数字逻辑电路,门电路,触发器...
  8. mysql主从安装配置_如何安装和配置mysql主从同步
  9. 不显示参数名_第51p,万能参数与返回值,Python中函数的返回值
  10. 做技术,未来出路在哪?
  11. Linux 命令(53)—— exit 命令(builtin)
  12. 46. 避免 CSS 表达式(7)
  13. 设计模式 ( 十九) 中介者模式
  14. 《成功者的窘境》克里斯滕森 epub+mobi+azw3
  15. python考勤记录_python做考勤统计
  16. 核心单词Word List 5
  17. BCDEDIT - 启动配置数据存储编辑器
  18. testflight怎么做版本更新_TestFlight
  19. vue-baidu-map使用方法(简单快速)在vue项目中使用
  20. 一个年轻董事长给大学生18条很好的建议

热门文章

  1. mysql的高可用方案-PXC方案(综合各方的资料)
  2. 卧槽!百度网盘 VIP 可以免费白嫖了!亲测有效!!!
  3. Typescript从入门到精通(上)
  4. openGL中GLSL语言介绍
  5. 思必驰全新智能硬件品牌“思麦耳”亮相,发布首款360°降噪转写办公神器 京东开售
  6. LM324的运放芯片的放大电路(四运放)运算-简单理解
  7. 前端图片无损压缩在线工具
  8. 计算机硬件电子元件,详解判断电脑硬件电路元器件的好坏
  9. antd disabledDate 选择禁用特定的时间范围
  10. 2022年考研数据结构_8 排序