Benewake TFmini-S\TFmimi Plus\TFluna\TF02-Pro 串口版本雷达在STM32的例程

2023-05-16

目录

  • 文档说明
  • 北醒串口标准通讯协议
  • 硬件接线
  • Lidar通讯代码
    • 1.初始化USART1。
    • 2.开启USART1的空闲中断。
    • 3.USART2_IRQHandler增加中断判断
    • 4.中断处理函数,用于接收雷达数据。
  • 协议处理
    • 注:换printf打印口

例程下载地址
链接: 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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Benewake TFmini-S\TFmimi Plus\TFluna\TF02-Pro 串口版本雷达在STM32的例程 的相关文章

随机推荐

  • curl断点续载

    curl断点续传 xff0c 下载过程中关闭控制台 xff0c 然后重新启动 xff0c 又会接着下载 include 34 stdafx h 34 include lt io h gt include 34 curl curl h 34
  • curl多线程下载实现

    其实libcurl自带一个应用 xff0c 很高大上 xff0c 但是作为范例参考怎么使用libcurl觉得不大适合 xff01 还是写一些helloworl的程序的 xff0c 一目了然 include 34 stdafx h 34 in
  • arduino实现tts

    淘宝上查了一下 xff0c 目前的几款tts模块貌似指令格式类似 Blink Turns on an LED on for one second then off for one second repeatedly This example
  • openwrt编译error: ext4_allocate_best_fit_partial: failed to allocate 13 blocks, out of space?

    编译openwrt时候报如下错误 xff1a Creating filesystem with parameters Size 50331648 Block size 4096 Blocks per group 32768 Inodes p
  • 在mac上创建鼠标双击可执行的shell脚本

    总是觉得mac权限管理好严格 xff0c 要创建向在window上执行bat那样的脚本需要如下操作 首先创建测试脚本 touch clickexe sh open e clickexe sh 在脚本中输入内容 echo 34 hello w
  • rm: cannot remove Permission denied 问题解决方法

    今天编译openwrt系统的时候 xff0c 碰到这样的问题 rm cannot remove xxx Permission denied 但是又不允许用root用户执行 xff0c 所以就要用root用户去修改权限 chmod 777 如
  • Arduino 舵机驱动板编程

    需要下载Adafruit的arduino库 xff0c 这个网上搜索一下很多 我的驱动板是16路基于I2C接口通信 xff0c 这个arduino库底层都做好了 xff0c 精度是12位 xff08 4096 xff09 设置非常简单 xf
  • 3d图形引擎结构

    其实3d引擎结构基本上都是类似的 xff0c 差别也只是细节的上的差别 xff0c 如jme引擎的结构如下 xff1a 首先是viewport xff0c 这个就像2d图层一样 xff0c 每个viewport开始渲染的时候都可以清除缓冲区
  • 树莓派开机启动frpc

    直接在 rc local里启动frpc失败 xff0c 原因是网络好像连接失败 所以写了个shell脚本 xff0c 通过sleep延时一下 xff0c 就启动成功了 首先建立startfrp sh bin bash cd home pi
  • esp32 arduino psram使用

    esp32 arduino固件是已经支持psram了的 xff0c 是模式2 xff0c 所以要使用heap caps malloc来分配 注意选择wrover modelus xff0c 其他的可能驱动不支持 示例代码 xff1a inc
  • 事件驱动框架(二)——状态机

    事件驱动框架 xff08 二 xff09 说明 本篇接上一篇事件驱动框架之后 xff0c 介绍状态机的原理相关的 xff0c 以及事件驱动框架下事件处理状态机的实现 因为代码大多还是参照QP源码 xff0c 所以仅供学习使用 有限状态机介绍
  • 小米10如何安装google play商店

    查了一下网上说可以安装gmail 小米商店就会自动安装google play的 xff0c 但是发现gmail在小米商店已经提示说 因为软件本身问题不能给安装 34 xff0c 查了一无果 xff0c 于是用之前华为安装google的apk
  • php 上传目录权限问题导致无法上传

    php除了有大小严格限制导致失败 xff0c 还有就是上传目录权限问题导致失败 xff0c 如果权限问题执行以下命令即可 sudo chown R www data www data Users George Desktop uploads
  • KeilC STM32添加.c .h文件的方法

    嵌入式初学者添加 c h文件是可能会出现 h头文件无法生效的问题 xff0c 在此将本人经历总结如下 xff0c 供大家参考 1 xff0c 把所需添加的文件 xff0c 放到这个文件夹下 项目名称 Core Src 2 xff0c 右击此
  • 传感器——ATGM332D 北斗定位模块

    NO 8 模型用GPS测速仪 xff08 已完成 xff09 xff08 更新第二版本 xff09 这个是用显示屏显示的 定位精度2 5m GPS模块VCC Arduino的5v GPS模块GND Arduino的GND GPS模块TXD
  • stm32f10--- 学习日志2021-07-10

    不知道标题是啥 xff0c 学到什么记录什么 寄存器占四个字节 偏移地址 xff1a 0x04 基地址 xff1a 0x4001 1000叫做GPIOC的基地址 APB2外设时钟使能寄存器 0x4002 1018 单片机认为它只是一个数值
  • 【unp】unix网络编程卷1-->环境搭建(ubuntu14.04)

    学习unp网络编程 xff0c 树上的例子均存在 include 34 unp h 34 xff0c 故需要对环境进行配置 1 到资源页下载unpv13e 2 解压并将unpv13e 移动到相应的文件夹下 3 编译 gt cd unpv13
  • 北醒激光雷达模组 资料汇总

    目录 1 文档说明1 1 北醒单点系列雷达激光模组相关资料1 2 北醒面阵系列雷达激光模组相关资料1 2 1 产品基本介绍1 2 2 Benewake 北醒 短距 TF LC02 2m资料整理1 2 3 Benewake 北醒 短距 TF
  • TFmini Plus在开源飞控PX4上的应用

    TFmini Plus在开源飞控PX4上的应用 PX4有着自己独特的优势 xff0c 受到广大爱好者的喜爱 TFmini Plus是北醒公司推出的性价比极高的激光雷达 xff0c 受到广大爱好者的追捧 本文介绍TFmini Plus和PX4
  • Benewake TFmini-S\TFmimi Plus\TFluna\TF02-Pro 串口版本雷达在STM32的例程

    目录 文档说明北醒串口标准通讯协议硬件接线Lidar通讯代码1 初始化USART1 2 开启USART1的空闲中断 3 USART2 IRQHandler增加中断判断4 中断处理函数 xff0c 用于接收雷达数据 协议处理注 xff1a 换