标题: stm32读取MS5837水深度压力传感器串口输出源码 [打印本页]

作者: mmmk    时间: 2018-4-20 11:05
标题: stm32读取MS5837水深度压力传感器串口输出源码
STM32读取MS5837压力数据,转化为深度。传输方式IIC

单片机源程序如下:
  1. #include "led.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "key.h"  
  6. #include "myiic.h"
  7. #include "MS5837.h"
  8. #include "dac.h"
  9. #include "timer.h"

  10. int main(void)
  11. {

  12.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
  13.         delay_init();                     //延时函数初始化          
  14.         uart_init(115200);         //串口初始化为115200
  15.         LED_Init();                                   //初始化与LED连接的硬件接口
  16.         Dac1_Init();                
  17.   
  18.   TIM3_Int_Init(24999, 17279);
  19.         delay_ms(1000);
  20.         IIC_Init();                 //初始化IIC PC11 PC12口子
  21.         delay_ms(100);
  22.         MS583703BA_RESET();         // Reset Device  复位MS5837
  23.         delay_ms(100);       //复位后延时(注意这个延时是一定必要的,可以缩短但似乎不能少于20ms)
  24.         MS5837_init();             //初始化MS5837
  25.          
  26.         while(1)
  27.         {
  28.                 delay_ms(50);
  29.                
  30.            MS583703BA_getTemperature();//获取温度
  31.                 MS583703BA_getPressure();   //获取大气压
  32.                
  33.                
  34.                 printf("        Temp : %llu\r\n",TEMP);               //串口输出原始数据
  35.                 printf("        Pressure : %u\r\n\r\n\r\n",Pressure); //串口输出原始数据
  36.                

  37.         }
  38.         }

复制代码

所有资料51hei提供下载:
MS5837串口输出.rar (282.32 KB, 下载次数: 307)



作者: l19951127    时间: 2018-5-16 09:18
谢谢分享
作者: younico    时间: 2018-11-11 11:16
谢谢分享。
作者: 业界小生    时间: 2018-11-23 13:23
谢谢分享
作者: 噶哈哈8422    时间: 2018-12-2 19:29
谢谢分享
作者: ZLB_HHXX    时间: 2019-1-13 23:13
谢谢分享
作者: ZLB_HHXX    时间: 2019-1-14 11:25
你这个程序编译ok吗,我编译时显示Dac1_Init 和TIM3_Int_Init  undefined?
作者: 136739843    时间: 2019-2-26 10:36
谢谢分享
作者: sbkd123    时间: 2019-4-28 20:54
谢谢分享
作者: sbkd123    时间: 2019-4-28 20:55
谢谢大佬分享
作者: lixuesong    时间: 2019-7-5 16:15
有报错,看不懂,能麻烦给解释一下吗

作者: liujiaxing    时间: 2019-8-1 09:09
非常感谢您的分享!
作者: feihuoliuxing    时间: 2019-8-1 14:50
谢谢分享
作者: 我是牛牛    时间: 2019-8-1 16:17
学习一波
作者: 牛逼的小菜鸟    时间: 2019-8-2 22:16
哈哈,正在学习这一块
作者: 、。,    时间: 2019-10-3 14:24
TIM3_Int_Init(24999, 17279)
Dac1_Init();       
为什么会报错啊?

作者: prettytank    时间: 2019-10-4 10:37
第一次看到这个传感器,收藏下
作者: raojialong111    时间: 2020-1-13 21:00
多谢分享,正在做这方面的开发
作者: soulfeng    时间: 2020-2-19 14:44
很不错,里面的温度算法有点问题,基准值是20度,低于二十度要出错,要改一下
        D2_Temp = MS583703BA_getConversion(0x54);
        delay_ms(10);
       
  if(D2_Temp>(((uint32_t)Cal_C[5])*256))
        {
           dT=D2_Temp - (((uint32_t)Cal_C[5])*256);
           TEMP=2000+dT*((uint32_t)Cal_C[6])/8388608;
            temp=TEMP/10;

        }else{
               dT=(((uint32_t)Cal_C[5])*256)-D2_Temp;
               TEMP=2000-dT*((uint32_t)Cal_C[6])/8388608;
               temp=TEMP/10;

             }
作者: liujuu    时间: 2020-3-16 13:30
感谢分享  就是有错误 正在找缺哪个文件
作者: liujuu    时间: 2020-3-16 13:33
错误找到了 //        Dac1_Init();                
  
//  TIM3_Int_Init(24999, 17279);   
把这两个注释就好了  
这2个函数 只有声明和调用 没有具体函数;
作者: liujuu    时间: 2020-3-18 09:53
soulfeng 发表于 2020-2-19 14:44
很不错,里面的温度算法有点问题,基准值是20度,低于二十度要出错,要改一下
        D2_Temp = MS583703B ...

temp=TEMP/10;  为什么要除以10 没理解
作者: hostmkmk@sina.c    时间: 2020-11-22 23:34
这个代码还是哟问题,应该是带符号的数值
作者: henryxue    时间: 2021-10-15 17:31
谢谢分享。各位大神的分析很有启发,谢谢!

作者: wwqqqsdf    时间: 2022-4-18 10:43
大哥,你代码数据类型怎么能用uint64/32类型的,温补小于20度就溢出错乱了。靠谱点吧




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1