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.原理

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

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

2.模块接口(手册)

    量程:2cm-400cm

    精度:3mm

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

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

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

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

(1)模块如何工作

            发送>10us的启动信号

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

 (2)模块接口

            5V供电

            通信接口是GPIO

3.和开发板的连接

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

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

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

17*i/100 cm

4.电平时间测量方法

1)使用延时检测

2)使用定时器检测

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

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

    通过计数值来计算距离

距离<10cm LED1亮报警

5.串口命令使用

练习:

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

.温湿度传感器(dht11)

1.原理图

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

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

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

2.查看dht11的说明手册

1)误差和量程

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

2)通信操作

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

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

3)通信时序

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

起始信号和dht11的响应

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

0和1的传输表示

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

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

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

    采样周期>1s