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

基于Nucleo-F031的激光测距仪

[复制链接]
wenyangzeng 发布时间:2020-12-5 20:32
基于Nucleo-F031的激光测距仪
: Q3 ?. }1 Y7 w3 z6 |: l* u+ E
    Nucleo-F031麻雀虽小,五脏俱全。用它来驱动ST的VL53L1X激光测距传感器,是一个经济实用的方案。
8 b. W% u6 i8 @4 ^, P0 m, V: @8 N% r
NUCLEO.png

+ G0 r1 N6 j0 q- K4 X+ z4 N3 ^4 u2 [  g* M* d# N, Y
  本方案采用RS232串口通讯方式来驱动VL53L1X。有关VL53L1X的详细资料请参考ST官方:
. w; s9 t- v4 y( @https://www.stmcu.com.cn/Article ... ode/news/art_id/707
, q9 k" f1 L) Q' N" [' g
0 S# K1 y$ N# i( Q! \1 p$ [硬件连接:
& ~" A. i- g2 N, i9 G" R
4 u! ?9 @( o& m& Y2 d9 Q& N
原理图.png : z8 q! e" ^) [0 N; z4 j
& g. ]' y, X" e. e7 P9 ~
使用Nucleo-F031的PA0、PA3、PA4来驱动OLED显示屏,PA9、PA10是USART1的TXD、RXD。串口波特率9600,8为数据位,1位停止位,无校验。中断方式接收。5 k" J* [( f5 v2 |4 f; u8 G

- s) D5 V) X8 E5 B0 |7 E/ F
; g$ F2 F( }5 T# nCubeMX的配置:

/ ?1 W* Y% z* h: g( ` CUBEMX.png
9 _" i  W$ i1 e% ]3 J
0 U, }" ]/ G7 G/ [
# M+ p1 R; b3 \, K# q运行结果

$ C: z" F- S- r
- W+ [' F1 `( ~: H* }$ ~  _ 161908qcsd7czzj39t3j5z.png
4 O: B" {1 t+ v) t3 _* K6 g
4 F: s- ?0 ?* G# C. Y/ K) O% c主要代码:
8 c" q( Q& E: X* ]$ t) Z4 k9 s
  1. ; \& F; ~% d+ d# z( }
  2. int main(void)
    ; t( {. y. {, j. N! \: q( j( `
  3. {
    * a8 r0 D; E) P; P4 v7 O- a0 Y
  4.   HAL_Init();' x  ?6 G! S2 ~: S5 u) C! O
  5.   SystemClock_Config();
    % s1 L4 E5 u7 q, j; v1 F
  6.   MX_GPIO_Init();
    3 L, `6 W4 W; {1 ?! {" l0 l
  7.   MX_USART1_UART_Init();7 W0 K* v# p" T& f( T9 i% G
  8.   LCD_Init();- _" z% Q; v( D" t8 K7 J9 }
  9.   __HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);
    ' D: z1 e( ]! \) X; Y
  10.   __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
    & _$ h4 q( L6 t+ k" U8 L4 \
  11.   __HAL_UART_CLEAR_IDLEFLAG(&huart1);8 `/ @' Z! z" \- p+ O8 ?
  12.   Tx_buf[0]=0xa5;
    4 n, q; W# j6 Q& x- m( k# ?
  13.   Tx_buf[1]=0x45;
    ' ~* j  G0 `5 `. f7 e1 e7 U
  14.   Tx_buf[2]=0xea;
    " f, y# ~7 l7 S' P9 h# p* {
  15.   HAL_UART_Transmit(&huart1,(uint8_t *)Tx_buf,3,0xffff);
    9 E3 N0 K0 k6 c9 A
  16.   LCD_Print(20,0,"Nucleo-F031",TYPE16X16,TYPE8X16);
    4 |& S) \) R. o7 R: j- ^9 ~
  17.   LCD_Print(30,24,"激光测距",TYPE16X16,TYPE8X16);- f8 C2 W0 p  w; M
  18.   Disp_buf[2]='.';
    / y. y7 |7 J& i/ q; l
  19.   Disp_buf[4]=' ';. F* w- a  [% V3 u6 S7 M" ^8 [! _
  20.   Disp_buf[5]='C';8 Y! U) b% B, T' \$ y
  21.   Disp_buf[6]='m';* n; v& `+ T! W
  22.   Disp_buf[7]='\0';
    * |- G7 t$ k% m" E; b, |
  23.   while (1)
    2 m$ `7 S9 _* @2 t) W5 P
  24.   {
    0 H' K4 }! K4 a. v+ c0 C% I2 D
  25.    bcdcode=HEX2BCD(Lenght);# t" u- ~+ ?  l" Y
  26.    Disp_buf[0]=bcdcode%1000/100+0x30;1 Z% m! i/ }2 I) D
  27.    Disp_buf[1]=bcdcode%100/10+0x30;9 d9 W* ~% l  p
  28.    Disp_buf[3]=bcdcode%10+0x30;
    % J- }8 G. z  u6 t
  29.    LCD_Print(36,48,Disp_buf,TYPE16X16,TYPE8X16);+ ^; k( m' n2 e8 V- z
  30.    HAL_Delay(200);
    / q+ a4 o9 d- X" Z6 h" {: e
  31.   }+ a0 V; [" Y1 z' ^; l& Z7 F! s
  32. }
复制代码

+ A: o; O3 c% V% \3 T* z中断函数:
  1. void USART1_IRQHandler(void)
    # e0 i% y: Y& ~+ C, t
  2. {6 d. ?; W  E3 K  K
  3. if((USART1->ISR & USART_ISR_RXNE) != RESET)       
    - H- Y# p0 q5 W
  4.      {
    6 ~4 y6 O3 O9 _" u  ~, m0 b! @
  5.       Rx_buf[RxCount++]=USART1->RDR;& Y- m$ ^) M* }$ V7 {% [
  6.      }1 ~; U7 V: x2 }5 \5 q9 y4 j

  7. 9 S1 C2 D* ?. B! T
  8.     if(RxCount==8)6 D: w+ \- a# S- z
  9.       {
    + s  i% R- ^$ Y7 h  {2 ^3 I
  10.       Lenght=Rx_buf[4]<<8;
    9 q& k# S3 c  d/ p. v/ l
  11.      Lenght |=Rx_buf[5];
    : b" A% o# e+ l9 a# Y- c
  12.      RxCount=0;        9 c6 K+ U+ \% g* i# c
  13.      }        8 q9 T; u! Z1 d: w# v3 u1 G
  14.   HAL_UART_IRQHandler(&huart1);
    0 F- A" j$ n0 p8 }/ N
  15. }
复制代码
- n9 R8 M+ \6 }/ f
7 C. G6 n( B  G) v* V5 L

9 p- l1 a2 S" Y  b- e2 @1 s  D( W
: m- m7 ]* c* n& f" V
" q" r8 ~# X$ Q/ Z0 P( g
0 J( l( k- w8 r9 g1 @8 q0 Z$ n
收藏 评论0 发布时间:2020-12-5 20:32

举报

0个回答

所属标签

相似技术帖

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版