UART2传输保持寄存器总是满

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
古祥
离线
最后一次露面:3周4天前
加入:2017-05-12 04:18
UART2传输保持寄存器总是满

嗨,对话
我们使用SDK v1.06 pxp_reporter演示。在BLE广告的每一结束之后,我们将UART2用于Printf String。首先,它可以正常打印字符串。但是我们发现它会陷入“hw_uart_write_buf_full(UART));”稍后。在系统从扩展睡眠模式下唤醒后,似乎有问题。我们的代码如下:

静电void periph_init(空白)
{
hw_gpio_set_pin_function(hw_gpio_port_1,hw_gpio_pin_0,hw_gpio_mode_output,
hw_gpio_func_uart2_tx);
hw_gpio_set_pin_function(hw_gpio_port_1,hw_gpio_pin_2,hw_gpio_mode_input,
hw_gpio_func_uart2_rx);
}

void retarget_init(void)
{
UART_CONFIG UART_INIT = {
.baud_rate = hw_uart_baudrate_115200,
.data = hw_uart_databits_8,
.stop = hw_uart_stopbits_1,
.parity = hw_uart_parity_none,
.use_dma = 0,
.use_fifo = 1,
.rx_dma_channel = hw_dma_channel_invalid,
.tx_dma_channel = hw_dma_channel_2,
};

hw_uart_init(hw_uart2,&uart_init);
}

{
......
hw_uart_send(hw_uart2,“\ r \ n123412341234 \ r \ n”);
......
}

void hw_uart_write(hw_uart_id uart,uint8_t数据)
{
//等待发送寄存器已满
而(hw_uart_write_buf_full(UART));//卡住了这里

//将数据写入传输FIFO
UBA(UART) - > UART2_RBR_THR_DLL_REG =数据;
}

我的代码有问题吗?

设备:
mt_dialog.
离线
最后一次露面:3个月4小时前
职员
加入:2015-06-08 11:34
古兴,

古兴,

使用直接使用低电平HW函数(HW_ Prefix函数)以便与任何外设通常不建议使用68x的外围设备,这就是为什么创建适配器的原因。对于调试或用于常规打印,因为您想使用UART2,您可以使用Config_Retarget标志,这将将PrintF功能重定向到UART2(或对UART,取决于配置)。您可以查看custom_config_qspi.h文件中的ble_multi_link,并检查config_retarget如何配置它是使用config_retarget标志的示例之一。如果您不想使用Retarget Flag,那么您应该使用适配器而不是低级驱动程序。

谢谢mt_dialog.

古祥
离线
最后一次露面:3周4天前
加入:2017-05-12 04:18
嗨,对话

嗨,对话
我们希望使用UART1和UART2。现在UART1配置为retarget端口,它运作良好,我也发现它使用了低电平的HW功能,但不是适配器。因此,我将UART2配为retarget_init()代码配置。关于使用UART适配器,我如何学会使用它?

mt_dialog.
离线
最后一次露面:3个月4小时前
职员
加入:2015-06-08 11:34
古兴,

古兴,

您可以检查如何在UM-B-044用户手册中使用适配器:DA1468X软件平台参考,您还可以找到关于适配器的信息和DOXYGEN中的可用功能(在SDK转到DOC文件夹中搜索索引HTML),您将找到如何使用适配器的所有可用功能以及SDK演示中有示例。如果您想使用两个UART,我建议使用适配器进行应用中的使用。

谢谢mt_dialog.