GD32F150G8 USART1 REA接收状态无法使能

[复制链接]
631|9
手机看帖
扫描二维码
随时随地手机跟帖
faithswss|  楼主 | 2021-3-4 15:33 | 显示全部楼层 |阅读模式
void rs422_uart_init(uint32_t baudrate, uint16_t data_bits,uint16_t parity, uint16_t stopbits)
{

        rcu_periph_clock_enable(AS32_GPIO_RX_RCC);
        rcu_periph_clock_enable(AS32_GPIO_TX_RCC);
       
        rcu_periph_clock_enable(AS32_UART_RCC);

        /* connect port to USARTx_Tx */
    gpio_af_set(AS32_GPIO_TX_PORT, AS32_UART_AF, AS32_GPIO_TX_PIN);

    /* connect port to USARTx_Rx */
    gpio_af_set(AS32_GPIO_RX_PORT, AS32_UART_AF, AS32_GPIO_RX_PIN);
   
    /* configure USART Tx as alternate function push-pull */
    gpio_mode_set(AS32_GPIO_TX_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, AS32_GPIO_TX_PIN);
    gpio_output_options_set(AS32_GPIO_TX_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, AS32_GPIO_TX_PIN);

    /* configure USART Rx as alternate function push-pull */
    gpio_mode_set(AS32_GPIO_RX_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, AS32_GPIO_RX_PIN);
    gpio_output_options_set(AS32_GPIO_RX_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, AS32_GPIO_RX_PIN);
       
        usart_deinit(AS32_UART);
    usart_baudrate_set(AS32_UART, baudrate);
    usart_transmit_config(AS32_UART, USART_TRANSMIT_ENABLE);
    usart_receive_config(AS32_UART, USART_RECEIVE_ENABLE);
   
        nvic_irq_enable(AS32_UART_IRQ, 1, 1);
       
#ifdef AS32_DIR_PORT
        rcu_periph_clock_enable(AS32_DIR_RCC);
        gpio_output_options_set(AS32_DIR_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, AS32_DIR_PIN);
        gpio_mode_set(AS32_DIR_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, AS32_DIR_PIN);
        gpio_bit_reset(AS32_DIR_PORT, AS32_DIR_PIN);       
#endif
        usart_interrupt_flag_clear(RS485_UART,USART_INT_FLAG_RBNE_ORERR);
        usart_interrupt_enable(AS32_UART,USART_INT_RBNE);

        usart_enable(AS32_UART);
        usart_transmit_config(AS32_UART, USART_TRANSMIT_ENABLE);
    usart_receive_config(AS32_UART, USART_RECEIVE_ENABLE);
}
ST-link 调试, 寄存器STAT REA位,没法变换为1 , 也就是 接收核心部分没有工作,
同样的代码 使用USART0 就可以, 这是为什么?

使用特权

评论回复
faithswss|  楼主 | 2021-3-4 15:43 | 显示全部楼层
微信截图_20210304154015.png
CTL0 的TEN REN UEN 都为1, 但是 STAT 的 REA为0, TEA为1 ,并且后面运行过程中一致为0.
是哪里设置错误吗?

使用特权

评论回复
faithswss|  楼主 | 2021-3-4 15:45 | 显示全部楼层
#define AS32_UART                        USART1
#define AS32_UART_IRQ                USART1_IRQn
#define AS32_UART_RCC                RCU_USART1
#define AS32_UART_AF                GPIO_AF_1

#define AS32_GPIO_TX_RCC        RCU_GPIOA
#define AS32_GPIO_TX_PORT        GPIOA
#define AS32_GPIO_TX_PIN        GPIO_PIN_2
#define AS32_GPIO_RX_RCC        RCU_GPIOA
#define AS32_GPIO_RX_PORT        GPIOA
#define AS32_GPIO_RX_PIN        GPIO_PIN_3

从逻辑分析仪上能 看到,能够发送出数据, 但无法接收数据

使用特权

评论回复
ccc228| | 2021-5-21 19:51 | 显示全部楼层
你好,楼主的问题解决了吗?我用GD130也遇到了这个问题

使用特权

评论回复
AJSJ| | 2021-5-30 13:12 | 显示全部楼层
6年前生产的GD32F150C8..,使用USART1 ,需要把 USART_CTL1寄存器STRP置位 .  接线 : TX-TX.   RX-RX .
不知道现在GD32F150是否改正了问题.     

使用特权

评论回复
吴工康康| | 2023-9-13 20:14 | 显示全部楼层
我用 GD32E230F8P6 遇到和你一样的问题了,联系了FAE,还没有答复

使用特权

评论回复
jiayuzhang90| | 2024-1-11 10:52 | 显示全部楼层
吴工康康 发表于 2023-9-13 20:14
我用 GD32E230F8P6 遇到和你一样的问题了,联系了FAE,还没有答复

有答复吗?这边也是同样的问题

使用特权

评论回复
Lin@7989| | 2024-1-26 20:40 | 显示全部楼层
本帖最后由 Lin@7989 于 2024-1-26 20:41 编辑

我用 GD32E230K8U6 也遇到同样问题了,原厂例程 USART1 REA 始终为 0 。

使用特权

评论回复
两只袜子| | 2024-1-29 20:57 | 显示全部楼层
硬件交接或者时钟配置问题

使用特权

评论回复
两只袜子| | 2024-1-29 20:58 | 显示全部楼层
此外还有中断和寄存器配置看看有无问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

5

帖子

1

粉丝