Hi3861V100串口1和串口2如何才能共用? - HarmonyOS技术社区 - 电子技术william hill官网 - 广受欢迎的专业电子william hill官网 - 威廉希尔官方网站
分享 收藏 返回

[问答]

Hi3861V100串口1和串口2如何才能共用?

串口初始化异常
单独初始化串口1,2都是可以使用的。
但如果同时初始化两个串口,就会导致另一个串口初始化失败,请问如何解决!image.png

已退回2积分

回帖(2)

jf_00981893

2024-7-23 17:54:55
初始化代码如下:
void uart_init(void)
{
    int8_t ret1 = 0;

    hi_io_set_func(HI_IO_NAME_GPIO_0, HI_IO_FUNC_GPIO_0_UART1_TXD);
    hi_io_set_func(HI_IO_NAME_GPIO_1, HI_IO_FUNC_GPIO_1_UART1_RXD);

    hi_uart_attribute uart1_config = {
        .baud_rate = 115200,          //波特率9600
        .data_bits = 8,             //8位数据位
        .stop_bits = 1,             //1位停止位
        .parity = 0,                //不校验
    };

    ret1 = hi_uart_init(HI_UART_IDX_1, &uart1_config, NULL);

    if (ret1 != HI_ERR_SUCCESS)
    {
        printf("uart1 Initialize Failed!");
        printf("unknow Error,code:%d\n", ret1);
    }

    /*串口2,用于与其他外设通信*/
    int8_t ret2 = 0;

    hi_io_set_func(HI_IO_NAME_GPIO_11, HI_IO_FUNC_GPIO_11_UART2_TXD);
    hi_io_set_func(HI_IO_NAME_GPIO_12, HI_IO_FUNC_GPIO_12_UART2_RXD);

    hi_uart_attribute uart2_config = {
        .baud_rate = 115200,          //波特率9600
        .data_bits = 8,             //8位数据位
        .stop_bits = 1,             //1位停止位
        .parity = 0,                //不校验
        
    };

    ret2 = hi_uart_init(HI_UART_IDX_2, &uart2_config, NULL);

    if (ret2 != HI_ERR_SUCCESS)
    {
        printf("uart2 Initialize Failed!");
        printf("unknow Error,code:%d\n", ret2);
    }
}

孔妞妞

2024-7-24 14:09:54
要解决Hi3861V100芯片的串口1和串口2共用的问题,我们可以按照以下步骤进行操作:

1. **检查硬件连接**:首先确保串口1和串口2的硬件连接正确,包括RX、TX、GND等引脚的连接。如果硬件连接有问题,可能会导致串口初始化失败。

2. **检查电源和时钟**:确保芯片的电源和时钟信号正常,这对于串口的正常工作至关重要。如果电源或时钟信号不稳定,可能会导致串口初始化失败。

3. **检查串口配置**:在初始化串口时,需要确保串口的配置参数(如波特率、数据位、停止位、校验位等)正确。如果参数设置不正确,可能会导致串口初始化失败。

4. **避免资源冲突**:在初始化两个串口时,确保它们使用的中断和资源(如寄存器、内存等)没有冲突。如果有冲突,可能会导致其中一个串口初始化失败。

5. **分步初始化**:尝试先初始化串口1,然后初始化串口2。这样可以观察到在哪个步骤出现了问题,从而更容易找到解决方案。

6. **检查代码逻辑**:检查初始化代码的逻辑,确保没有遗漏或错误。例如,确保在初始化串口1后,正确地释放了相关资源,然后再初始化串口2。

7. **使用调试工具**:使用调试工具(如调试器、示波器等)来观察串口初始化过程中的信号变化,以便找到问题所在。

8. **查阅官方文档**:查阅Hi3861V100的官方文档,了解芯片的串口特性和限制。这有助于理解串口初始化失败的原因,并找到解决方案。

9. **尝试不同的初始化方法**:如果当前的初始化方法无法成功初始化两个串口,可以尝试使用不同的初始化方法或库函数。

10. **联系技术支持**:如果以上方法都无法解决问题,可以考虑联系芯片制造商的技术支持团队,寻求专业的帮助。

通过以上步骤,我们可以逐步排查并解决Hi3861V100串口1和串口2共用的问题。

更多回帖

×
发帖