1544|3

282

帖子

2

TA的资源

一粒金砂(高级)

楼主
 

【智能网络台灯】10. Esp32-S2驱动UART [复制链接]

  本帖最后由 hehung 于 2022-10-12 22:10 编辑

过往分享

【2022得捷电子创新设计大赛】最晚开箱帖
【2022得捷电子创新设计大赛】1. ESP32-S2环境搭建及点灯
【智能网络台灯】2. 设置系统时间以及打印
【智能网络台灯】3. ESP32-S2 + lvgl使用
【智能网络台灯】4. ESP32-S2 板载按键使用
【智能网络台灯】5. ESP32-S2 使用sntp进行网络校时
【智能网络台灯】6. ESP32-S2解决RAM空间开销过大的问题

【智能网络台灯】7. 获取实时天气信息并解析

【智能网络台灯】8. Maix bit驱动RGB

【智能网络台灯】9. Maix bit驱动串口

 

前言

上一篇帖子讲解了使用Maix Bit来驱动UART,为了和ESP32-S2进行通信,ESP32-S2也需要驱动UART,之后两个板子的串口连接在一起,共地之后就可以正常通信了。

本帖讲解如何使用ESP32-S2来驱动UART。

 

硬件连接

通过查看ESP32-S2手册可知,UART可以在任何端口上使用,如下图所示

因为ESP32-S2的相机我并不会使用,所以我就使用GPIO4来作为TX,GPIO5作为RX。

还是和上一篇帖子一样使用USB-TTL来做调试,连接如下:

USB-TTL    ESP32-S2

RX             GPIO4

TX             GPIO5

 

代码实现

代码实现,创建一个任务用来接收串口的数据,然后将接收的数据在发送出去,实现如下:

注意:main入口需要调用Uart_TaskInit先初始化UART任务。

/*
 * app_uart.c
 *
 *  Created on: 2022年10月11日
 *      Author: hehung
 */

#include "app_uart.h"
#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/uart.h"
#include "driver/gpio.h"
#include "sdkconfig.h"
#include "esp_log.h"


#define TAG                     ("app_uart")

#define UART_TXD                (4)
#define UART_RXD                (5)
#define UART_RTS                (UART_PIN_NO_CHANGE)
#define UART_CTS                (UART_PIN_NO_CHANGE)

#define UART_PORT_NUM          (1)
#define UART_BUAD_NUM          (115200)

#define UART_BUF_SIZE          (1024)


//任务优先级
#define UART_TASK_PRIO		(3U)
//任务堆栈大小	(单位为字,在32位处理器下,一个字等于4个字节)
#define UART_TASK_SIZE 		(1024U)
//任务句柄
static TaskHandle_t Uart_TaskHandle;


static void Uart_TaskCtrl(void *pvParameters);


// 设置一个初始的时间
void Uart_TaskInit(void)
{
	portBASE_TYPE xReturn = pdPASS;

	xReturn = xTaskCreatePinnedToCore(&Uart_TaskCtrl,
									"Uart_task",
									UART_TASK_SIZE,
									NULL,
									UART_TASK_PRIO,
									Uart_TaskHandle,
									CONFIG_ESP_MAIN_TASK_AFFINITY);
	if(pdPASS != xReturn)
		ESP_LOGE(TAG, "Button task create failed!");
}

static void Uart_TaskCtrl(void *pvParameters)
{
    /* Configure parameters of an UART driver,
     * communication pins and install the driver */
    uart_config_t uart_config = {
        .baud_rate = UART_BUAD_NUM,
        .data_bits = UART_DATA_8_BITS,
        .parity    = UART_PARITY_DISABLE,
        .stop_bits = UART_STOP_BITS_1,
        .flow_ctrl = UART_HW_FLOWCTRL_DISABLE,
        .source_clk = UART_SCLK_APB,
    };
    int intr_alloc_flags = 0;

#if CONFIG_UART_ISR_IN_IRAM
    intr_alloc_flags = ESP_INTR_FLAG_IRAM;
#endif

    ESP_ERROR_CHECK(uart_driver_install(UART_PORT_NUM, UART_BUF_SIZE * 2, 0, 0, NULL, intr_alloc_flags));
    ESP_ERROR_CHECK(uart_param_config(UART_PORT_NUM, &uart_config));
    ESP_ERROR_CHECK(uart_set_pin(UART_PORT_NUM, UART_TXD, UART_RXD, UART_RTS, UART_CTS));

    // Configure a temporary buffer for the incoming data
    uint8_t *data = (uint8_t *) malloc(UART_BUF_SIZE);

    while (1)
    {
        // Read data from the UART
        int len = uart_read_bytes(UART_PORT_NUM, data, UART_BUF_SIZE, 20 / portTICK_RATE_MS);
        // Write data back to the UART
        uart_write_bytes(UART_PORT_NUM, (const char *) data, len);
    }
}

 

效果展示

如下图为实验结果,接下来就是两个板子串接起来就可以实现通信了。

最新回复

速度好快   详情 回复 发表于 2022-10-13 09:33
点赞 关注
 
 

回复
举报

7048

帖子

11

TA的资源

版主

沙发
 

如下图为实验结果,接下来就是两个板子串接起来就可以实现通信了。看样子马上出成果了?

点评

还有一些欠缺,主要是esp32s2资源太少了,用了lvgl+阿里云之后就没什么资源了,调试了太长时间,删了很多东西才用起来  详情 回复 发表于 2022-10-13 08:31
 
 
 

回复

282

帖子

2

TA的资源

一粒金砂(高级)

板凳
 
lugl4313820 发表于 2022-10-13 07:20 如下图为实验结果,接下来就是两个板子串接起来就可以实现通信了。看样子马上出成果了?

还有一些欠缺,主要是esp32s2资源太少了,用了lvgl+阿里云之后就没什么资源了,调试了太长时间,删了很多东西才用起来

 
 
 

回复

282

帖子

7

TA的资源

一粒金砂(高级)

4
 

速度好快

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表