Benewake(北醒) TFmini-S\TFmini Plus\TF-Luna\TF02-Pro 串口版本雷达在STM32上的例程


例程下载地址
链接: https://pan.baidu.com/s/192R3bul0AfP5plb6ud1NmA
提取码: j94u

文档说明

本文档基于STM32硬件开发板测试
本例程适用北醒单点系列雷达TFluna、TFmini-S、TFmini-Plus、TF02-Pro
本例程仅适用于北醒标准通讯协议下的雷达

北醒串口标准通讯协议

在这里插入图片描述

硬件接线

使用USART2作为TFLidar的通讯端口,接线如下:

TFlidar开发板
红色线(+5V)+5V
绿色线(TX)PA2(RX)
黑色线(GND)GND

Lidar通讯代码

各例程均使用 USART1用于连接TFLidar,采用空闲中断方式,接收数据。

具体实现步骤如下:

1.初始化USART1。

2.开启USART1的空闲中断。

  HAL_UART_Receive_DMA(&huart1, g_usart1_rx_buf, USART_BUF_SIZE);
  HAL_UART_Receive_DMA(&huart2, g_usart2_rx_buf, USART_BUF_SIZE);

3.USART2_IRQHandler增加中断判断

代码如下:

uint32_t tmp = 0;
if((__HAL_UART_GET_FLAG(&huart2,UART_FLAG_IDLE) != RESET))
{
 __HAL_UART_CLEAR_IDLEFLAG(&huart2);
  tmp = huart2.Instance->SR;
  tmp = huart2.Instance->DR;

  HAL_UART_DMAStop(&huart2);

  tmp =  USART_BUF_SIZE - hdma_usart2_rx.Instance->CNDTR;
  HAL_UART_Receive_DMA(&huart2, g_usart2_rx_buf, USART_BUF_SIZE);

  USART1_RX_Proc(g_usart2_rx_buf, tmp);
}

4.中断处理函数,用于接收雷达数据。

协议处理

Standard Data Format(89BYTE)协议 处理函数如下:

#define BW_TFLidar_DATA_Len             9`
#define BW_TFLidar_DATA_HEAD            0x59`

 void USART1_RX_Proc(uint8_t *buf, uint32_t len)
{
    uint32_t i = 0;
    uint8_t chk_cal = 0;
    uint16_t dist = 0;
		uint16_t strength = 0;
		uint16_t temp = 0;

    if(BW_TFLidar_DATA_Len == len)
    {
        if((BW_TFLidar_DATA_HEAD == buf[0])&&(BW_TFLidar_DATA_HEAD == buf[1]))
        {
            for(i = 0; i < (BW_TFLidar_DATA_Len - 1); i++)
            {
                chk_cal += buf[i];
            }

            if(chk_cal == buf[BW_TFLidar_DATA_Len - 1])
            {
                dist 		 = buf[2] | (buf[3] << 8);
								strength = buf[4] | (buf[5] << 8);
								temp 		 = (buf[4] | (buf[5] << 8))/8-256;
							
								printf("dist = %d cm; strength = %d; temp = %d.\r\n", dist,strength,temp);

            }
        }
    }
}

注:换printf打印口

测试过程中如果需要更换串口打印
请在usart.c文件下更改 huart1或者huart2

PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  /* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
 
  return ch;
}
北醒TFmini-S可以通过以下步骤连接到飞控1. 首先,确保你已搭建好了PX开发环境。你可以参考引用中的链接来搭建PX4开发环境。 2. 在飞控中添加TFmini的驱动程序。你可以参考引用中的链接来添加TFmini的驱动程序。 3. 设置TFmini-S的相关参数。在用户自定义设置中,你可以根据需要调整TFmini-S的最大水平速度触发值(EKF2_RNG_A_VMAX)和最大高度触发值(EKF2_RNG_A_HMAX)。默认值分别为1m/s和5m。你可以根据实际需求进行调整。 4. 在飞控的设置中开启TFmini-S。在设置菜单中选择Sensors,然后选择SENS_TFMINI_CFG选项,并选择TELEM2。确保你已经正确选择了TFmini-S的端口。 请注意,如果你在设置菜单中找不到SENS_TFMINI_CFG选项,请参考引用中的链接,并按照官方教程中的说明进行操作。 通过以上步骤,你就可以成功将北醒TFmini-S接入到飞控中了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Benewake(北醒) TF-Luna/TFmini-S/TF03 串口版本雷达在树莓派 Raspberry Pi 上的运用(Python)](https://blog.csdn.net/zoran_wu/article/details/118903172)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Benewake(北醒) 单点TF系列雷达在开源飞控PX4上的运用](https://blog.csdn.net/zoran_wu/article/details/109469995)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值