2019年9月16日星期一(STM32 串口 超声波 单总线通讯)

.串口

在嵌入式开发中,为了辅助提高开发效率,我们需要调试工具,串口就是一个简单易用的调试工具,能够通过串口输出信息了解硬件的工作状态和参数

stm32库函数开发中,在printf函数的实现中提供了一个后门,关于其中硬件输出的部分需要使用者自己实现,后门接口函数是一个发送字符的函数:   

#pragma import(__use_no_semihosting)

struct __FILE

{

    int handle;

}

FILE __stdout;

//定义_sys_exit函数避免使用半主机模式

void _sys_exit(int x)

{

    x = x;

}

int fputc(int ch,FILE *f)

{

    ....

}

 


.超声波模块(SR04)

1.原理

 超声波模块是用来测量距离的一种产品,通过发送和接收超声波,利用发送和接收的时间差和声音的传播速度,计算出障碍物和模块之间的距离

    

 

 

2.模块接口(手册)

    量程:2cm-400cm

    精度:3mm

 

 

 

 

 

 

     

(1)模块如何工作

            发送>10us的启动信号

            等待接收高电平响应,高电平时间就是发送接收时间差

 (2)模块接口

            5V供电

            通信接口是GPIO

3.和开发板的连接

    

 

 

    Echo ----------- PC6(输入)

    Trig ----------- PC8(输出)

17*i/100 cm

4.电平时间测量方法

1)使用延时检测

2)使用定时器检测

    变高将定时器初始值设为0(TIM_SetCounter)

    变低读取定时器计数值(TIM_GetCounter)

    通过计数值来计算距离

距离<10cm LED1亮报警

5.串口命令使用

练习:

    使用串口命令控制 蜂鸣器 读取距离....

.温湿度传感器(dht11)

1.原理图

   

 

    dht11只有一根数据线和CPU连接,这种使用一根数据线通信的方式叫单总线(一线式总线)

2.查看dht11的说明手册

1)误差和量程

 

2)通信操作

             

 

 

3)通信时序

    

起始信号和dht11的响应

    

0和1的传输表示

         

 

         

 

 

    最简单的判断方法就是等待数据线变高后延时40-50us,读取总线上的电平(高-1 低-0),高位先出

    采样周期>1s

posted @ 2019-09-16 20:12  柚子皮max  阅读(831)  评论(0编辑  收藏  举报