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

基于Nucleo-F031的激光测距仪

[复制链接]
wenyangzeng 发布时间:2020-12-5 20:32
基于Nucleo-F031的激光测距仪; W8 F/ V8 s, S4 }! k
    Nucleo-F031麻雀虽小,五脏俱全。用它来驱动ST的VL53L1X激光测距传感器,是一个经济实用的方案。* l* u# A( V! F7 E, H1 H- O

9 Y! L! ]' {3 J7 Y NUCLEO.png
" Q# j) I. ?8 S% }

5 A6 T7 \2 U* d; s  本方案采用RS232串口通讯方式来驱动VL53L1X。有关VL53L1X的详细资料请参考ST官方:; E! f& w; r, h& P+ r' k# j" n
https://www.stmcu.com.cn/Article ... ode/news/art_id/707
3 |2 A5 x7 N% n8 G% Z; S  \% k6 V6 |9 X% X
硬件连接:
  v5 N0 J0 o& p5 F

' c. a/ Z& P8 a, f" f8 P% z 原理图.png - M( V& Q! D& X3 H( j* v6 S

. Q. l0 m1 r3 J使用Nucleo-F031的PA0、PA3、PA4来驱动OLED显示屏,PA9、PA10是USART1的TXD、RXD。串口波特率9600,8为数据位,1位停止位,无校验。中断方式接收。* P8 F* E8 h' s+ j% G0 p, N! I
  l7 s3 ?" F  s

2 w2 ]7 s% G# K  w) a  X6 n# C" QCubeMX的配置:

, C! i; h' ?$ D" t# } CUBEMX.png : j* j$ ~. P. @& {# r6 x) s- e

- }8 L  b" M3 |$ Z! H$ @( J! V) }$ j
运行结果
5 e& D; Y* O( m5 A
4 X; ]( a0 w0 [' m& ~- Z# M/ D/ D
161908qcsd7czzj39t3j5z.png
2 J; S# d2 P; T! X7 C! _% u) K7 [) e/ N
主要代码:) W0 U# ]* w% D: B' x  j
  1. 5 ?, Z+ ?' A- r0 o' B! |7 Y0 a
  2. int main(void)
    ) Y" N5 _6 V+ m  i% J6 R8 U
  3. {
    4 I) L9 i8 Z$ S7 U/ s
  4.   HAL_Init();
    6 C! J- N# n* ^7 J) P* R/ I" ?. R
  5.   SystemClock_Config();
    9 g$ Q' {1 A% }7 L) d4 p
  6.   MX_GPIO_Init();
    " y2 Y. l% k5 f3 R
  7.   MX_USART1_UART_Init();
    & y6 J  F2 I8 P5 Y
  8.   LCD_Init();5 S  K. T2 s7 ~+ j- g3 D
  9.   __HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);" i: O) t( n$ ]; P7 ^
  10.   __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE); ( u7 h% v4 K* C$ L: m
  11.   __HAL_UART_CLEAR_IDLEFLAG(&huart1);4 B2 O% E/ q1 C9 K
  12.   Tx_buf[0]=0xa5;/ n% i( _, n8 M& ~8 {6 d% a
  13.   Tx_buf[1]=0x45;. ~9 A4 m; Z8 y  k
  14.   Tx_buf[2]=0xea;
    ( i  Q+ V$ H" ]" I( t6 w
  15.   HAL_UART_Transmit(&huart1,(uint8_t *)Tx_buf,3,0xffff);
    1 @* Z6 c  q; A5 Y* ]
  16.   LCD_Print(20,0,"Nucleo-F031",TYPE16X16,TYPE8X16);6 U' l  R! T# K! S+ t* q) O5 Z. Z
  17.   LCD_Print(30,24,"激光测距",TYPE16X16,TYPE8X16);
    3 `- E# t# ]* N2 H/ C" w
  18.   Disp_buf[2]='.';
    7 L( I8 h. h* b
  19.   Disp_buf[4]=' ';
    2 K% L5 y9 u. m5 |+ Q: ?& S
  20.   Disp_buf[5]='C';2 z# Y$ ]" |4 G4 e# V% z
  21.   Disp_buf[6]='m';1 H% ?2 x! o( A7 P
  22.   Disp_buf[7]='\0';6 |7 E% c8 x3 d3 x: }3 J
  23.   while (1)+ I! C  Y$ n# n5 E% t/ m% a2 |
  24.   {9 H7 g9 T( K$ ?" ^
  25.    bcdcode=HEX2BCD(Lenght);9 v2 R/ a- Z9 d8 `3 R. G9 s
  26.    Disp_buf[0]=bcdcode%1000/100+0x30;
    2 t0 p1 u$ u# Q% n
  27.    Disp_buf[1]=bcdcode%100/10+0x30;( b! M+ ^2 g, X: I  t
  28.    Disp_buf[3]=bcdcode%10+0x30;
    , E5 D9 r3 f- a7 k/ P' _. m9 S2 F
  29.    LCD_Print(36,48,Disp_buf,TYPE16X16,TYPE8X16);8 \9 x4 o1 u2 J$ g4 G2 f+ q4 I# s2 |& m; v
  30.    HAL_Delay(200);8 x% @5 L7 e# ^* o! C; D+ K: z
  31.   }
    9 j, r7 D. s! j
  32. }
复制代码

+ q, d6 e# n" r- ^% U中断函数:
  1. void USART1_IRQHandler(void)
    . {! t4 e/ V  X2 w# T  N- d3 p
  2. {* _, I& p& G! {* X" O/ B: L* z9 k
  3. if((USART1->ISR & USART_ISR_RXNE) != RESET)       
      H& z- ?2 g+ j) ]
  4.      {* M# K& d% ?! \9 M) o8 o6 Y3 F
  5.       Rx_buf[RxCount++]=USART1->RDR;
    5 p1 w2 {4 `. E4 P2 n+ E
  6.      }6 ?2 G" S9 E# ~3 D7 S7 a
  7. , ?. N9 a% u. _6 X, y$ @# _, Z' O
  8.     if(RxCount==8)/ [" o* ^* i  N
  9.       {
    6 K" J: _) `" G$ n
  10.       Lenght=Rx_buf[4]<<8;
    7 V+ \9 v& m! V% \' Q; j- v8 z
  11.      Lenght |=Rx_buf[5];% u: K; C9 c; F* l) V- i  X: R$ s3 Q
  12.      RxCount=0;       
    5 b& m6 h/ D. [% }2 v
  13.      }        6 l0 w# O# _/ |# ?8 _6 C8 v  ?
  14.   HAL_UART_IRQHandler(&huart1);+ o% z4 |$ }# s" U( u
  15. }
复制代码

* j( H& H( z, [$ i5 T7 X6 D2 b0 ^$ F; X' A3 G8 l5 W

* Z9 P; m8 i. T9 Y8 J6 I2 A9 m* A' d$ H7 t& d
& I0 C& w/ F3 [) C3 {+ X& K
3 o0 H1 M5 O! @; T, D0 t
收藏 评论0 发布时间:2020-12-5 20:32

举报

0个回答

所属标签

相似技术帖

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