Arduino 配置PKE8720DF-C13-F10开发板 —— UART回送用户输入的单个字符

目录

1. PKE8720DF-C13-F10开发板UART端口配置 

2. Arduino添加 “UART 回送用户输入的单个字符” Sketch code

3.代码解析

4.连接开发板

(1)材料准备

 (2)电路连接

(3)端口查看

(4)Arduino 编译和烧录

5.实验结果


1. PKE8720DF-C13-F10开发板UART端口配置 

如下图所示,PKE8720DF-C13-F10提供三组UART:

(1)SERIAL1_TX(PB19) ,SERIAL1_RX(PB18);(本文选择这一组)

(2)SERIAL2_TX(PA12) ,SERIAL2_RX(PA13);

(3)LOG_TX(PA7), LOG_RX(PA8)。

PKE8720DF-C13-F10开发板简介 与 配置Arduino开发环境 请参照上一篇文章 :Arduino 配置PKE8720DF-C13-F10开发板——“Blink” 周期性点亮LED灯_zoey_O_o__的博客-CSDN博客

2. Arduino添加 “UART 回送用户输入的单个字符” Sketch code

由于Arduino 基于board“ AMB25/AMB26 (RTL8720DF) ”没有直接可用的UART Examples,这里我们需要自己新建一个sketch:

 具体code 如下:

#include "device.h"
#include "serial_api.h"
#include "serial_ex_api.h"

#define UART_TX PB_19
#define UART_RX PB_18

serial_t    sobj;

void uart_send_string(serial_t *sobj, char *pstr)
{
	unsigned int i=0;

	while (*(pstr+i) != 0) {
		serial_putc(sobj, *(pstr+i));
		i++;
	}
}

void setup() {
  // put your setup code here, to run once:
	serial_init(&sobj,UART_TX,UART_RX);
	serial_baud(&sobj,38400);
	serial_format(&sobj, 8, ParityNone, 1);
  uart_send_string(&sobj, "UART API Demo...\r\n");
	uart_send_string(&sobj, "Hello World!!\r\n");
}

void loop() {
  // put your main code here, to run repeatedly:
  char rc='0';
	while(1){
		rc = serial_getc(&sobj);
		serial_putc(&sobj, rc);
	}
}

3.代码解析

包含的三个头文件 "device.h" ,"serial_api.h" 和 "serial_ex_api.h" 为了调用实现UART功能的函数,可以在源码中查询GitHub - ambiot/ambd_arduino: AmebaD Arduino third-party package SDK

 定义TX,RX的pin 脚:

#define UART_TX PB_19
#define UART_RX PB_18

定义serial对象:

serial_t    sobj;

定义“uart_send_string” 函数:

void uart_send_string(serial_t *sobj, char *pstr)
{
	unsigned int i=0;

	while (*(pstr+i) != 0) {
		serial_putc(sobj, *(pstr+i));
		i++;
	}
}

内部的“serial_putc”函数如下:

void serial_putc(serial_t *obj, int c) 
{
	PMBED_UART_ADAPTER puart_adapter=&(uart_adapter[obj->uart_idx]);

	while (!serial_writable(obj));
	UART_CharPut(puart_adapter->UARTx, (c & 0xFF));

	if (serial_irq_en[obj->uart_idx] & SERIAL_TX_IRQ_EN) {
		// UnMask TX FIFO empty IRQ
		UART_INTConfig(puart_adapter->UARTx, RUART_IER_ETBEI, ENABLE);
	}
}

通过UART按字节传输字符。

配置 setup函数:

void setup() {
  // put your setup code here, to run once:
	serial_init(&sobj,UART_TX,UART_RX);
	serial_baud(&sobj,38400);
	serial_format(&sobj, 8, ParityNone, 1);
  uart_send_string(&sobj, "UART API Demo...\r\n");
	uart_send_string(&sobj, "Hello World!!\r\n");
}

初始化UART设备,设置UART 的波特率为38400HZ,设置serial格式:Data bits=8;奇偶校验 disable;stop bits=1。开机界面语言设置:

 配置loop函数:

void loop() {
  // put your main code here, to run repeatedly:
  char rc='0';
	while(1){
		rc = serial_getc(&sobj);
		serial_putc(&sobj, rc);
	}
}

内部的“serial_getc”函数如下:

int serial_getc(serial_t *obj) 
{
	PMBED_UART_ADAPTER puart_adapter=&(uart_adapter[obj->uart_idx]);
	u8 RxByte = 0;

	while (!serial_readable(obj));
	UART_CharGet(puart_adapter->UARTx, &RxByte);

	return (int)RxByte;
}

从UART口获取字节,返回到char rc;再通过“serial_putc” 函数把 rc 发送到UART,实现回显功能。

4.连接开发板

(1)材料准备

  • 1 块 PKE8720DF-C13-F10开发板
  • 1 根 USB转type-C数据线
  • 1 块 USB转TTL adapter
  • 3 根 杜邦线

 (2)电路连接

UART_TX(_PB_19)连接到USB转TTL adapter上面的RX;

UART_RX(_PB_18)连接到USB转TTL adapter上面的TX;

将USB转TTL adapter上面的GND接到板子上的GND,如下图所示:

(3)端口查看

将USB转TTL的adapter和USB转type-C数据线都插入电脑,查看设备管理器:

USB转type-C数据线:COM16 

USB转TTL的adapter:COM24

(4)Arduino 编译和烧录

Arduino 烧录的port 还是选择USB转type-C数据线的port:COM16

进入Arduino 之前新增的UART.ino Sketch=>Upload 

 烧录成功:

5.实验结果

UART 结果从 USB转TTL的adapter(COM24)输出,选择Trace tool来观察实验结果,实验前需要配置如下参数(与code中一致):

 依次敲a,b,c,d,e,f,g,可以看到UART回显如下:

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值