T113-i 小核 C906 使用 UART2 时 TX 引脚只有 3.3V 高电平、无数据波形,求助排查方向
-
各位好,我现在有一个项目,需要使用 T113-i 的小核 C906 来进行 UART2 的收发。
目前遇到一个问题:UART2 的 TX 引脚虽然被拉高到 3.3V,但是无法发送出任何字符,PC 端也收不到数据,示波器上只有一条恒定的 3.3V 水平线。
下面是我目前的配置和代码情况。一、板级 FEX 配置(UART2 使用 PB0 / PB1,复用功能为 <7>)
我在板级 FEX 中的相关配置如下(节选):
;sunxi platform application
;---------------------------------------------------------------------------------------------------------
; 说明: 脚本中的字符串区分大小写,用户可以修改"="后面的数值,但是不要修改前面的字符串
; 描述gpio的形式:Port:端口+组内序号<功能分配><内部电阻状态><驱动能力><输出电平状态>
;---------------------------------------------------------------------------------------------------------;---------------------------------------------------------------------------------
; version:版本1.00
; machine:板级文件名
;---------------------------------------------------------------------------------
[product]
version = "100"
machine = "fpga";----------------------------------------------------------------------------------
;twi configuration
;twi_used 0:关闭, 1:打开
;twi_port 0:twi0, 1:twi1, 2:twi2, 3:twi3, 4:twi4, 5:twi5, 6:r_twi0, 7:r_twi1
;twi_scl boot0 scl的GPIO配置
;twi_sda boot0 sda的GPIO配置
;----------------------------------------------------------------------------------
;[twi_para]
;twi_used = 0
;twi_port = 2
;twi_scl = port:PC0<3><1><default><default>
;twi_sda = port:PC1<3><1><default><default>;----------------------------------------------------------------------------------
;uart configuration
;uart_debug_port |Boot串口控制器编号 |
;uart_debug_tx |Boot串口发送的GPIO配置 |
;uart_debug_rx |Boot串口接收的GPIO配置 |
;----------------------------------------------------------------------------------
[uart_para]
uart_debug_port = 2
uart_debug_tx = port:PB00<7><1><default><default>
uart_debug_rx = port:PB01<7><1><default><default>[uart2]
uart_used = 1
uart_port = 2
uart_tx = port:PB00<7><1><default><default>
uart_rx = port:PB01<7><1><default><default>;[uart9]
;uart_tx = port:PM00<3><1><default><default>
;uart_rx = port:PM01<3><1><default><default>这里使用的是 PB0 / PB1 作为 UART2 的 TX / RX,
<7> 的复用功能也已经在 T113-i 的 datasheet 中确认是 UART2 的配置。二、RTOS 侧 defconfig 配置(节选)
在 RTOS 的 defconfig 中,目前和 UART2 相关的配置包括:
CONFIG_ARCH_SUN8IW20P1=y
CONFIG_DRIVERS_UART=y
CONFIG_SUNXI_UART_REGISTER_UART2=y
CONFIG_CLI_UART_PORT=2
CONFIG_MULTI_CONSOLE=y
CONFIG_MULTI_CONSOLE_DEBUG=y
CONFIG_UART_MULTI_CONSOLE=y
CONFIG_UART_MULTI_CONSOLE_AS_MAIN=y
CONFIG_COMPONENT_CLI=y三、C906 上的 RTOS 程序代码
在 C906(小核 RTOS)侧,我目前的测试代码大致如下:
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <unistd.h>
#include "interrupt.h"
#include <portmacro.h>
#include "FreeRTOS.h"
#include <hal_uart.h>
#include <hal_timer.h>void cpu0_app_entry(void *param)
{
(void)param;
_uart_config_t uart_config;uart_config.baudrate = UART_BAUDRATE_115200; uart_config.word_length = UART_WORD_LENGTH_8; uart_config.stop_bit = UART_STOP_BIT_1; uart_config.parity = UART_PARITY_NONE; hal_uart_init(2); hal_uart_control(2, 0, &uart_config); hal_uart_disable_flowcontrol(2); hal_uart_set_loopback(2, 0); hal_msleep(1000); uint8_t rbuf[10] = {0}; const char *boot_message = "boot"; while (1) { hal_uart_send(2, (const uint8_t *)boot_message, strlen(boot_message)); hal_uart_put_char(2, 'Y'); hal_uart_receive_no_block(2, rbuf, 5, MS_TO_OSTICK(1000)); hal_msleep(1000); }}
四、实际观测到的现象
当前在板子上的现象如下:
TX 电平被拉高到 3.3V:
只要调用 hal_uart_init(2);,UART2 的 TX 引脚电位就会被拉高到 3.3V。
如果不调用 hal_uart_init(2);,该引脚电位不会被拉高。
因此可以确认:现在控制到的确实是 UART2 的 TX 引脚(PB0)。
但没有任何数据波形:
PC 端通过 CH340(USB 转串口)连接后,在终端里收不到任何字符。
用示波器观察 UART2 TX 引脚,只看到一条恒定的 3.3V 水平线,看不到 UART 发送时应有的跳变波形。
也就是说,现在 UART2 TX 这边的状态是:
电平能被拉高到 3.3V,但发送数据时没有任何波形变化,PC 端也收不到字符。
五、系统环境说明
主核 A7 这边运行的是 Ubuntu(不是 Tina Linux)。
有明確地將DTS裡面uart2的部分disable掉 也沒有在dts裡面有其他使用該腳位PB0 PB1的地方
小核 C906 这边的 RTOS 部分,是从 Tina SDK 里的 RTOS SDK 单独编译出来的固件。然后通过 A7 侧的 Linux(remoteproc) 把 C906 的 RTOS 固件上传并启动。
clock 和 reset 的部分,使用的是 Tina SDK 中 RTOS 相关的官方配置,理论上不应该有问题。
六、目前卡住的问题 & 想请教的方向
目前卡住的核心问题就是:
在上述 FEX、defconfig 和代码配置下,
UART2 的 TX 引脚可以被拉到 3.3V 高电平,
但是发送字符串 "boot" 和 'Y' 时,
示波器上看不到任何数据波形,
PC 端 CH340 串口工具也收不到字符。想请教各位熟悉 T113-i / C906 / RTOS 的工程师:
在已知 引脚、电压、电平变化 都符合预期(TX idle 高电平)的情况下,
还可能有哪些配置或细节会导致 始终没有实际 UART 波形输出?非常感谢大家的时间,如果需要我补充更多信息(例如完整 FEX、更多 log、编译方式等),我也可以继续整理后再贴上来。
再次感谢。
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号