Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
AB32VG1
RT-Thread
开发板
AB32VG1系列之UART
发布于 2021-03-16 22:16:10 浏览:1239
订阅该版
[tocm] # AB32VG1 -UART串口测评 ## 硬件介绍 CPU: AB5301A, 主频120M, 从芯片手册上可以知道,一共有3个UART, UART0, UART1, UART2. UART2基本没有找到相关的资料,目前驱动完成的是UART0和UART1. 默认板载的通过UART来,默认的USB是用的是UART0. 值得注意的是这个UART0比较特殊: UART0 用的是PA7 UART1用的是PA3 (RX), PA4(TX) ## 板载电路 ![image-20210314193842057.png](https://oss-club.rt-thread.org/uploads/20210316/4299fdbd686f3a71ea29c3bf43ea4b75.png) 从电路中的TXD, RXD 转到update看到,PC接过来的TX和RX都接到一根线上了,这里接的是update, R3其实没有焊电阻,这边采用单根通信。 ## UART GPIO引脚配置 观察了以下代码,hal_uart_mspinit 函数应该是配置GPIO引脚功能的地方: ``` void hal_uart_mspinit(struct uart_handle *huart) { struct gpio_init gpio_init; if (huart->instance == UART0_BASE) { gpio_init.pin = GPIO_PIN_7; gpio_init.pull = GPIO_PULLUP; gpio_init.dir = GPIO_DIR_INPUT; gpio_init.de = GPIO_DIGITAL; gpio_init.alternate = GPIO_AF_MAP_Gx(UT0TXMAP_AF, GPIO_AF_G1) | UT0RXMAP_TX; gpio_init.af_con = GPIO_AFEN | GPIO_AFCON0 | UT0TXMAP_AF; hal_gpio_init(GPIOA_BASE, &gpio_init); } else if (huart->instance == UART1_BASE) { gpio_init.pin = GPIO_PIN_4; gpio_init.dir = GPIO_DIR_OUTPUT; gpio_init.de = GPIO_DIGITAL; gpio_init.alternate = GPIO_AF_MAP_Gx(UT1TXMAP_AF, GPIO_AF_G2); gpio_init.af_con = GPIO_AFEN | GPIO_AFCON0 | UT1TXMAP_AF; hal_gpio_init(GPIOA_BASE, &gpio_init); gpio_init.pin = GPIO_PIN_3; gpio_init.pull = GPIO_PULLUP; gpio_init.dir = GPIO_DIR_INPUT; gpio_init.de = GPIO_DIGITAL; gpio_init.alternate = GPIO_AF_MAP_Gx(UT1RXMAP_AF, GPIO_AF_G2); gpio_init.af_con = GPIO_AFEN | GPIO_AFCON0 | UT1RXMAP_AF; hal_gpio_init(GPIOA_BASE, &gpio_init); /* Interrupt */ } } ``` 从注释中可以观察到。GPIO会有G1,G2,G3,G4...这些配置: 对于UART而言,有以下几种引脚配置,根据alternate后面的GPIO_AF_G2来选择第几种配置 ``` /** * UART0: * G1: tx:PA7 rx:PA6 * G2: tx:PB2 rx:PB1 * G3: tx:PB3 rx:PB4 * G4: tx:PE7 rx:PE6 * G5: tx:PA1 rx:PA0 * G6: tx:PE0 rx:PE1 * G7: tx:PF2 rx:map to tx * * UART1: * G1: tx:PA7 rx:PA6 * G2: tx:PA4 rx:PA3 * G3: tx:PF2 rx:map to tx */ ``` UART0选择的是G1, UART1选择的是G2 ## 测评 由于UART0的TX和RX短接起来了,所以当串口通过PC发送一个字节的时候,这个字节通过对端的TX RX相连,所以PC会收到一次自己发的数据,外加一次console口回显的数据,会收到两次数据,所以如果要正常使用console口的话,请使用官方的tool `Downloader.exe` ![image-20210316213600756.png](https://oss-club.rt-thread.org/uploads/20210316/7762e1b6f53ac23f40cb1f3652a62f16.png) 这边我尝试打开UART1测试了一下,发现可以正常使用,不过需要打开下面的注释的代码 ``` if(hal_uart_getflag(UART1_BASE, UART_FLAG_RXPND)) //RX one byte finish { rt_hw_serial_isr(&(uart_obj[UART1_INDEX].serial), RT_SERIAL_EVENT_RX_IND); } ``` 这样的话,如果外接一颗FT232的话,可以正常的使用console。 不过还是有一点问题,当一个字节一个字节输入的时候,是正常的没有问题,当如果是多个字节输入的时候,例如可以用PC复制一个`help` 4个字节,然后在console里面粘贴,会发现这里的数据是不对的。 ![help.gif](https://oss-club.rt-thread.org/uploads/20210316/15cdd6c4ad5cf0b5cdc426dec0c5bd33.gif) 理论上讲,这里应该是需要正常显示的。但是这边看起来数据不对的。 我有尝试修改驱动得到正确的结果,无奈资料实在太少,查询相关寄存器,也只有RX接收一个字节中断,没有FIFO相关资料。这边推荐以下解决方案。 - UART不知道是否支持DMA,可以采取支持DMA的方式来接收数据 - UART FIFO如果有的话可以启用 - UART idle中断如果有的话,可以启用。 ## 中断 这边中断UART0~UART2都是采用的一个中断向量IRQ_UART0_2_VECTOR
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
RTT_逍遥
https://github.com/supperthomas
文章
36
回答
500
被采纳
76
关注TA
发私信
相关文章
1
RT-THREAD在STM32H747平台上移植lwip
2
正点原子miniSTM32开发板读写sdcard
3
反馈rtt串口驱动对低功耗串口lpuart1不兼容的问题
4
Keil MDK 移植 RT-Thread Nano
5
RT1061/1052 带 RTT + LWIP和LPSPI,有什么坑要注意吗?
6
RT thread HID 如何收发数据
7
求一份基于RTT系统封装好的STM32F1系列的FLASH操作程序
8
RT-Thread修改项目名称之后不能下载
9
rt-studio编译c++
10
有木有移植rt-thread(nano)到riscv 32位MCU上
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部