在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 1780|回复: 0

[讨论] 用Ginkgo I2C适配器对AM2311温湿度传感器进行读写控制

[复制链接]
发表于 2019-8-5 15:52:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本程序利用Ginkgo I2C适配器底层接口函数对AM2311温湿度传感器进行读写控制,同时将读取的数据打印输出,程序代码如下:
  • #include <stdio.h>
  • #include <Windows.h>
  • //定义I2C适配器底层函数的函数指针
  • typedef int(*I2C_Funtion)(char *in,char *out);
  • //数据存储区
  • unsigned char inString[10240];
  • unsigned char outString[10240];
  • //主函数
  • int main(void)
  • {
  •         // 加载DLL
  •         HINSTANCE hDLL;    //DLL句柄
  •         hDLL = LoadLibrary("vtfreqfunc.dll");
  •         //获取I2C初始化函数指针地址
  •         I2C_Funtion I2C_Init = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_Init");
  •         //获取I2C写数据函数指针地址
  •         I2C_Funtion I2C_WriteData = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_WriteData");
  •         //获取I2C读数据函数指针地址
  •         I2C_Funtion I2C_ReadData = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_ReadData");
  •         //获取I2C设备选择函数指针地址
  •         I2C_Funtion I2C_SelectDevice = (I2C_Funtion)GetProcAddress(hDLL,"VTIF_I2C_SelectDevice");
  •         //选择I2C适配器
  •         printf("选择I2C适配器\n");
  •         I2C_SelectDevice("0",(char*)outString);//选择I2C适配器
  •         printf("%s\n\n",outString);//显示选择适配器操作后的字符串数据
  •         //初始化I2C适配器
  •         //数据格式为:“控制模式|设备地址|读写速度|子地址模式|子地址宽度|初始化通道”
  •         printf("初始化I2C适配器\n");
  •         I2C_Init("1|0xB8|100000|2|0|0",(char*)outString);//初始化I2C适配器
  •         printf("%s\n\n",outString);//显示初始化后适配器返回的初始化结果字符串
  •         //唤醒AM2311传感器(不需要实际的数据)
  •         printf("唤醒AM2311传感器\n");
  •         I2C_WriteData("0|0",(char*)outString);
  •         printf("%s\n\n",outString);//显示数据写操作后的结果
  •         //向AM2311传感器写控制数据,首字节为子地址,本适配器被初始化为无子地址模式,因此该数据无效
  •         printf("向AM2311传感器写控制数据\n");
  •         I2C_WriteData("0x00|0x03|0x00|0x04",(char*)outString);
  •         printf("%s\n\n",outString);//显示数据写操作后的结果
  •         //读取AM2311传感器所测的温度和湿度
  •         printf("读取AM2311传感器所测的温度和湿度\n");
  •         I2C_ReadData("0x00|8",(char*)outString);//首字节为子地址(无效数据),读取8字节数据
  •         printf("%s\n\n",outString);//显示返回来的数据,数据格式为:“数据1|数据2|...|数据n”
  •         FreeLibrary(hDLL);
  •         system("pause");
  •         return 0;
  • }

[color=rgb(51, 102, 153) !important]复制代码

程序运行效果如下:

                               
登录/注册后可看大图

唤醒AM2311传感器I2C总线输出时序:

                               
登录/注册后可看大图
[size=0.83em]2012-8-21 14:17 上传
下载附件 [size=0.83em](26.64 KB)




向AM2311写数据I2C总线输出时序:

                               
登录/注册后可看大图

向AM2311读数据I2C总线输出时序:

                               
登录/注册后可看大图

程序源码包下载(VS2010)工程:

                               
登录/注册后可看大图
AM2311.zip
AM2311传感器使用手册下载:

                               
登录/注册后可看大图
AM2311PDF中文资料.pdf
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-18 22:07 , Processed in 0.012660 second(s), 7 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表