3976|3

1535

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【ST MEMS防水气压传感器LPS27HHW测评】+基于STM32F411RE的串行通讯 [复制链接]

 

常言道:“工欲善其事,必先利其器。”

对于LPS27HHW气压传感器来讲,要想使其发挥作用,处理完成驱动外,还要解决必备的相关支持,例如要输出传感器的检测结果,就必须有显示器件做支持,

或是使用串行通讯。

对串行通讯来讲,是每个开发板都基本具备,因此就先解决串行通讯问题。

那以哪种开发板为基础呢?

因为从LPS27HHW的例程来看它是基于STM32F411RE开发板的,为便于尽早地实现LPS27HHW的驱动,故以STM32F411RE开发板为测试的基础。

当然,在使用前要先为开发板构建必要的开发环境,由于是选取KEIL为开发工具,因此还为其特地下载和安装了STM32F4xx_DFP.2.14.0的升级包。

这样就有了对STM32F411RE的芯片支持,见图1所示。

图1  实现芯片支持

 

此外,还为其设置了相应的烧写算法,见图2所示。

图2 选取烧写算法

 

实现程序通讯的主程序为:

int main(void)
{
  /* Configure the system clock to 100 MHz */
  SystemClock_Config();
  /* Initialize LED2 */
  LED_Init();
  /* Set LED2 Off */
  LED_Off();
  /* Initialize button in EXTI mode */
  UserButton_Init();
  /* Configure USARTx (USART IP configuration and related GPIO initialization) */
  Configure_USART();
  /* Infinite loop */
  while (1)
  {
    /* Wait for user push button press to start transfer */
    WaitForUserButtonPress();
    /* transfer Tx buffer to PC application */
    BufferTransfer();
  }
}

 

相关的串行通讯函数为:

void WaitForUserButtonPress(void)
{
  while (ubButtonPress == 0)
  {
  }
  ubSend = 0;
}

void BufferTransfer(void)
{

  /* Send characters one per one, until last char to be sent */
  while (ubSend < sizeof(aStringToSend))
  {
#if (USE_TIMEOUT == 1)
    Timeout = USART_SEND_TIMEOUT_TXE_MS;
#endif /* USE_TIMEOUT */

    /* Wait for TXE flag to be raised */
    while (!LL_USART_IsActiveFlag_TXE(USARTx_INSTANCE))
    {
#if (USE_TIMEOUT == 1)
      /* Check Systick counter flag to decrement the time-out value */
      if (LL_SYSTICK_IsActiveCounterFlag()) 
      { 
        if(Timeout-- == 0)
        {
          /* Time-out occurred. Set LED to blinking mode */
          LED_Blinking(LED_BLINK_SLOW);
        }
      } 
#endif /* USE_TIMEOUT */
    }

    /* If last char to be sent, clear TC flag */
    if (ubSend == (sizeof(aStringToSend) - 1))
    {
      LL_USART_ClearFlag_TC(USARTx_INSTANCE); 
    }

    /* Write character in Transmit Data register.
       TXE flag is cleared by writing data in DR register */
    LL_USART_TransmitData8(USARTx_INSTANCE, aStringToSend[ubSend++]);
  }

#if (USE_TIMEOUT == 1)
  Timeout = USART_SEND_TIMEOUT_TC_MS;
#endif /* USE_TIMEOUT */

  /* Wait for TC flag to be raised for last char */
  while (!LL_USART_IsActiveFlag_TC(USARTx_INSTANCE))
  {
#if (USE_TIMEOUT == 1)
    /* Check Systick counter flag to decrement the time-out value */
    if (LL_SYSTICK_IsActiveCounterFlag()) 
    { 
      if(Timeout-- == 0)
      {
        /* Time-out occurred. Set LED to blinking mode */
        LED_Blinking(LED_BLINK_SLOW);
      }
    } 
#endif /* USE_TIMEOUT */
  }

  ubButtonPress =0;
    
  /* Turn LED2 On at end of transfer : Tx sequence completed successfully */
  LED_On();
}

经程序的编译 下载,其结果如图3所示。

图3 完成下载

其运行效果如图4所示,有了它就不愁LPS27HHW的结果显示问题了。

图4 运行效果

最新回复

免费评测:ST MEMS防水气压传感器LPS27HHW 汇总贴:https://bbs.eeworld.com.cn/thread-1152577-1-1.html   详情 回复 发表于 2020-12-28 10:40
点赞 关注
 
 

回复
举报

7671

帖子

18

TA的资源

五彩晶圆(高级)

沙发
 

这么快就搞起来了,很期待看看这东西到底咋样。

点评

例程有问题编译通不过,可能会影响速度。  详情 回复 发表于 2020-12-24 00:12
个人签名

默认摸鱼,再摸鱼。2022、9、28

 
 
 

回复

1535

帖子

1

TA的资源

五彩晶圆(初级)

板凳
 
freebsder 发表于 2020-12-23 18:31 这么快就搞起来了,很期待看看这东西到底咋样。

例程有问题编译通不过,可能会影响速度。

 
 
 

回复

1万

帖子

203

TA的资源

管理员

4
 

免费评测:ST MEMS防水气压传感器LPS27HHW

汇总贴:https://bbs.eeworld.com.cn/thread-1152577-1-1.html

加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身
个人签名玩板看这里:
https://bbs.eeworld.com.cn/elecplay.html
EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表