你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

游名:STM32F030+FT1610FF1高精度超声波测距模块测距教程及参...  

[复制链接]
mmuuss586 发布时间:2020-3-6 15:47
基于STM32F030+FT1610FF1高精度超声波测距模块测距教程及参考程序等开源分享
资料下载见附件,电脑登入
微信公众号:游名开源
硬件说明:
    2脚、3脚:需要接4.7到10K上拉电阻到3.3V或5V电源   
特性:  
极简的设计;
8 y$ [( h3 K" {/ S* v! m. f4 t3 A 极轻的重量;5 r! c) ]0 L1 x* a7 z
极高的测量灵敏度;# v& C# W  |- g" t1 p) ]- c
极低的消耗电流;
' M) U+ W% l, t; U, W" g7 Q2 W 接口ESD保护;
8 Z' W+ V5 b' A: y, p3 s1 e5 | 偏捷的安装及使用方式;- T; I# S6 E$ C' R+ o
有效测量距离3cm-1.5m(其它距离范围可定制);

5 G9 p1 M9 v% c) k
支持3到5V宽电压,默认采用IO通信方式(默认IO通讯),接口兼容IIC、UART通信、485通信;
( u+ P. s, e  b' H* n

3 R- O/ W- t7 W! [$ D3 v' [
微信图片_20200306155141.jpg

FT1610FF1超声波测距模块产品规格书V2.0.pdf

下载

1.09 MB, 下载次数: 31

基于STM32F030+FT1610FF1高精度超声波测距模块测距教程.pdf

下载

416.85 KB, 下载次数: 34

游名科技产品目录(2020-7-21).pdf

下载

1.05 MB, 下载次数: 1

收藏 4 评论83 发布时间:2020-3-6 15:47

举报

83个回答
mmuuss586 回答时间:2020-3-6 16:03:25
//定时器输入捕获中断处理回调函数,该函数在HAL_TIM_IRQHandler中会被调用
5 z% T$ r, K! @void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)8 ?, D6 I+ |2 ~4 H6 k
{- s& [4 l; w$ Q
    if((TIM3CH2_CAPTURE_STA&0X80)==0); k  Z; Q: }4 l: V" F) x7 C
    {
: g" S; p& p. r. |, j; N% m" i        if(TIM3CH2_CAPTURE_STA&0X40)           9 w& d& |( C3 Q! s  K" V! `5 b( {) E
            {               
/ |1 T" `" T% \  q                TIM3CH2_CAPTURE_STA|=0X80;     
) m1 h  |# e- \  c" F2 X# b                TIM3CH2_CAPTURE_VAL=HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_2);
  H3 L/ i. R7 l4 e) V0 ]$ f                long long temp=0;% J- ~/ M  y2 P$ I! ?
                                                                float distance=0.0;
( g# D: S' ?. k6 X' w+ |& z                temp=TIM3CH2_CAPTURE_STA&0X3F; * w3 o6 j: I+ h* P' B' m2 D0 W
                temp*=0XFFFF;              ! Z3 S' a/ M* s
                temp+=TIM3CH2_CAPTURE_VAL;    ; v9 U  c9 I  d1 ^
                temp=(temp*100)/58;
  Y' b, j) z# b& [                                                                distance=(float)temp/100;
0 N* o! l6 c' K, D( d# F                printf("Goal distence:%.2lf cm\r\n",distance);
( M) e8 Z1 e9 Q$ z9 E. Q$ `  n                __HAL_TIM_DISABLE(&htim3);      
" v" C# c# f% q            }: N1 p- _$ l; {. x! h, K; k9 D
        else                               - t0 {( x3 R3 c
            {
% a! s) I- \. x. l' W/ f                TIM3CH2_CAPTURE_STA=0;         
7 k; ?& t7 m" [! E# {7 Q  }( ~                TIM3CH2_CAPTURE_VAL=0;
2 \( N6 A. q6 N- r& _3 x+ I% Q                TIM3CH2_CAPTURE_STA|=0X40;    9 s, j: L+ n9 Q' O. u' C
                __HAL_TIM_DISABLE(&htim3);      
' [6 V7 ^+ V7 u! R                __HAL_TIM_SET_COUNTER(&htim3,0);
; b: M( o; G7 R" L3 X                TIM_RESET_CAPTUREPOLARITY(&htim3,TIM_CHANNEL_2);  
% T9 g& g2 s7 G+ H9 W                TIM_SET_CAPTUREPOLARITY(&htim3,TIM_CHANNEL_2, TIM_ICPOLARITY_FALLING);         
- ]" y) j4 ]6 E& L                                                }      
6 u/ j' e! C% F( Y8 b                        }: I( u8 ^7 t: e
}
' v3 A' i& @" P4 ?8 j! a
mmuuss586 回答时间:2020-3-6 16:04:03
然后在main函数中添加定时器中断使能和捕获使能函数,及测试需要的功能代码,main函数如下
2 K" d# F# w. `) Qint main(void)
0 B  g% {7 O3 N) L7 p/ X{/ n( m7 Z# Q- U
! E/ y3 ]% y# u
  HAL_Init();' N- u6 @* V3 R; W. T8 \
  SystemClock_Config();
( Z6 P6 t' y% h; @5 N: i" ~  MX_GPIO_Init();6 K( w: d. j" L2 ?4 y9 n9 m
  MX_DMA_Init();  y" v, w8 {1 f! r/ [; a- Q9 j6 p
  MX_USART2_UART_Init();
+ ~  s0 D6 G; ~) F  MX_TIM3_Init();" O$ a5 U* a5 k; Q' x; ]- b* A+ g  g
  /* USER CODE BEGIN 2 */' r' p1 l: {$ A9 u
        __HAL_TIM_ENABLE_IT(&htim3,TIM_IT_UPDATE);' [" i$ L& I8 g( w. @
        HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_2);
5 C* w8 ]1 j5 W' ]8 V* K7 \, L  while (1)! ~1 x& \- K* a, U4 h; c* l
  {
8 s6 W; c6 G/ t( u                Measure_Start();
' V. N. s: u8 ^% R                 if(TIM3CH2_CAPTURE_STA&0X80)        6 @  ?' }7 d; ?7 }
                {, D4 z1 g9 r/ |# Y8 U
                                __HAL_TIM_SET_COUNTER(&htim3,0);
- q6 K. H, j* V$ r- K. r7 F: w                                TIM_RESET_CAPTUREPOLARITY(&htim3,TIM_CHANNEL_2); 5 s, _$ t6 j6 D
                                TIM_SET_CAPTUREPOLARITY(&htim3,TIM_CHANNEL_2,TIM_ICPOLARITY_RISING);
# l9 w% y2 K* J; y/ H' ~                                __HAL_TIM_ENABLE(&htim3);
; _( x* i& q! M/ R                                TIM3CH2_CAPTURE_STA=0;
1 W# Z! B( z: Z, D5 O8 R                }
- \. c0 O  q& y! l! K                HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin);; l: Q. g5 |0 y! w, r
                HAL_Delay(1000);
! u% r0 M% n' F3 r: H. R
6 v  K! e( Y. F/ e2 P" q8 u  }
9 G" a) W" c; C7 |% H9 U4 N/ C}) v  a5 a/ I4 \2 s7 G" V
mmuuss586 回答时间:2020-3-6 16:03:07
中断服务函数:3 e# Z. O$ B0 p% R0 C
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)3 u8 w! u0 e# _
{0 L4 I  @, F  h' \+ K* n

7 j& Q; e% R" A- l& V    if((TIM3CH2_CAPTURE_STA&0X80)==0)8 E# e5 B: M8 X2 P! _# ^* z+ {
    {
: j6 K* c% ^2 m2 ~! L7 m            if(TIM3CH2_CAPTURE_STA&0X40)
) H7 y; H) y0 V            {# G$ S+ d+ R5 n! g8 y* }/ @# I
                if((TIM3CH2_CAPTURE_STA&0X3F)==0X3F)  h' b- ]* R" B: O# z. F6 W* ~
                {3 Z* D* c2 o8 X* U& a' p
                    TIM3CH2_CAPTURE_STA|=0X80;     
* N, Z+ F0 P* k2 Q                    TIM3CH2_CAPTURE_VAL=0XFFFF;) r" x& d& U3 }% p  p( d% o- w* u
                }& ^7 o8 W3 y+ _  i0 N9 w9 K. L# r
                else TIM3CH2_CAPTURE_STA++;
& G, T) Q) y; v) F            }   
% Q8 p7 B1 N* E3 \8 ~! E    }       ! U3 F, t" q4 s
}
' q! Y/ f, `1 n$ a2 f. @
mmuuss586 回答时间:2020-3-6 15:57:03
1.png
& [9 o% d8 X: W, J8 L 2.png
4 |2 l1 Q: z- n! P 3.png
5 {' h6 F- q( L" C, \5 C) } 4.png
1 z1 S$ y1 }: x 5.png ( m' e' D, K2 O  b# N' f

" F. Q2 H+ b, }. H6 W' N. a
mmuuss586 回答时间:2020-3-6 15:59:37
  ^5 J' c, V7 @; \( @, z% w
基于STM32F030+FT1610FF1高精度超声波测距模块测距教程
. }! u, p+ @( d$ h$ c5 ]
      学习板卡需求:官方NUCLEO-F030R8或自制NUCLEO-DG板卡和FT1610FF1超声波,杜邦线4根;板卡连接如图:
1.png
+ H: m: R* t' w- x6 b" \3 J4 b
3 n' I7 u4 l7 s
mmuuss586 回答时间:2020-3-6 15:59:59
配置和连接方式, K1 x9 ?7 R2 u* x- U
                NUC_LEO-DG-------------- FT1610FF1
$ {. D- \3 @, t. G6 ~  Y                        PB3------------------------------T/SDA/TX
$ t3 w4 C! j! C! J1 ^                        PB5------------------------------E/SCL/RX
( c9 I2 L; F+ w  K                        5V/3V----------------------------VCC) m, {5 W7 n) a, ^: k( g' l" ]) D
                        GND-----------------------------GND
3 g9 W- c1 v4 Z% t$ T4 Q
mmuuss586 回答时间:2020-3-6 16:00:42
USART2串口通信引脚PA2、PA3和LED2的指示灯引脚PA5,基本的Cube配置不做介绍,主要为我们需要通过PB5读取IO的高电平持续时间,这里用到的是定时器的输入捕获功能,具体的Cube配置如下图所示:% d  G# H: S8 K1 m0 P# P9 T
1.png
8 I" C" K8 ^, K7 r- X

( g) L" t% u' t, |/ F4 F: G! c( e2 M; Q4 A
mmuuss586 回答时间:2020-3-6 16:02:14

1 Z% }- q1 B3 y% C然后再NVICSetings中选上TIM3 global interrupt,入下图:
! J! `0 v- @. v% L8 ^ 1.png
# b# {% A* P, V: |& a+ p8 D: F0 `

  \2 r4 ]8 t2 \( r- |4 p
* M+ I; J7 {+ j/ ]) ]0 a
mmuuss586 回答时间:2020-3-6 16:02:41
然后把串口和LED输出配置好后生成MDK代码,编译无错误后添加需要的相关代码,主要缺少的代码为TIM3输入捕获的中断服务函数和串口通信的重定向函数,这里需要添加两个对应的全局变量,代码如下:/ N% _/ ?5 g4 ^/ N& e/ N- O
全局变量:
, f& S! Y# U% m1 J! @. Z  \8 O" Kuint8_t  TIM3CH2_CAPTURE_STA=0;                                / `9 G) f0 R3 s9 {  H, H
uint32_t        TIM3CH2_CAPTURE_VAL;: ~/ a2 W6 t  T/ _
mmuuss586 回答时间:2020-3-6 16:03:42
串口重定向函数为(需要包含对应的stdio.h头文件)
, M2 Y  f( t) A* o4 Uint fputc(int ch,FILE *f)
4 `- ~! m8 r6 l) H( z' u{
: u( J0 K  W- i! A) i5 r6 `5 @2 [        while(0==(USART2->ISR&0x40));
: F8 l8 L6 d7 s        USART2->TDR=ch;
8 ]) Y1 T. T( F+ t& x        return ch;0 ~. |! t9 U% R' C  P7 I
       
3 t7 ]: P5 u) |9 g1 O4 G, L}- Q7 ~' |. g* p! o  h7 {
mmuuss586 回答时间:2020-3-6 16:04:21
其中Measur_Start()函数为触发超声波模块测量开始的TTL信号,代码如下
% W+ u6 m  Z! Wvoid Measure_Start(void)
* g- L, G1 C" A" D+ V+ ~1 j& ~{( ?8 {, F! T/ Y9 E, R1 j3 v- z
        HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_SET);
) v' c0 o. ]2 q9 l7 S& G9 Q                HAL_Delay(1);% W- w' @0 [! W& e  ^# k
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_3, GPIO_PIN_RESET);
" \) M; d* |: c  u3 J: t  ^1 p}7 J4 p! w8 e4 r6 n  O
mmuuss586 回答时间:2020-3-6 16:04:57
这一部分参照模块IO通信模式的时序图可知,模块通信模式设置如下图:
1.png
; L9 E" L1 j4 A3 x. W2 \
/ {, g( [. V6 D  h
mmuuss586 回答时间:2020-3-6 16:06:25
代码添加后,烧录到板卡,然后打开串口通信助手,打开串口后就可以看到模块测试的数据如下图
$ u/ c  q+ c2 D/ R( o. I# w8 f0 D 1.png 4 C. x7 ~, E0 L, W& t* e

6 D& E/ [$ p: _- I5 g
; T1 D7 Q/ W7 h2 V3 h9 c/ [% \3 b
mmuuss586 回答时间:2020-3-6 16:06:48
:P:P:P:P:P:P:P

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版