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

基于Nucleo-F031的激光测距仪

[复制链接]
wenyangzeng 发布时间:2020-12-5 20:32
基于Nucleo-F031的激光测距仪
# Y% H3 @& m+ B1 E6 @) a
    Nucleo-F031麻雀虽小,五脏俱全。用它来驱动ST的VL53L1X激光测距传感器,是一个经济实用的方案。% y% r$ T7 @& }! M" c1 l2 j- X
* s/ i4 Q, F3 @. q) i
NUCLEO.png
% ~+ a- @. l* F7 d4 w6 f

5 ~% c( F: z) M8 [6 H1 g% z  本方案采用RS232串口通讯方式来驱动VL53L1X。有关VL53L1X的详细资料请参考ST官方:
4 R+ T, w9 v6 _# [9 Jhttps://www.stmcu.com.cn/Article ... ode/news/art_id/707; Z$ B  c, @0 N$ J. e
4 G+ ~+ _: \2 ~  H* p
硬件连接:

2 J9 Y/ [& ~3 Q3 T% ~7 _8 T) S5 Q6 k/ U+ E5 n+ N' h3 }
原理图.png
7 P4 L; C4 |# [  Y, e( z6 K. \& Q/ A# Y7 x' G
使用Nucleo-F031的PA0、PA3、PA4来驱动OLED显示屏,PA9、PA10是USART1的TXD、RXD。串口波特率9600,8为数据位,1位停止位,无校验。中断方式接收。
  m& l- R. d' t3 Y# X
4 J% A0 M2 L  P8 W/ @( [
% |! V0 f2 ?8 M$ V5 gCubeMX的配置:
9 v) }' j) M6 `& x
CUBEMX.png * A' r  \; H; z8 E( {

) v3 D7 Z. c7 n# X  o; [
; M; u& Y% w5 J运行结果

; M7 Q5 C( @; a: l" P$ B! ~* O4 @' w! q" `& Y; q" z8 o
161908qcsd7czzj39t3j5z.png   u# H* @0 V2 o6 l% @. ^2 U% A4 C

6 x2 n1 S5 O1 ?# o$ A* J, ?主要代码:
7 E, d" d2 B  V! ]. V! o  O
  1. 9 j& j* c2 y+ S9 |: k- e# v- S. _
  2. int main(void)  Y$ L' ]% S4 o: I
  3. {# P8 O0 L6 W5 J7 n
  4.   HAL_Init();( |* A2 k/ t- T2 p" s
  5.   SystemClock_Config();
    # ?' S$ `1 b3 i* h
  6.   MX_GPIO_Init();
    : p0 q! I! Y( E: K8 x; o& z
  7.   MX_USART1_UART_Init();
    5 Y5 C# u+ |; n' B; T3 G  u  [. I# |4 K
  8.   LCD_Init();
    ) g1 }. K' Q' j2 v
  9.   __HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE);
    5 `" d" Y0 C: ~5 N$ R: k8 ^. o
  10.   __HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);
    ; A! m, ~; l: R1 u; i$ I: B$ U
  11.   __HAL_UART_CLEAR_IDLEFLAG(&huart1);
    5 _# [5 n. z: @9 d
  12.   Tx_buf[0]=0xa5;
      X$ P1 D( T, y! Y0 s2 T
  13.   Tx_buf[1]=0x45;
    + Z4 f# I2 ?% n- b
  14.   Tx_buf[2]=0xea;1 L, U. v2 [! F4 ]" o
  15.   HAL_UART_Transmit(&huart1,(uint8_t *)Tx_buf,3,0xffff);* ], z! Y! f4 J: \$ c! r
  16.   LCD_Print(20,0,"Nucleo-F031",TYPE16X16,TYPE8X16);! b7 ?6 ]' A% I" y7 P
  17.   LCD_Print(30,24,"激光测距",TYPE16X16,TYPE8X16);3 _6 K8 K: K/ O/ B2 F2 `) b. Z: u+ r
  18.   Disp_buf[2]='.';
    & j* J/ s9 C4 x( @" R$ M% O
  19.   Disp_buf[4]=' ';
    ! m. H) v$ t) v4 N) O
  20.   Disp_buf[5]='C';
    9 n6 t8 V3 j6 i8 }0 e8 D6 {3 H8 C
  21.   Disp_buf[6]='m';
    4 F( z3 b( Z, N( B; f; H
  22.   Disp_buf[7]='\0';
      v$ P7 ]4 K2 g# {+ c$ U6 l
  23.   while (1)) y2 d3 K: c* J) ~- g9 l. ?
  24.   {
    & _$ Y0 z+ ]# o3 a
  25.    bcdcode=HEX2BCD(Lenght);, H, f. s! g/ [
  26.    Disp_buf[0]=bcdcode%1000/100+0x30;/ r" N* I' E! \) K5 b) w" `& }
  27.    Disp_buf[1]=bcdcode%100/10+0x30;
    $ h7 F0 ^9 v" g8 i3 o
  28.    Disp_buf[3]=bcdcode%10+0x30;
    , X6 N: X0 Q% |: N  F" Z
  29.    LCD_Print(36,48,Disp_buf,TYPE16X16,TYPE8X16);
      P0 ~  c9 H& c" i0 D6 g3 J
  30.    HAL_Delay(200);' ~5 W7 s2 [4 v0 P% R# t  ?! R
  31.   }
    / @5 T! W: L$ p
  32. }
复制代码

9 c4 O/ l" d5 q中断函数:
  1. void USART1_IRQHandler(void)
    8 A1 J: a* t% O6 S
  2. {( n& M2 X! u- s# N
  3. if((USART1->ISR & USART_ISR_RXNE) != RESET)       
    % x. \2 Z9 ]( n0 d" Y" G
  4.      {
    $ E9 R( v. c) L/ q
  5.       Rx_buf[RxCount++]=USART1->RDR;5 M6 H; H: ~% ?# O" I: @( w6 R
  6.      }2 ]7 }2 c% }/ m! z' X; t

  7. 6 R+ T8 f" c: o$ o, n' s
  8.     if(RxCount==8)% Y2 r2 ^* Z$ \+ E7 {
  9.       {
    7 f2 w# h( o- O
  10.       Lenght=Rx_buf[4]<<8;
    6 t$ d  C: y+ R  |) Y
  11.      Lenght |=Rx_buf[5];
    ; \6 d9 z1 }( z) ^$ i
  12.      RxCount=0;       
    " [( W4 k- G9 |2 H& V( R# ~) A
  13.      }       
    1 R+ u* E' ?' W# i9 A% F
  14.   HAL_UART_IRQHandler(&huart1);+ ?5 K+ f) X2 A  O! A. U! l
  15. }
复制代码
8 |. @' e, N6 T2 a1 B2 W
) t  W) Y' _' d; r- m8 K, Z
1 @& U* [5 p/ X3 T$ ~# J

6 g# C9 m6 M0 Q& v, S1 S) q- K
7 J% x% D! P: X/ [& u0 W& u6 A! \
赞 收藏 评论0 发布时间:2020-12-5 20:32

举报

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