查看: 1114|回复: 0

【MXCHIP Open1081】ADC、DS18B20采集与LCD显示

[复制链接]
  • TA的每日心情
    开心
    2016-12-16 16:16
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2015-3-10 15:11:17 | 显示全部楼层 |阅读模式
    分享到:
    1.ADC
    OP1081采用了STM32F205RG作为MCU,STM32F205RG有2个ADC,可在24个外部通道上复用,如下图所示:

                                                 
    ADC转换精度可配置为12位、10位、8位和6位,降低精度可提高转换速度,在12位精度下ADC转换速度最快可达2MS/s。工作模式有4种:单次转换、连续转换、多通道扫描、间断转换。
    ADC模块时钟经过APB2分频,最高可达30MHz;每个通道总的转换时间为Ttotal=TSampling+Tconversion=(SMP + RES) * ADCCLK
    其中,SMP为采样时间,RES为转换精度,因此降低转换精度可提高转换速度。
    根据时钟树可计算出程序中ADC的转换时间:

      
    在启动文件startup_stm32f2xx.s中可找到SystemInit函数,3.5版的固件库中在startup文件中加入了SystemInit函数,因此不用在main()中再调用。

      
    打开SystemInit(),其中的SetSysClock()中有系统时钟的配置


      
      
    可以看出HCLK = SYSCLK / 1,PCLK2 = HCLK / 2,因此APB2的时钟为120MHz/2=60 MHz,而ADCCLK为PCLK2的2分频,因此为30 MHz.
    程序简单注释如下:


            
      
    由Resolution=12b,SampleTime=3Cycles可算出ADC单通道转换时间为(12+3)/30MHz=0.5us,即2MS/s.

    对程序稍加改动,可实现ADC通道6采集并显示电压,在超级终端中单行显示只更新电压值,如下图所示:

    2.DS18B20
    DS18B20 是由 DALLAS 半导体公司推出的一种的“一线总线”接口的温度传感器。与传统的热敏电阻等测温元件相比,它是一种新型的体积小、适用电压宽、与微处理器接口简单的数字化温度传感器。一线总线结构具有简洁且经济的特点,可使用户轻松地组建传感器网络,从而为测量系统的构建引入全新概念,测量温度范围为-55~+125℃ ,精度为±0.5℃。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~l2 位的数字值读数方式。它工作在 3—5.5 V 的电压范围,采用多种封装形式,从而使系统设计灵活、方便,设定分辨率及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20内部结构如下:

    DS18B20的ROM中有64位序列号,它可以看作是该 DS18B20的地址序列码,每DS18B20 的64位序列号均不相同。64位 ROM的排列是:前8 位是产品家族码,接着48位是DS18B20 的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5 +X4 +1)。ROM作用是使每一个DS18B20 都各不相同,这样就可实现一根总线上挂接多个。
    所有的单总线器件要求采用严格的信号时序,以保证数据的完整性。DS18B20 共有6 种信号类型:复位脉冲、应答脉冲、写 0、写1、读0和读 1。所有这些信号,除了应答脉冲以外,都由主机发出同步信号。并且发送所有的命令和数据都是字节的低位在前。
    这几个信号的时序如下:
    1)复位脉冲和应答脉冲
    单总线上的所有通信都是以初始化序列开始。主机输出低电平,保持低电平时间至少 480 us,,以产生复位脉冲。接着主机释放总线,4.7K的上拉电阻将单总线拉高,延时 15~60 us,并进入接收模式(Rx)。接着 DS18B20拉低总线60~240 us,以产生低电平应答脉冲, 若为低电平,再延时 480 us。

    2)写时序
    写时序包括写0时序和写1时序。所有写时序至少需要60us,且在2次独立的写时序之间至少需要 1us 的恢复时间,两种写时序均起始于主机拉低总线。写 1 时序:主机输出低电平,延时2us,然后释放总线,延时 60us。写 0时序:主机输出低电平,延时 60us,然后释放总线,延时2us。

    写0

      写1
    3)读时序
    单总线器件仅在主机发出读时序时,才向主机传输数据,所以,在主机发出读数据命令后,必须马上产生读时序,以便从机能够传输数据。所有读时序至少需要60us,且在 2次独立的读时序之间至少需要 1us 的恢复时间。每个读时序都由主机发起,至少拉低总线 1us。主机在读时序期间必须释放总线,并且在时序起始后的15us之内采样总线状态。典型的读时序过程为:主机输出低电平延时 2us,然后主机转入输入模式延时 12us,然后读取单总线当前的电平,然后延时50us。

    DS18B20 的温度读取过程一般为:复位->发SKIP ROM 命令(0XCC)->发开始转换命令(0X44)->延时->复位->发送 SKIP ROM 命令(0XCC)->发读存储器命令(0XBE)->连续读出两个字节数据(即温度)->结束。
    程序中通过readID()函数读取序列号,通过readTemp()读取温度:


    ADC_DS18B20_LCD程序实现了2路ADC采集电压、DS18B20采集温度,在LCD上显示并发送到上位机。ADC通道为CH0和CH1,引脚为PA0和PA1。程序运行结果如下:



    ADC_DS18B20_LCD文件夹中包含了所有源文件,mxchip采用的固件库较老,并且只能用该版固件库,即

    否则程序可能编译不通过。
    另外,mxchipWNet_3161.lib没提供源代码,mxchipWNet_3161.lib对固件库有依赖,开发时对一些内部函数不了解,也不方便移植。
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-18 16:44 , Processed in 0.120418 second(s), 18 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.