迪文的显示屏使用起来比较方便,其使用串口通讯,即可支持RS232,又可以支持TTL电平。在NUCLEO-F412ZG实验板上,USART2已经引到了CN9上,我们就利用USART2来实现与迪文串口屏的通讯试验。USART2硬件接口如下图红框所示:

我们在STM32CubeMX中配置USART2,打开“USART2 Configuration”界面,打开“GPIO Settings”标签:

配置完成后,我们生成项目源码,USART2的配置如下:

/* USART2 init function */

static void MX_USART2_UART_Init(void)

{

huart2.Instance = USART2;

huart2.Init.BaudRate = 115200;

huart2.Init.WordLength = UART_WORDLENGTH_8B;

huart2.Init.StopBits = UART_STOPBITS_1;

huart2.Init.Parity = UART_PARITY_NONE;

huart2.Init.Mode = UART_MODE_TX_RX;

huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;

huart2.Init.OverSampling = UART_OVERSAMPLING_16;

if (HAL_UART_Init(&huart2) != HAL_OK)

{

Error_Handler();

}

}

在上述配置函数中,调用了HAL_UART_Init函数来初始化USART2,同时调用HAL_UART_MspInit函数来初始化硬件配置,HAL_UART_MspInit函数需要我们编写供系统回调。

接下来我们编写向屏写数据的源码,我们向屏写氧气百分比、氢气百分比、甲烷百分比、乙炔百分比、乙烯百分比和丙烷百分比等数据。

//向屏写数据,用于数据显示

void SetDataToLCD(void)

{

uint16_t length=SetVarDataLength;

uint8_t txData[SetVarDataLength];

uint16_t startAddress=0x0000;

//对往下写的数据作格式化转换

SendDataProcess(txData);

//发送数据

WriteDataToLCD(startAddress,txData,length);

}

其中SendDataProcess函数是对要写的数据进行格式化,因为屏幕只能接受符合其要求格式的数据。WriteDataToLCD是我们封装的向屏发送数据的函数:

//写数据变量存储器

void WriteDataToLCD(uint16_t startAddress,uint8_t txData[],uint16_t length)

{

/*命令的长度由帧头(2个字节)+数据长度(1个字节)+指令(1个字节)+起始地址(2个字节)+数据(长度为length)*/

uint16_t cmd_Length=length+6;

uint8_t cmd_VAR_Write[WriteDataCommandLength];

cmd_VAR_Write[0]=0x5A;

cmd_VAR_Write[1]=0xA5;

cmd_VAR_Write[2]=(uint8_t)(length+3);

cmd_VAR_Write[3]= FC_VAR_Write;

cmd_VAR_Write[4]=(uint8_t)(startAddress>>8);//起始地址

cmd_VAR_Write[5]=(uint8_t)startAddress;//起始地址

for(int dataIndex=0;dataIndex<length;dataIndex++)

{

cmd_VAR_Write[dataIndex+6]=txData[dataIndex];

}

SendData(cmd_VAR_Write,cmd_Length);

}

编写完成后我们运行调试:

调试无误后,我们在IO终端中查看数据显示结果,证明运行数据是没有问题的。

接下来我们在先视频上查看数据,与在IO终端中一致,就是说屏显示的数据就是MCU发送给它的数据:

再来看看对传感器做一下扰动时(用配气仪和小型气泵向传感器管道送不同的气)数据的变化,传感器检测对象变化是屏幕显示也变化。

再来改变一下气体成分和气泵的转速看看数据的变化:

经过以上实验,NUCLEO-F412ZG通过串口与迪文串口屏通讯完全可行。

STM32F412应用开发笔记之八:迪文串口屏显示驱动的更多相关文章

  1. STM32F412应用开发笔记之一:初识NUCLEO-F412ZG

    今天终于收到了期待已久的NUCLEO-F412ZG,感谢电子发烧友论坛! 近几年来基本都是在STM32平台上做一些设计开发工作.STM32F103.STM32F107.STM32F429等都应用过,但 ...

  2. STM32F412应用开发笔记之十:多组分气体分析仪设计验证

    本次将NUCLEO-F412ZG应用于我们的多组分气体分析仪的实现试验,从整体上测试实际项目的应用情况. 一.项目概述 多组分气体分析仪是我公司近期研发的三个主要产品之一.采用模块化设计,可增减配置, ...

  3. STM32F412应用开发笔记之五:结合W5500实现以太网通讯

    因实际使用需求我们测试一下网络通讯,在NUCLEO-F412ZG测试板上没有以太网部分,我们选择外接一个W5500的实验板.W5500支持SPI接口通讯,DC3.3V供源.而NUCLEO-F412ZG ...

  4. STM32F412应用开发笔记之四:与远红外炭氢传感器通讯

    远红外炭氢传感器是在多组分气体传感器中用来检测甲烷和丙烷浓度的,采用单总线串行通讯,TTL电平.所以我们需要用到UART口来实现与远红外炭氢传感器的通讯. 远红外传感器就是这个样子的: 再来一张进气和 ...

  5. STM32F412应用开发笔记之三:SPI总线通讯与AD采集

    本次我们在NUCLEO-F412ZG试验模拟量输入采集.我们的模拟量输入采用ADI公司的AD7705,是一片16位两路差分输入的AD采集芯片.具有SPI接口,我们将采用SPI接口与AD7705通讯.两 ...

  6. STM32F412应用开发笔记之二:基本GPIO控制

    NUCLEO-F412ZG板子上的元器件并没有完全焊接,除去ST-LINK部分和电源部分后,还有用一个USB主机接口,三个LED灯和两个按钮,不过很多功能引脚都已经引到了插针.查看原理图可发现,由原理 ...

  7. Modbus库开发笔记之八:CRC循环冗余校验的研究与实现

    谈到Modbus通讯自然免不了循环冗余校验(CRC),特别是在标准的串行RTU链路上是必不可少的.不仅如此在其他开发中,也经常要用到CRC 算法对各种数据进行校验.这样一来,我们就需要研究一下这个循环 ...

  8. STM32F412应用开发笔记之九:移植FreeRTOS到F412ZG平台

    在开发实际应用系统时,我们经常需要考虑数据的实时性和多任务,嵌入式实时操作系统的出现为实现这一目的提供了很好的助力.FreeRTOS是近年来比较流行的嵌入式实时操作系统,而且是开源免费的,STM32C ...

  9. LwIP应用开发笔记之八:LwIP无操作系统HTTP客户端

    前面我们实现了TCP服务器和客户端的简单应用,接下来我们实现一个基于TCP协议的应用协议,那就是HTTP超文本传输协议 1.HTTP协议简介 超文本传输协议(Hyper Text Transfer P ...

随机推荐

  1. zencart url特殊字符处理

    1. 支持 在后台的seo url 将Outputw3c 改为false 2.删除特殊字符 这对于在少量的zen cart网站上处理少量的特殊字符可能还适用,实际上我们经常在导入产品数据时或者或少会带 ...

  2. (一)、Struts第一天

    (一).Struts第一天 1. JavaWeb知识回顾 n 客户端编程 HTLM/CSS/JS n XML技术 会写XML * 基本语法 * DTD * Schema 会读XML * Dom4J读取 ...

  3. awk 数组排序-- asort 与 asorti

    两者排序区别: asort 是对数组的值进行排序,并且会丢掉原先键值: asorti是对数组的下标进行排序. 数据文件: 12 34 78 90 23 45 1. awk是关联数组.for-in循环输 ...

  4. Struts2, jquery, select二级联动

    1. 下载jquery.js文件放在webroot下js文件夹里 2. 配置struts.xml: <package name="default" namespace=&qu ...

  5. Memcached函数整理

    public bool Memcached::add ( string $key , mixed $value [, int $expiration ] )  向key中添加值,如果key存在,返回f ...

  6. jvisualvm

    f the fonts used by VisualVM are hard to read, switching the LaF might help.  Try for example  'visu ...

  7. 一个java解析xml的简单例子

    java解析xml,主要是通过Dom4j实现的,很多场合都会用到此功能,需要解析XML文件. 下面是一个简单的解析XML文件的例子: import java.util.Iterator; import ...

  8. 使用traceview进行Android性能测试(转)

    使用traceview进行Android性能测试(转) 使用traceview进行Android性能测试  原文链接:http://www.cnblogs.com/Android-and-androi ...

  9. 使用Spring框架的好处(转帖)

    http://blog.csdn.net/cynhafa/article/details/6205361 在SSH框假中spring充当了管理容器的角色.我们都知道Hibernate用来做持久层,因为 ...

  10. dos 命令集

    dos下下载远程服务器的文件 setp C:\WINDOWS\system32\cmd.exesetp C:\RECYCLER\cmd.exever --------查看window版本net use ...