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

[复制链接]
 楼主| jinglixixi 发表于 2023-10-27 23:51 | 显示全部楼层 |阅读模式
本帖最后由 jinglixixi 于 2023-10-27 23:54 编辑

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

1.jpg
图1 串行接口


其主程序的内容为:
  1. int32_t main(void)
  2. {
  3.     RCC_Configuration();
  4.     GPIO_Configuration();
  5.     UART_Configuration();
  6.     USART_SendBuf_Polling(DEBUG_USARTx, TxRxBuffer, ARRAY_SZ(TxRxBuffer) - 1);
  7.     while(1)
  8.     {
  9.         TxRxBufferSize = USART_RecvBuf_Polling(DEBUG_USARTx, TxRxBuffer);
  10.         USART_SendBuf_Polling(DEBUG_USARTx, TxRxBuffer, TxRxBufferSize);
  11.     }
  12. }

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

3.jpg
图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.jpg
图4 测试结果


在模拟方式下,其发送检测指令与接收模拟信息的主程序为:
  1. int32_t main(void)
  2. {
  3.     InitTick(8000000);
  4.     RCC_Configuration();
  5.     GPIO_Configuration();
  6.     UART_Configuration();
  7.     USART_SendData_8bit(DEBUG_USARTx, 0x55);
  8.     while(1)
  9.     {
  10.                 TxRxBufferSize = USART_RecvBuf_Polling(DEBUG_USARTx, TxRxBuffer);
  11.                 USART_SendBuf_Polling(DEBUG_USARTx, TxRxBuffer, TxRxBufferSize);
  12.                 SysTickDelay(500);
  13.                 USART_SendData_8bit(DEBUG_USARTx, 0x55);
  14.     }
  15. }

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


在添加LCD5110显示屏的情况下,其检测与显示的主程序为:
  1. int32_t main(void)
  2. {
  3.     unsigned int l,n=0;
  4.     GPIO_InitTypeDef GPIO_InitStruct = {0};
  5.     RCC_HSI_Enable(RCC_HSIOSC_DIV6);
  6.     __RCC_GPIOC_CLK_ENABLE();
  7.     InitTick(8000000);
  8.     RCC_Configuration();
  9.     GPIO_Configuration();
  10.     UART_Configuration();
  11.     LCD5510_CONFIG();
  12.     LED_SetHigh();
  13.     CS_SetLow();
  14.     LCD5510_Init();
  15.     LCD_prints(0,0,"CW32L031");
  16.     LCD_prints(2,1,"0.000 m");
  17.     LCD_printc(0,1,'L');
  18.     LCD_printc(1,1,'=');
  19.     l=0;
  20.     USART_SendData_8bit(DEBUG_USARTx, 0x55);
  21.     while(1)
  22.     {
  23.                 TxRxBufferSize = USART_RecvBuf_Polling(DEBUG_USARTx, TxRxBuffer);
  24.                 if(TxRxBufferSize>0)
  25.                 {
  26.                          l=TxRxBuffer[1]*256+TxRxBuffer[2];
  27.                 }
  28.                 else
  29.                 {
  30.                          l=0;
  31.                 }
  32.                 LCD_printc(2,1,l/1000+'0');
  33.                 LCD_printc(4,1,l%1000/100+'0');
  34.                 LCD_printc(5,1,l%100/10+'0');
  35.                 LCD_printc(6,1,l%10+'0');
  36.                 SysTickDelay(5000);
  37.                 USART_SendData_8bit(DEBUG_USARTx, 0x55);
  38.           }
  39. }

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

7.jpg
图7 检测左侧距离

8.jpg
图8 检测上方距离

您需要登录后才可以回帖 登录 | 注册

本版积分规则

518

主题

2933

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部

518

主题

2933

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部