当前位置: 首页 > news >正文

西安网站注册淄博网站建设公司

西安网站注册,淄博网站建设公司,手机建站,国内最新的新闻在学习这个项目之前,我们先了解一下传感器,查阅资料可知,电路板上温湿度传感器型号是GXHTC3,是北京中科银河芯科技有限公司研发的一款芯片,采用I2C接口与ESP32-C3通信,I2C地址是0x70。 接下来我们要进行编写i2c驱动程序,首先我们复制esp-idf-v5.1.3\examples\get-started\samp…在学习这个项目之前,我们先了解一下传感器,查阅资料可知,电路板上温湿度传感器型号是GXHTC3,是北京中科银河芯科技有限公司研发的一款芯片,采用I2C接口与ESP32-C3通信,I2C地址是0x70。 接下来我们要进行编写i2c驱动程序,首先我们复制esp-idf-v5.1.3\examples\get-started\sample_project这个工程到我们的之前所创的实验文件夹底下然后把这个文件夹的名称修改为humi_temphumi是湿度的前4个首字母temp是温度的前4个首字母 接着在VScode中打开我们将要进行学习的项目打开humi_temp文件夹 我们可以先打开humi_temp工程目录下的CMakeList.txt文件,修改工程的名称为humi_temp(也就是project后面括号里的咱们第一节在例程学习中说到过),然后保存关闭此文件 1接下来要进行正式的操作了右击main选择新建文件写入文件名称分别命名为myi2c.c、myi2c.h、gxhtc3.c和gxhtc3.h 2接着打开main下的CMakeList.txt文件可以看到gxhtc3.c和myi2c.c文件已经被添加到路径里面了如果没有的话咱们可以自己手动添加一下哈 3根据视频教程我们需要给myi2c.h和gxhtc3.h文件的最开始处分别加入代码#pragma once这是一条预处理指令告诉编译器这个头文件只可以编译一次 4在myi2c.c文件的最开始添加头文件myi2c.h在gxhtc3.c文件的最开始添加头文件gxhtc3.h在main.c文件的最开始添加头文件myi2c.h和gxhtc3.h 5我们复制i2c_simple工程下i2c_simple_main.c文件中的60~79行代码到humi_temp工程下myi2c.c文件 static esp_err_t i2c_master_init(void) {int i2c_master_port I2C_MASTER_NUM;i2c_config_t conf {.mode I2C_MODE_MASTER,.sda_io_num I2C_MASTER_SDA_IO,.scl_io_num I2C_MASTER_SCL_IO,.sda_pullup_en GPIO_PULLUP_ENABLE,.scl_pullup_en GPIO_PULLUP_ENABLE,.master.clk_speed I2C_MASTER_FREQ_HZ,};i2c_param_config(i2c_master_port, conf);return i2c_driver_install(i2c_master_port, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0); } 上述代码是咱们复制的之前的代码随后会进行修改莫慌莫慌通过资料与老师的讲解我们可以知道这个函数用于初始化I2C接口为主机模式ESP32为I2C主机温湿度传感器为I2C从机。因为这个函数会被其它文件调用所以需要把static关键字去掉 我们看课程视频了解这里面用到了几个宏定义复制i2c_simple_main.c文件中第25~31行代码放到myi2c.h文件中我把这几个宏定义放到下面(相当于没有修改的)接下来会说到修正的 #define I2C_MASTER_SCL_IO CONFIG_I2C_MASTER_SCL //定义SCL和SDA的引脚需要 #define I2C_MASTER_SDA_IO CONFIG_I2C_MASTER_SDA #define I2C_MASTER_NUM 0 //定义I2C的序号ESP32-C3芯片内部只有一个I2C外设这里定义成0就可以了 #define I2C_MASTER_FREQ_HZ 400000 //定义I2C通信速率 #define I2C_MASTER_TX_BUF_DISABLE 0 //定义发送缓存和接收缓存大小主机模式下这两个值设置为0从机模式下才需要用到这个值 #define I2C_MASTER_RX_BUF_DISABLE 0 #define I2C_MASTER_TIMEOUT_MS 1000 修正过后的宏定义如下 #define I2C_MASTER_SCL_IO GPIO_NUM_1 #define I2C_MASTER_SDA_IO GPIO_NUM_0 #define I2C_MASTER_NUM 0 #define I2C_MASTER_FREQ_HZ 400000 #define I2C_MASTER_TX_BUF_DISABLE 0 #define I2C_MASTER_RX_BUF_DISABLE 0 #define I2C_MASTER_TIMEOUT_MS 1000 上面的代码使我们修正过后的宏定义依据条件是第1、2行代码定义SCL和SDA的引脚需要我们需要按照开发板原理图修改第3行定义I2C的序号ESP32-C3芯片内部只有一个I2C外设这里定义成0就可以了第4行定义I2C通信速率一般情况下I2C器件的通信速率有3种100k、400k、1M速度越大通信越快I2C传感器芯片手册上会提到支持的最大速率温湿度传感器GXHTC3的I2C通信速率可以达到1M这里写的是400k不需要修改第5、6行定义发送缓存和接收缓存大小主机模式下这两个值设置为0从机模式下才需要用到这个值 接着我们在myi2c.h文件中声明一下刚才在myi2c.c文件中定义的函数放到define宏定义的下面 extern esp_err_t i2c_master_init(void); 由于这里用到了esp_err_t所以需要在前面包含esp_err.h文件 #include esp_err.h 接着我们打开myi2c.c文件这个文件中用到了i2c函数需要在文件中添加头文件i2c.h不然无法正常运行我的理解为调用这个头文件里的函数 #include driver/i2c.h 到这一步我们的基本代码就已经全部修改完了这是完整的代码 #include myi2c.h #include driver/i2c.hesp_err_t i2c_master_init(void) {int i2c_master_port I2C_MASTER_NUM;i2c_config_t conf {.mode I2C_MODE_MASTER,.sda_io_num I2C_MASTER_SDA_IO,.scl_io_num I2C_MASTER_SCL_IO,.sda_pullup_en GPIO_PULLUP_ENABLE,.scl_pullup_en GPIO_PULLUP_ENABLE,.master.clk_speed I2C_MASTER_FREQ_HZ,};i2c_param_config(i2c_master_port, conf);return i2c_driver_install(i2c_master_port, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0); } 跟随老师的步伐我们接下来在app_main函数中调用i2c_master_init初始化函数复制i2c_simple_main.c文件中第85~86行代码放到main.c文件中的app_main函数中如下代码所示 void app_main(void) {ESP_ERROR_CHECK(i2c_master_init()); //调用初始化函数并且检测是否初始化成功ESP_LOGI(TAG, I2C initialized successfully); //相当于是一个printf函数第1个参数TAG是一个字符串指针变量到时候会输出到串口这个TAG需要在前面定义 } 紧接着复制i2c_simple_main.c文件中第23行代码放到include代码下面 static const char *TAG i2c-simple-example;然后我们把TAG的内容改成main以后在终端窗口看到main就表示这个输出来自于main.c文件改完后如下所示 static const char *TAG main; 接下来我们给main.c添加头文件文件中用到了ESP_ERROR_CHECK和ESP_LOGI需要添加esp_log.h头文件 #include esp_log.h 到这步main的主要函数就是如下 #include stdio.h #include myi2c.h #include gxhtc3.h #include esp_log.hstatic const char *TAG main;void app_main(void) {ESP_ERROR_CHECK(i2c_master_init());ESP_LOGI(TAG, I2C initialized successfully); }到这里呢我们的温湿传感器上半部分结束下半部分我将继续学习主播学的有点头大
http://www.w-s-a.com/news/183800/

相关文章:

  • 用ps怎么做网站的效果图互联网营销师报名入口官网
  • 网站的后端怎么开发网站 白名单
  • 济宁中小企业网站建设wordpress爆破工具
  • 零基础网站建设视频商城系统平台有哪些
  • 那个网站做百科好过wordpress删除
  • 优化网站排名怎么制作网站建设数据库模板
  • 哪个建站软件比较好带论坛都有什么公司需要网站建设
  • 同城便民网站开发自己免费怎么制作网站吗
  • 数据库网站开发教程网站内部优化是什么意思
  • 哈尔滨建站怎么做广西seo快速排名
  • 公司网站建设的不足企业文档管理wordpress
  • .net做的网站代码网站怎么加二级域名
  • 网站建设方案对比分析报告成都短视频代运营
  • 企业所得税税率知多少重庆seo什么意思
  • ftp如何修改网站备案号百度云建站
  • 免费做网站空间dede二手车网站源码
  • 网站服务器需要多大设计网站公司开发
  • asp 网站权限设计做网站业务员
  • 做棋牌网站违法嘛网络服务网络推广
  • 专门做推广的网站吗免费建域名网站
  • 在百度做网站株洲网站平台搭建
  • 用node做的网站南宁网站定制开发
  • 做刷单网站犯法吗wordpress depth
  • 潍坊青州网站建设少儿编程app
  • 表白网站制作源代码自己怎么免费做网站网页
  • 开源网站建设是什么工作个人虚拟网站
  • 网站制作的一般过程优化关键词排名公司
  • 如何使用阿里云建设网站网站两边广告
  • 互联网信息服务小红书seo是什么意思
  • 深圳市南山区建设局网站公司简介网页