《嵌入式技术应用开发项目教程》项目6 数据采集远程监控设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
LK32T102的串口通信设计
LK32T102的串口通信设计
常见的串口通信中,一般只用UARTRXD(接收数据串行输入)和UARTTXD(发送数据串行输出),外加GND(地)3个引脚与其他设备连接在一起的。(1)UART0串口的TXD和RXD引脚使用的是PA2和PA3;(2)UART1串口的TXD和RXD引脚使用的是PC14和PC13
2. LK32T102拥有1个12位 的ADC,可以分时输入进行转换,最大转换速率可达 1Msps,支持连续采样模式。
3
4
3. LK32T102的ADC共有16个转换通道(A通道:ADCA0…ADCA7,B通道:ADCB0…ADCB7),支持多路复用输入,并且每一个通道都可以任意配置触发源、采样窗口和转换通道。
数据采集远程监控设计
教学目标
知识目标
技能目标
素质目标
1. 了解LK32T102的ADC和UART的主要特征和结构2. 了解LK32T102的ADC和UART编程相关的寄存器3. 会使用ADC寄存器,完成A/D转换程序设计4. 会使用UART寄存器,完成串行通信程序设计
能应用C语言程序完成电压数据采集、OLED显示电压数据和控制UART串口收发数据,实现数据采集远程监控的设计、运行及调试。
任务18 电压数据采集远程监控设计
电压数据采集远程监控设计
任务18 电压数据采集远程监控设计
任务18 电压数据采集远程监控设计
电压数据远程监控上位机显示 监控电压OLED显示
关键知识点梳理
1. 将模拟信号转换成数字信号的电路,称为模数转换器(简称A/D转换器或ADC)。A/D转换的作用是将时间连续、幅值也连续的模拟量转换为时间离散、幅值也离散的数字信号,既将模拟信号转换成数字信号。
起始位:占一位,位于数据帧的开头,以逻辑“0”表示传输数据的开始。
数据位:要发送的数据,数据长度可以是5~8位。
校验位:占一位,用于检测数据是否有效。
停止位:一帧传送结束的标志,根据实际情况定,可以是1、1.5或2位。
LK32T102的串口通信设计
拥有2路UART串口,即UART0和UART1
可编程波特率产生器,支持小数分频
基于OLED的电压数据采集程序设计
【技能训练6-1】基于OLED的电压数据采集设计
任务17 LK32T102的串口通信设计
数据采集远程监控设计
任务17 LK32T102的串口通信设计
数据采集远程监控设计
任务17 LK32T102的串口通信设计
上位机打印效果图
任务17 LK32T102的串口通信设计
任务18 电压数据采集远程监控设计
移植【技能训练6-1】工程
工程编译
电压数据采集远程监主程序控设计
程序下载与调试
复制“【技能训练6-1】基于OLED的电压数据采集设计”文件夹,然后然后修改文件夹名为“任务18 电压数据采集远程监控设计”,修改USER文件夹下的“VolAcq_OLED.uvprojx”工程名为“VolRemMon.uvprojx”
支持 DMAC 的控制与数据搬移
支持全双工操作,具有标准异步通讯比特位(start,stop,parity)
LK32T102的串口通信设计
波特率计算
LK32T102的UART波特率的设置,主要设置三个部分: UART的时钟、UARTIBRD(波特率分频比的整数部分)和UARTFBRD(波特率分频比的小数部分)
任务16 电压数据采集设计
1)电路设计
任务16 电压数据采集设计
2)电压数据采集实现分析
设置MTDIV时钟、ADC时钟
设置PB10为模拟输入
设置ADC通道
设置ADC触发源
设置ADC窗口大小
ADC采集中断配置及使能
读取ADC值
移植任务15工程
工程编译
电压数据采集程序设计
程序下载与调试
复制“任务15 基于数码管的秒表设计”文件夹,然后修改文件夹名为“任务16 电压数据的采集设计”,修改USER文件夹下的“M0_SEG_SW.uvprojx”工程名为“VolAcq.uvprojx”
以下为UART波特率的计算方法:假设UART的时钟为72MHZ,所需的波特率为115200。那么:波特率的除数(divisor) = (72× 10^6)/(16 × 115200) = 39.0625 因此,整数部分BRDI = 39,小数部分BRDF = 0.0625, 因此,波特率分频比的小数部分:UARTFBRD = integer(0.0625 × 64) = 4而,波特率分频比的整数部分:UARTIBRD = 39
异步通信
全双工
I2C
SDA:数据输入/输出端SCL:同步时钟
同步通信
半双工
SPI
SCK:同步时钟MISO:主机输入,从机输出MOSI:主机输出,从机输入
同步通信
半双工
单总线(1-wire)
DQ:发送/接收
异步通信
半双工
常见串行通信接口比较
UART(Universal Asynchronous Receiver Transmitter,通用异步收发传输器)是一个全双工通用异步串行收/发模块,主要用于打印程序调试信息、上位机和下位机的通信以及ISP程序下载等场合。
4. LK32T102的ADC可选择多个触发源(软件触发,PWM0-2,PWM4,GPIOINT,ADCINT 1/2,T0,TIM6 等)。
LK32T102的串口通信设计
LK32T102串口通信设计
LK32T102的串口通信设计
【技能训练6-2】Printf串口调试
数据采集远程监控设计
Printf串口调试电路连接如图所示,使用一根USB转串口线将开发板和上位机连接起来。5V电源适配器为开发板供电使用。
【技能训练6-2】Printf串口调试
移植任务17工程
工程编译
编写Printf打印内容
程序下载与调试
将printf.h和printf.c两个文件添加到任务17的工程中,实现重定向printf() 函数,之后在main.c文件中就能直接调用printf函数 “打印”调试信息
【技能训练6-2】Printf串口调试
Printf串口调试程序设计
任务17 LK32T102的串口通信设计
根据数据传输方向以及与时间的关系,串行通信可以分为单工、半双工和全双工三种通信方式。
任务17 LK32T102的串口通信设计
任务17 LK32T102的串口通信设计
通信标准
引脚说明
时钟控制方式
通信方式
UART(通用异步收发器)
TXD:发送端RXD:接收端GND:公共端
任务18 电压数据采集远程监控设计
任务18 电压数据采集远程监控设计
设置HDIV时钟、HDIV时钟
初始化各项外设,如ADC、OLED、UART0等
开启OLED显示,显示初始的信息
读取采集的电压数据
将采集电压数据显示在OLED屏上
将采集的电压数据传输至上位机串口助手显示
电压数据采集远程监控电路是由基于Cortex-M0的LK32T102单片机、板载0.96寸OLED显示屏和装有串口助手的上位机组成,其电路连接如下图所示。
单片机UART与外设连结图
任务17 LK32T102的串口通信设计
RS-232是美国电子工业协会(EIA,Electronic Industry Association)制定的串行通信物理接口标准,规定了相应的电气特性和物理特性,通常采用DB-9或DB-25的形式,以DB-9最为常见。
外形
针脚号
符号
UART串口通信电路连接如图所示,使用一根USB转串口线将开发板和上位机连接起来。5V电源适配器为开发板供电使用。
LK32T102的串口通信设计
LK32T102的串口通信设计
设置HDIV时钟时钟
设置PA2、PA3为复用数字输入输出
设ห้องสมุดไป่ตู้UART0的波特率
设置奇偶校验、字长、FIFO、无停止位
UART0使能
嵌入式技术应用开发项目教程(微课版)
——数据采集远程监控设计
当下,测温枪在抗疫过程中大显身手,而测温枪的工作原理是:由人体发射出的能量经光学系统汇聚到红外探测器上,探测器将入射的辐射转换成为电压信号,电压信号送入接收系统后,经过数据处理及曲线自动拟合,最后准确推算出被测人体温度,以数字方式显示输出。 本项目从电压数据采集入手,首先让读者对LK32T102单片机的模数转换有一个初步了解,然后介绍串行通信基本知识,并介绍LK32T102的UART串口。最后通过串口将采集到的电压数据传输到上位机串口助手进行远程监控,让读者进一步掌握LK32T102单片机的外设寄存器的编程方法。
功能
1
DCD
数据载波检测,输入
2
RxD
接收数据,输入
3
TxD
发送数据,输出
4
DTR
数据终端准备就绪,输出
5
GND
信号地
6
DSR
数据设备准备就绪,输入
7
RTS
请求发送,输出
8
CTS
清除发送,输入
9
RI
振铃指示,输入
任务17 LK32T102的串口通信设计
异步串行通信标准的数据帧由起始位、数据位、校验位、停止位四部分组成。数据传输速率为9600、19200和115200波特。
UART0中断配置及使能
收发数据处理
移植任务16工程
工程编译
LK32T102串口通信主程序设计
程序下载与调试
复制“任务16 电压数据采集设计”文件夹,然后修改文件夹名为“任务17 LK32T102串口通信设计”,USER文件夹下的工程名“VolAcq.uvprojx”修改为“UART0.uvprojx”
在项目实践中培养学生团队协作精神、分析问题解决问题能力和践行社会主义核心价值观。
数据采集远程监控设计
任务16 电压数据采集设计
数据采集远程监控设计
任务16 电压数据采集设计
数据采集远程监控设计
任务16 电压数据采集设计
ADC转化过程
任务16 电压数据采集设计
内部集成1个12位ADC
ADC有16个通道,可以分时输入进行转换,最大转换速率可达 1MSPS
按数据传输方向及与时间的关系
单工通信
半双工通信
全双工通信
任务17 LK32T102的串口通信设计
同步通信与异步通信
同步通信是连续串行传送数据的通信方式,要求收发双方的时钟必须保持严格的同步。 特点:输速率较高
异步通信在发送的有效数据中增加一些用于同步的控制位,比如开始位和停止位等,数据以字符为单位组成数据帧进行传送,收发双方需约定数据的传输速率。 特点: 传输效率较低;通信设备实现简单、成本低。
移植任务16工程
工程编译
基于OLED的电压数据采集程序设计
程序下载与调试
将HARDWARE\OLED文件夹内的四个文件OLED.c、OLED.h、oledfont.h和bmp.h文件添加到任务16的工程中来,并修改DevInit.c、main.c等两个文件
【技能训练6-1】基于OLED的电压数据采集设计
【技能训练6-2】Printf串口调试
任务18 电压数据采集远程监控设计
数据采集远程监控设计
任务18 电压数据采集远程监控设计
数据采集远程监控设计
任务18 电压数据采集远程监控设计
参考前面章节制作OLED的汉字字库,任务18中需要制作“远程监控系统”这六个汉字的字库。制作好上述六个汉字的字库后,将其添加在oledfont.h头文件的二维数组Hzk[][]中
任务16 电压数据采集设计
3)程序移植
电压数据采集程序设计
电压数据采集设计
4)程序设计
【技能训练6-1】基于OLED的电压数据采集设计
数据采集远程监控设计
基于OLED的电压数据采集的电路是由基于Cortex-M0的LK32T102单片机、板载0.96寸OLED显示屏,其电路连接如下图所示。
【技能训练6-1】基于OLED的电压数据采集设计
串行通信是目前最为流行的一种通信方式,如U盘以及采用USB接口的设备、工业上常用的RS-485和RS-232等,都是串行通信设备。
单片机与外设之间也大多采用各类串行接口,比如UART、USB、IIC、SPI等。
任务17 LK32T102的串口通信设计
分类方式
按有无同步时钟
同步通信
异步通信
ADC 使用过程中主要设置ADC时钟、参考电压、转换通道、触发源、采样窗口、中断
ADC 转换的采样窗口有一个规定的最小值,即 10 个 ADC 时钟周期
任务16 电压数据采集设计
任务16 电压数据采集设计
2) ADC主要特征
任务16 电压数据采集设计
3) LK32T102的ADC结构
电压数据采集电路是由基于Cortex-M0的LK32T102单片机、一个5.6KΩ的电阻、一个10KΩ的电位器以及J5跳线端子组成,如下图所示。
LK32T102的串口通信设计
常见的串口通信中,一般只用UARTRXD(接收数据串行输入)和UARTTXD(发送数据串行输出),外加GND(地)3个引脚与其他设备连接在一起的。(1)UART0串口的TXD和RXD引脚使用的是PA2和PA3;(2)UART1串口的TXD和RXD引脚使用的是PC14和PC13
2. LK32T102拥有1个12位 的ADC,可以分时输入进行转换,最大转换速率可达 1Msps,支持连续采样模式。
3
4
3. LK32T102的ADC共有16个转换通道(A通道:ADCA0…ADCA7,B通道:ADCB0…ADCB7),支持多路复用输入,并且每一个通道都可以任意配置触发源、采样窗口和转换通道。
数据采集远程监控设计
教学目标
知识目标
技能目标
素质目标
1. 了解LK32T102的ADC和UART的主要特征和结构2. 了解LK32T102的ADC和UART编程相关的寄存器3. 会使用ADC寄存器,完成A/D转换程序设计4. 会使用UART寄存器,完成串行通信程序设计
能应用C语言程序完成电压数据采集、OLED显示电压数据和控制UART串口收发数据,实现数据采集远程监控的设计、运行及调试。
任务18 电压数据采集远程监控设计
电压数据采集远程监控设计
任务18 电压数据采集远程监控设计
任务18 电压数据采集远程监控设计
电压数据远程监控上位机显示 监控电压OLED显示
关键知识点梳理
1. 将模拟信号转换成数字信号的电路,称为模数转换器(简称A/D转换器或ADC)。A/D转换的作用是将时间连续、幅值也连续的模拟量转换为时间离散、幅值也离散的数字信号,既将模拟信号转换成数字信号。
起始位:占一位,位于数据帧的开头,以逻辑“0”表示传输数据的开始。
数据位:要发送的数据,数据长度可以是5~8位。
校验位:占一位,用于检测数据是否有效。
停止位:一帧传送结束的标志,根据实际情况定,可以是1、1.5或2位。
LK32T102的串口通信设计
拥有2路UART串口,即UART0和UART1
可编程波特率产生器,支持小数分频
基于OLED的电压数据采集程序设计
【技能训练6-1】基于OLED的电压数据采集设计
任务17 LK32T102的串口通信设计
数据采集远程监控设计
任务17 LK32T102的串口通信设计
数据采集远程监控设计
任务17 LK32T102的串口通信设计
上位机打印效果图
任务17 LK32T102的串口通信设计
任务18 电压数据采集远程监控设计
移植【技能训练6-1】工程
工程编译
电压数据采集远程监主程序控设计
程序下载与调试
复制“【技能训练6-1】基于OLED的电压数据采集设计”文件夹,然后然后修改文件夹名为“任务18 电压数据采集远程监控设计”,修改USER文件夹下的“VolAcq_OLED.uvprojx”工程名为“VolRemMon.uvprojx”
支持 DMAC 的控制与数据搬移
支持全双工操作,具有标准异步通讯比特位(start,stop,parity)
LK32T102的串口通信设计
波特率计算
LK32T102的UART波特率的设置,主要设置三个部分: UART的时钟、UARTIBRD(波特率分频比的整数部分)和UARTFBRD(波特率分频比的小数部分)
任务16 电压数据采集设计
1)电路设计
任务16 电压数据采集设计
2)电压数据采集实现分析
设置MTDIV时钟、ADC时钟
设置PB10为模拟输入
设置ADC通道
设置ADC触发源
设置ADC窗口大小
ADC采集中断配置及使能
读取ADC值
移植任务15工程
工程编译
电压数据采集程序设计
程序下载与调试
复制“任务15 基于数码管的秒表设计”文件夹,然后修改文件夹名为“任务16 电压数据的采集设计”,修改USER文件夹下的“M0_SEG_SW.uvprojx”工程名为“VolAcq.uvprojx”
以下为UART波特率的计算方法:假设UART的时钟为72MHZ,所需的波特率为115200。那么:波特率的除数(divisor) = (72× 10^6)/(16 × 115200) = 39.0625 因此,整数部分BRDI = 39,小数部分BRDF = 0.0625, 因此,波特率分频比的小数部分:UARTFBRD = integer(0.0625 × 64) = 4而,波特率分频比的整数部分:UARTIBRD = 39
异步通信
全双工
I2C
SDA:数据输入/输出端SCL:同步时钟
同步通信
半双工
SPI
SCK:同步时钟MISO:主机输入,从机输出MOSI:主机输出,从机输入
同步通信
半双工
单总线(1-wire)
DQ:发送/接收
异步通信
半双工
常见串行通信接口比较
UART(Universal Asynchronous Receiver Transmitter,通用异步收发传输器)是一个全双工通用异步串行收/发模块,主要用于打印程序调试信息、上位机和下位机的通信以及ISP程序下载等场合。
4. LK32T102的ADC可选择多个触发源(软件触发,PWM0-2,PWM4,GPIOINT,ADCINT 1/2,T0,TIM6 等)。
LK32T102的串口通信设计
LK32T102串口通信设计
LK32T102的串口通信设计
【技能训练6-2】Printf串口调试
数据采集远程监控设计
Printf串口调试电路连接如图所示,使用一根USB转串口线将开发板和上位机连接起来。5V电源适配器为开发板供电使用。
【技能训练6-2】Printf串口调试
移植任务17工程
工程编译
编写Printf打印内容
程序下载与调试
将printf.h和printf.c两个文件添加到任务17的工程中,实现重定向printf() 函数,之后在main.c文件中就能直接调用printf函数 “打印”调试信息
【技能训练6-2】Printf串口调试
Printf串口调试程序设计
任务17 LK32T102的串口通信设计
根据数据传输方向以及与时间的关系,串行通信可以分为单工、半双工和全双工三种通信方式。
任务17 LK32T102的串口通信设计
任务17 LK32T102的串口通信设计
通信标准
引脚说明
时钟控制方式
通信方式
UART(通用异步收发器)
TXD:发送端RXD:接收端GND:公共端
任务18 电压数据采集远程监控设计
任务18 电压数据采集远程监控设计
设置HDIV时钟、HDIV时钟
初始化各项外设,如ADC、OLED、UART0等
开启OLED显示,显示初始的信息
读取采集的电压数据
将采集电压数据显示在OLED屏上
将采集的电压数据传输至上位机串口助手显示
电压数据采集远程监控电路是由基于Cortex-M0的LK32T102单片机、板载0.96寸OLED显示屏和装有串口助手的上位机组成,其电路连接如下图所示。
单片机UART与外设连结图
任务17 LK32T102的串口通信设计
RS-232是美国电子工业协会(EIA,Electronic Industry Association)制定的串行通信物理接口标准,规定了相应的电气特性和物理特性,通常采用DB-9或DB-25的形式,以DB-9最为常见。
外形
针脚号
符号
UART串口通信电路连接如图所示,使用一根USB转串口线将开发板和上位机连接起来。5V电源适配器为开发板供电使用。
LK32T102的串口通信设计
LK32T102的串口通信设计
设置HDIV时钟时钟
设置PA2、PA3为复用数字输入输出
设ห้องสมุดไป่ตู้UART0的波特率
设置奇偶校验、字长、FIFO、无停止位
UART0使能
嵌入式技术应用开发项目教程(微课版)
——数据采集远程监控设计
当下,测温枪在抗疫过程中大显身手,而测温枪的工作原理是:由人体发射出的能量经光学系统汇聚到红外探测器上,探测器将入射的辐射转换成为电压信号,电压信号送入接收系统后,经过数据处理及曲线自动拟合,最后准确推算出被测人体温度,以数字方式显示输出。 本项目从电压数据采集入手,首先让读者对LK32T102单片机的模数转换有一个初步了解,然后介绍串行通信基本知识,并介绍LK32T102的UART串口。最后通过串口将采集到的电压数据传输到上位机串口助手进行远程监控,让读者进一步掌握LK32T102单片机的外设寄存器的编程方法。
功能
1
DCD
数据载波检测,输入
2
RxD
接收数据,输入
3
TxD
发送数据,输出
4
DTR
数据终端准备就绪,输出
5
GND
信号地
6
DSR
数据设备准备就绪,输入
7
RTS
请求发送,输出
8
CTS
清除发送,输入
9
RI
振铃指示,输入
任务17 LK32T102的串口通信设计
异步串行通信标准的数据帧由起始位、数据位、校验位、停止位四部分组成。数据传输速率为9600、19200和115200波特。
UART0中断配置及使能
收发数据处理
移植任务16工程
工程编译
LK32T102串口通信主程序设计
程序下载与调试
复制“任务16 电压数据采集设计”文件夹,然后修改文件夹名为“任务17 LK32T102串口通信设计”,USER文件夹下的工程名“VolAcq.uvprojx”修改为“UART0.uvprojx”
在项目实践中培养学生团队协作精神、分析问题解决问题能力和践行社会主义核心价值观。
数据采集远程监控设计
任务16 电压数据采集设计
数据采集远程监控设计
任务16 电压数据采集设计
数据采集远程监控设计
任务16 电压数据采集设计
ADC转化过程
任务16 电压数据采集设计
内部集成1个12位ADC
ADC有16个通道,可以分时输入进行转换,最大转换速率可达 1MSPS
按数据传输方向及与时间的关系
单工通信
半双工通信
全双工通信
任务17 LK32T102的串口通信设计
同步通信与异步通信
同步通信是连续串行传送数据的通信方式,要求收发双方的时钟必须保持严格的同步。 特点:输速率较高
异步通信在发送的有效数据中增加一些用于同步的控制位,比如开始位和停止位等,数据以字符为单位组成数据帧进行传送,收发双方需约定数据的传输速率。 特点: 传输效率较低;通信设备实现简单、成本低。
移植任务16工程
工程编译
基于OLED的电压数据采集程序设计
程序下载与调试
将HARDWARE\OLED文件夹内的四个文件OLED.c、OLED.h、oledfont.h和bmp.h文件添加到任务16的工程中来,并修改DevInit.c、main.c等两个文件
【技能训练6-1】基于OLED的电压数据采集设计
【技能训练6-2】Printf串口调试
任务18 电压数据采集远程监控设计
数据采集远程监控设计
任务18 电压数据采集远程监控设计
数据采集远程监控设计
任务18 电压数据采集远程监控设计
参考前面章节制作OLED的汉字字库,任务18中需要制作“远程监控系统”这六个汉字的字库。制作好上述六个汉字的字库后,将其添加在oledfont.h头文件的二维数组Hzk[][]中
任务16 电压数据采集设计
3)程序移植
电压数据采集程序设计
电压数据采集设计
4)程序设计
【技能训练6-1】基于OLED的电压数据采集设计
数据采集远程监控设计
基于OLED的电压数据采集的电路是由基于Cortex-M0的LK32T102单片机、板载0.96寸OLED显示屏,其电路连接如下图所示。
【技能训练6-1】基于OLED的电压数据采集设计
串行通信是目前最为流行的一种通信方式,如U盘以及采用USB接口的设备、工业上常用的RS-485和RS-232等,都是串行通信设备。
单片机与外设之间也大多采用各类串行接口,比如UART、USB、IIC、SPI等。
任务17 LK32T102的串口通信设计
分类方式
按有无同步时钟
同步通信
异步通信
ADC 使用过程中主要设置ADC时钟、参考电压、转换通道、触发源、采样窗口、中断
ADC 转换的采样窗口有一个规定的最小值,即 10 个 ADC 时钟周期
任务16 电压数据采集设计
任务16 电压数据采集设计
2) ADC主要特征
任务16 电压数据采集设计
3) LK32T102的ADC结构
电压数据采集电路是由基于Cortex-M0的LK32T102单片机、一个5.6KΩ的电阻、一个10KΩ的电位器以及J5跳线端子组成,如下图所示。