jinglixixi 发表于 2023-10-27 23:51

【CW32L031CxTx StartKit评估板测评】+串口通迅与超声波测距

本帖最后由 jinglixixi 于 2023-10-27 23:54 编辑

CW32L031开发板配有相应的串口及例程资源,以例程UART_Polling为例它可实现两板间的串行通讯。若只有一个开发板,则可以通过串口模块与电脑相连来进行功能测试。在开发板上配置的串行接口如图1所示,使用引脚与连接关系为:UART1_TXD (PA08) -- PCRXUART1_RXD (PA09) -- PCTX
图1 串行接口

其主程序的内容为:int32_t main(void)
{
    RCC_Configuration();
    GPIO_Configuration();
    UART_Configuration();
    USART_SendBuf_Polling(DEBUG_USARTx, TxRxBuffer, ARRAY_SZ(TxRxBuffer) - 1);
    while(1)
    {
      TxRxBufferSize = USART_RecvBuf_Polling(DEBUG_USARTx, TxRxBuffer);
      USART_SendBuf_Polling(DEBUG_USARTx, TxRxBuffer, TxRxBufferSize);
    }
}

在运行该程序时,其输出信息见图2所示。当发送相应信息时,则会原文回应,见图3所示,这就验证该程序的数据收发功能。图2 接收发送信息
图3 原文回应

以此为基础,在按键和串口型超声波测距模块的配合下,可实现物距的检测功能。
检测结果:FF 07 C5 CB = 1989 mm检测结果:FF 06 15 1A = 1557 mm
发送指令:0x55
在进行测试时,以串口发送检测指令0x55,则可得到相应的检测反馈信息,见图4所示。其中:FF是识别符07 C5是检测值,换算为数据值数是1989,单位为mm,即1.989米。CB是校验码,它等于FF+07+C5。
图4 测试结果

在模拟方式下,其发送检测指令与接收模拟信息的主程序为:int32_t main(void)
{
    InitTick(8000000);
    RCC_Configuration();
    GPIO_Configuration();
    UART_Configuration();
    USART_SendData_8bit(DEBUG_USARTx, 0x55);
    while(1)
    {
                TxRxBufferSize = USART_RecvBuf_Polling(DEBUG_USARTx, TxRxBuffer);
                USART_SendBuf_Polling(DEBUG_USARTx, TxRxBuffer, TxRxBufferSize);
                SysTickDelay(500);
                USART_SendData_8bit(DEBUG_USARTx, 0x55);
    }
}

经检测,其测试效果如图5所示,说明在进入超声波测距模块后是可以运转起来的。图5 模拟测试

在添加LCD5110显示屏的情况下,其检测与显示的主程序为:int32_t main(void)
{
    unsigned int l,n=0;
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    RCC_HSI_Enable(RCC_HSIOSC_DIV6);
    __RCC_GPIOC_CLK_ENABLE();
    InitTick(8000000);
    RCC_Configuration();
    GPIO_Configuration();
    UART_Configuration();
    LCD5510_CONFIG();
    LED_SetHigh();
    CS_SetLow();
    LCD5510_Init();
    LCD_prints(0,0,"CW32L031");
    LCD_prints(2,1,"0.000 m");
    LCD_printc(0,1,'L');
    LCD_printc(1,1,'=');
    l=0;
    USART_SendData_8bit(DEBUG_USARTx, 0x55);
    while(1)
    {
                TxRxBufferSize = USART_RecvBuf_Polling(DEBUG_USARTx, TxRxBuffer);
                if(TxRxBufferSize>0)
                {
                         l=TxRxBuffer*256+TxRxBuffer;
                }
                else
                {
                         l=0;
                }
                LCD_printc(2,1,l/1000+'0');
                LCD_printc(4,1,l%1000/100+'0');
                LCD_printc(5,1,l%100/10+'0');
                LCD_printc(6,1,l%10+'0');
                SysTickDelay(5000);
                USART_SendData_8bit(DEBUG_USARTx, 0x55);
          }
}

经程序的编译与下载,其检测效果如图6至图8所示。图6 检测右侧距离
图7 检测左侧距离
图8 检测上方距离

星辰大海不退缩 发表于 2025-11-17 22:16

CW32L031开发板配有相应的串口及例程资源,以例程UART_Polling为例它可实现两板间的串行通讯。
页: [1]
查看完整版本: 【CW32L031CxTx StartKit评估板测评】+串口通迅与超声波测距