RT Thread系统下添加SHT20驱动

制作完自己板子的BSP后使用scons --dist命令生成独立的工程,复制一份出来作为新的工程。

我的上一篇文章有讲怎么生成自己的BSP,地址在这里https://blog.csdn.net/qq_25186745/article/details/103808138

SHT20时IIC总线驱动,所以先要添加IIC驱动到menuconfig目录中。

先打开复制好的工程目录,打开Kconfig文件,文件目录

在文件里添加I2C的menu,这里可以参考BSP里正点原子的stm32f103-atk-warshipv3里的Kconfig文件目录。

修改后如图。

然后启动env进入menuconfig,然后在Hardware Drivers Config->On-chip Peripheral Drivers里就能看到有了Enable I2C1 BUS这个选项了

进入Enable I2C1 BUS里面后要选择SCL和SDA引脚编号,具体的引脚编号可以在stm32f103-my-bsp\libraries\HAL_Drivers下的drv_gpio.c文件中查看。我的板子上SDA引脚接的是单片机的PD0,SCL脚接的是单片机的PD1,所以这里填48和49。

我们把这个打开,然后进入RT-Thread online packages--->peripheral libraries and drivers--->sht20...........

开启这个选项,其中每个功能配置如下

  • sht2x: digital humidity and temperature sensor sht2x driver library:选择使用 sht20软件包;
  • Enable average filter by software:开启采集温湿度软件平均数滤波器功能;
  • The number of averaging:取平均数的采样数目;
  • Peroid of sampling data(unit ms):采集数据的周期,时间单位 ms
  • Version:配置软件包版本,默认最新版本。

保存退出menuconfig后使用pkgs --update命令更新驱动包到BSP中。

然后使用scons --target=mdk5命令更新工程

然后打开工程可以看到在工程中已经添加上了sht20的驱动文件。

然后在main函数的初始化中加入sht20的初始化函数,加上sht20的头文件,编译下载。

然后打开PuTTY,输入ps命令可以看到已经有sht20的任务了。

然后输入sht20 probe i2c1来探测传感器,

sht20的文档在这里http://packages.rt-thread.org/detail.html?package=sht2x

如果没有返回值代表正常,否则探测失败。

然后输入sht20 read读取sht20的温湿度。

返回温度是112,湿度-6,这肯定不正常啊。难道移值失败了吗?

仔细想想IIC两条线用的是PD0和PD1,而STM32F103RC芯片要使用这两个脚的话和其他引脚不一样,要多一个初始化,不知道drv_gpio.c里面有没有加这句初始化,既然不知道那就加上再说。

然后在编译、下载。这下就正常了,SHT20驱动移值完毕。

看来drv_gpio.c里面没有将PD0和PD1作为普通的GPIO口,所以以后要用到PD0和PD1的话不要忘了加上__HAL_AFIO_REMAP_PD01_ENABLE();

移值完成的工程文件

https://download.csdn.net/download/qq_25186745/12079797

猜你喜欢

转载自blog.csdn.net/qq_25186745/article/details/103824114
rt
今日推荐