HaaS100 串口UART使用介绍
1、HaaS100串口UART硬件说明
HaaS100开发板上有3个物理串口(UART)。
1.1、UART 0
UART 0是调试串口,已用USB转UART芯片转为USB口,可通过Micro USB线与电脑连接,用于串口打印及shell命令输入。同时,可以通过板子上硬件电阻切换成RS232。
UART 0调试串口在板子上的位置如下图红框所示:
UART 0作为调试口时,使用Micro USB数据线连接串口即可;UART 0作为RS232使用时,在板子上的位置如下图所示:
RS232由于与调试串口共用UART 0,使用时,需要修改板子上的硬件,把UART 0切换成RS232,修改方法如下:
如上图,将图示中红框中的2个焊点短接,UART0切换成RS232接口,此时USB口无法使用。
1.2、UART 1
UART 1扩展成RS485接口,如下图红框所示:
上图中标准的A、B、G表示RS485协议中的A、B和GND。
1.3、UART 2
UART 2为TTL,在42PIN排针上,具体位置如下图所示:
2、软件接口说明
UART接口在头文件include/aos/hal/uart.h中,主要接口如下表:
接口 | 说明 |
hal_uart_init | UART初始化,接口中设置UART的端口号、波特率、数据位宽等 |
hal_uart_send | 通过指定UART发送数据接口 |
hal_uart_send_poll | 该接口HaaS100上未实现 |
hal_uart_recv | 该接口HaaS100上未实现 |
hal_uart_recv_poll | 该接口HaaS100上未实现 |
hal_uart_recv_II | 通过指定UART接收指定长度的串口数据 |
hal_uart_finalize | 串口去初始化接口。 |
具体接口使用说明,可以参考AliOS Things接口帮助文档 https://help.aliyun.com/document_detail/161062.html?spm=a2c4g.11186623.6.574.64c67c26w3auXW
3、使用案例
下面以UART 2使用方式为例,介绍一下UART口的使用方法。
3.1、实现功能
通过UART 2连接电脑,电脑上的串口工具输入一个字符串,按回车后,HaaS100通过UART2往电脑发送"recv="加相同的字符串。
3.2、硬件连接
UART 2为TTL接口,需要通过一个TTL转USB的转接设备连接。如下图所示:
3.3、软件代码
- 串口初始化:
uart_dev_t uart_ttl = {0}; void uart_test_init() { uart_ttl.port = 2; /*ttl use uart 2*/ uart_ttl.config.baud_rate = 115200; uart_ttl.config.data_width = DATA_WIDTH_8BIT; uart_ttl.config.flow_control = FLOW_CONTROL_DISABLED; uart_ttl.config.mode = MODE_TX_RX; uart_ttl.config.parity = NO_PARITY; uart_ttl.config.stop_bits = STOP_BITS_1; hal_uart_init(&uart_ttl); }
- 数据收送
void uart_test() { int ret = 0; int recv_size = 0; int index = 5; char buf[128] = {0}; buf[0] = 'r'; buf[1] = 'e'; buf[2] = 'c'; buf[3] = 'v'; buf[4] = '='; while (1) { ret = -1; recv_size = 0; ret = hal_uart_recv_II(&uart_ttl, &buf[index], 1, &recv_size, 2000); if ((ret == 0) && (recv_size == 1)) { if (buf[index] == '\n') { hal_uart_send(&uart_ttl, buf, index + 1, AOS_WAIT_FOREVER); index = 5; aos_msleep(10); continue; } index ++; if(index >= 128) { hal_uart_send(&uart_ttl, buf, index, AOS_WAIT_FOREVER); index = 5; } } aos_msleep(10); } }
3.4、测试方法
第一步:
在application/example/helloworld_demo/appdemo.c中,增加头文件#include "aos/hal/uart.h",增加上面串口初始化及传输数据收发的代码,然后执行命令aos make helloworld_demo@haas100 -c config; aos make命令编译。
代码详见:
/* * Copyright (C) 2015-2021 Alibaba Group Holding Limited */ #include <stdio.h> #include <stdlib.h> #include <aos/errno.h> #include <aos/kernel.h> #include "aos/init.h" #include "board.h" #include <k_api.h> #include "aos/hal/uart.h" uart_dev_t uart_ttl = {0}; void uart_test_init() { uart_ttl.port = 2; /*ttl use uart 2*/ uart_ttl.config.baud_rate = 115200; uart_ttl.config.data_width = DATA_WIDTH_8BIT; uart_ttl.config.flow_control = FLOW_CONTROL_DISABLED; uart_ttl.config.mode = MODE_TX_RX; uart_ttl.config.parity = NO_PARITY; uart_ttl.config.stop_bits = STOP_BITS_1; hal_uart_init(&uart_ttl); } void uart_test() { int ret = 0; int recv_size = 0; int index = 5; char buf[128] = {0}; buf[0] = 'r'; buf[1] = 'e'; buf[2] = 'c'; buf[3] = 'v'; buf[4] = '='; while (1) { ret = -1; recv_size = 0; ret = hal_uart_recv_II(&uart_ttl, &buf[index], 1, &recv_size, 2000); if ((ret == 0) && (recv_size == 1)) { if (buf[index] == '\n') { hal_uart_send(&uart_ttl, buf, index + 1, AOS_WAIT_FOREVER); index = 5; aos_msleep(10); continue; } index ++; if(index >= 128) { hal_uart_send(&uart_ttl, buf, index, AOS_WAIT_FOREVER); index = 5; } } aos_msleep(10); } } int application_start(int argc, char *argv[]) { int count = 0; printf("uart test entry here!\r\n"); uart_test_init(); uart_test(); }
第二步:
将编译出来的版本烧录到HaaS100中,烧录方法参考:HaaS100快速开始。
按照硬件连接章节图示连接HaaS100和电脑。在电脑上,使用串口工具打开UART2对应的串口,输入字符串后,按回车。串口会打印出recv=加输入的字符串。如下图:
4、开发者技术支持
如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号
更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/
- 【RPi树莓派使用指南】树莓派串口通信介绍
- STM32 使用 printf 发送数据配置方法 -- 串口 UART, JTAG SWO, JLINK RTT
- 使用Beaglebone Black的串口UART
- 51学习第七天(二)--80c51串行口内部结构介绍--串行口控制寄存器SCON--特殊功能寄存器PCON///80c51的串行口工作方式--波特率计算-串口使用之前的初始化
- [教程]PX2开发板上的串口UART3使用入门
- Linux下使用putty进行UART串口调试【转】
- Embedded Linux UART的使用-基本介绍
- stm8s开发(三) UART的使用:串口通信!
- 树莓派3串口(UART)使用问题的解决方法!!!!
- 关于STM8S的UART2串口的学习记录以及使用经验
- [教程]PX2开发板上的串口UART3使用入门
- 树莓派3串口(UART)使用问题的解决方法!
- 树莓派3串口(UART)使用问题(板载蓝牙和串口)!!
- 使用UART(串口注意事项)
- SYD8801 UART使用说明【uart轮发数据代码实现】【 uart中断发数据代码实现】【RFSleep函数对串口的影响】【中断中调用串口打印函数有可能会造成死机】
- 第011课 Jz2400串口(UART)的使用
- Linux下使用putty进行UART串口调试
- [LaunchPad]M430_Launchpad串口UART使用硬件方面注意点
- nrf52840的uart0与uart1双串口使用
- 第011课 串口(UART)的使用