HAL库_STM32与陶晶驰T1系列串口屏通讯

一、实验目的

       利用陶晶驰串口屏设计软件、Kei以及STM32CubeMX软件结合硬件,完成串口屏与单片机之间的简单通信。

二、硬件连接

32单片机与串口屏连接

串口屏与电源板连接

三、使用USART HMI软件完成串口屏界面设计

3.1创建工程

1.点击新建

2. 选择保存工程的位置,并设置文件名,点击保存

3. 选择串口屏型号,在串口屏的背面可以看到屏幕的型号或者在购买订单中查找,这里选用的设备为T1系列TJC3224T124_011

4. 点击左侧的显示选项,选择一个显示方向,并点击 OK,完成工程的创建

3.2建立一个主页

3.2.1修改页面名称

     这里改为main,建议使用英文名称,不建议使用中文或其他非 ascii 字符的文字。

3.2.2新建字库和导入字库

2.1点击工具-字库制作

2.2设置如下

2.3点击生成字库并保存,选择加入刚刚生成的字库

3.2.3加入按钮控件

修改按钮控件显示的文字

front值对应创建的字库,txt值是控件显示的文字,bco和pco可以分别修改背景和文字的颜色

3.3建立功能实现页面

3.3.1修改页面名称

3.3.2加入控件并编辑

t_是文本控件,b_是按钮控件,n_是数字控件

3.4编写代码

完成功能:

1.按下main界面中的b0按钮跳转到界面show_trans;

    点击mian中的b0按钮,编写按钮控件的按下或弹起事件

2.按下show_trans界面的b1按钮则n1显示的数值加5,按下show_trans界面的b2按钮则n1显示的数值减5;

    分别点击show_trans中的b1和b2按钮,编写按钮控件的按下或弹起事件:

3.按下show_trans界面的其他部分跳转到main界面;

    点击show_trans中空白界面

4.按下show_trans界面的b0按钮向单片机发送数据;

淘晶驰没有定义固定的串口屏发送给单片机的数据格式,需要自己定义格式。

常见的通讯协议的格式如下:

帧头 + 帧长度 + 帧内容 + 帧校验 + 帧尾

我们可以根据需要定义一个通讯协议的结构如下:

帧头  + 帧内容 +帧尾

设定帧头为0a,帧尾为ff,帧内容即发送数据设为两个字节。

    点击show_trans界面的b0按钮,编写按钮控件的按下或弹起事件:

编译后进行调试,检验功能有没有实现。

四、Keil编写32工程代码

  4.1初始配置

    使用stm32cubeMX完成以下配置,包括系统时钟,下载和串口配置。

    注意串口要使能中断并设置波特率为9600;

4.2编写程序

4.2.1修改设置

点击魔法棒,Target-勾选Use Microlib,DEBUG-Setting-Flash Download-勾选Rest and run;

4.2.3在usart.c中分别重定向printf和get char,scanf函数

#include "stdio.h"
int fputc(int ch, FILE *f)
{
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xffff);//HAL库串口发送函数
  return ch;
}

int fgetc(FILE *f)
{
  uint8_t ch = 0;
  HAL_UART_Receive(&huart1, &ch, 1, 0xffff);//HAL库串口接收函数
  return ch;
}

4.2.4实现串口接收并发送数据

1.在main中第一次调用接收中断函数

/* USER CODE BEGIN 2 */
	HAL_UART_Receive_IT(&huart1, (uint8_t *)&aRxBuffer, 1);
/* USER CODE END 2 */

2.编写HAL_UART_RxCpltCallback中断回调函数,处理接收的数据


void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	rx_data[rx_cnt] = rx_byte;     //接收数据转存入数组
	rx_cnt=rx_cnt+1;

	if (rx_data[rx_cnt-1] == 0xFF  && rx_data[rx_cnt-4] == 0x0a)  //判断接收数据的帧头帧尾
	{
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
        printf("show_trans.n1.val=%d\xff\xff\xff",rx_data[rx_cnt-3]+rx_data[rx_cnt-2]*256);
		//将收到的数据发送回串口屏
		rx_cnt =0;
		memset(rx_data,0x00,sizeof(rx_data));    //清空数组
	}
	 HAL_UART_Receive_IT(&huart1, (uint8_t *)&rx_byte, 1);//再开启中断
}

串口屏发送的数据格式为0a  _ _  _ _  ff,据此来编写判断条件

if (rx_data[rx_cnt-1] == 0xFF  && rx_data[rx_cnt-4] == 0x0a)  //判断接收数据的帧头帧尾

注意:0a所在字节后第一个字节为低位,第二个字节为高位。

向串口屏发送数据

 printf("show_trans.n1.val=%d\xff\xff\xff",rx_data[rx_cnt-3]+rx_data[rx_cnt-2]*256);
		//将收到的数据发送回串口屏

五、下载并完成调试

<think>嗯,用户现在在问关于陶晶驰串口的引脚定义、接线图和使用说明。我需要先整理已有的信息,看看之前的引用内容里有没有相关的部分。之前的引用提到陶晶驰幕通过TX和RXArduino连接,供电方式是用官方电源和TTL转换器,还有接地的问题。用户可能已经看过这些,但需要更详细的引脚定义和接线图。 首先,我应该确认陶晶驰串口的具体型号,不同型号的引脚可能不同。但用户没有给出型号,可能需要给出通用说明或建议用户查阅具体型号的文档。不过之前的引用提到了电源接正负极,TX、RX的连接,以及GND必须接Arduino的GND,这些是基本点。 用户可能需要知道每个引脚的功能,比如VCC、GND、TX、RX,可能还有其他控制引脚如RST、EN等。接线图方面,需要说明如何连接电源和信号线到Arduino,特别注意共阴或共阳接法,之前的引用提到共阴接法,所以PUL-和DIR-要接GND,这可能和步进电机驱动器有关,但用户现在问的是串口,可能需要区分开。 使用说明方面,包括供电方式(USB或外部电源)、通信波特率设置、是否需要电平转换(比如5V和3.3V的问题),以及常见的接线错误,比如忘记接地导致通信失败。之前的引用提到用户之前没接地,导致只能通过USB连接电脑,这点很重要,需要强调GND连接的必要性。 另外,用户可能需要知道如何通过Arduino编程陶晶驰幕通信,比如发送指令的格式,或者如何接收幕的触摸事件。不过用户现在的问题主要集中在硬件接线上,所以应优先回答引脚定义和接线图,再简要提及使用中的注意事项。 可能的问题还有,如果用户使用的Arduino是5V逻辑,而幕是3.3V的,是否需要电平转换模块?有些串口可能支持5V,但需要确认,避免损坏设备。同时,建议用户参考官方手册,因为不同型号可能有差异。 总结回答结构:先列出常见引脚定义,然后给出接线图示例,接着说明供电和通信的注意事项,最后附上使用提示和常见问题。需要确保LaTeX格式正确,比如变量用$...$,但这个问题可能不太涉及数学公式,可能更多是技术说明。同时生成相关问题,比如如何调试通信问题,如何更新固件等。</think>### 陶晶驰串口引脚定义接线说明 #### 一、基础引脚定义(通用参考) 陶晶驰串口常见接口包含以下核心引脚[^1]: - **VCC/GND**:电源输入(通常为5V或3.3V,需根据型号选择) - **TX/RX**:串口通信引脚(TX发送,RX接收) - **RST**:复位引脚(低电平触发) - **EN**:使能引脚(部分型号支持) - **其他功能引脚**:如背光控制(BL)、触摸信号输出(TP)等 #### 二、典型接线图示例 ```plaintext [陶晶驰幕] [Arduino] VCC ------------- 5V(或外部电源正极) GND ------------- GND TX ------------- RX(软件串口需交叉) RX ------------- TX RST ------------- 悬空或控制引脚(可选) ``` #### 三、关键注意事项 1. **供电逻辑** - 若通过USB-TTL供电,需确保电压匹配(多数型号支持5V)[^1]。 - 独立供电时,需将幕GNDArduino GND共地。 2. **通信配置** - 波特率需幕设置一致(默认常为115200/9600)。 - 若使用硬件串口(Arduino UNO的D0/D1),需断开USB通信。 3. **共地必要性** 用户反馈未连接GND时无法通信,必须通过TTL或独立引线连接Arduino的GND[^1]。 #### 四、操作流程 1. 接线:按上述定义连接VCC/GND/TX/RX 2. 烧录程序:Arduino使用`SoftwareSerial`或硬件串口 3. 发送指令:遵循幕协议(如TJC的Modbus-RTU或自定义协议) #### 五、故障排查 - **无显示**:检查电源电压/电流是否达标 - **通信失败**: - 确认TX/RX交叉连接 - 检测波特率/协议格式 - 测量GND连通性
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值