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