打印
[开发板]

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

[复制链接]
480|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 jinglixixi 于 2023-10-27 23:54 编辑

CW32L031开发板配有相应的串口及例程资源,以例程UART_Polling为例它可实现两板间的串行通讯。
若只有一个开发板,则可以通过串口模块与电脑相连来进行功能测试。
在开发板上配置的串行接口如图1所示,使用引脚与连接关系为:
UART1_TXD (PA08) -- PCRX
UART1_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[1]*256+TxRxBuffer[2];
                }
                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 检测上方距离

使用特权

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

本版积分规则

464

主题

2780

帖子

38

粉丝