OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4093|回复: 6

[ALTERA] FPGA IIC驱动SHT45温湿度传感器

[复制链接]

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2020-8-18
在线时间
29 小时
发表于 2022-8-3 20:46:20 | 显示全部楼层 |阅读模式
5金钱
有没有大佬做过这方面的工作,自己感觉在状态怎么划分的理解上有问题,该分为那些状态,还有就是这个器件没有读写寄存器地址是吗

SHT45.pdf

1.01 MB, 下载次数: 13

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165186
金钱
165186
注册时间
2010-12-1
在线时间
2106 小时
发表于 2022-8-3 23:26:43 | 显示全部楼层
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2022-8-4 09:01:46 | 显示全部楼层
这个还得自己看手册研究和调试,IIC接口时序是通用的,可能重点看下操作哪些寄存器来获取温度值
回复

使用道具 举报

7

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
109
金钱
109
注册时间
2020-8-18
在线时间
29 小时
 楼主| 发表于 2022-8-4 09:29:38 | 显示全部楼层
QinQZ 发表于 2022-8-4 09:01
这个还得自己看手册研究和调试,IIC接口时序是通用的,可能重点看下操作哪些寄存器来获取温度值

你好,这个传感器是写入一个八位指令(但是我没找到要写入的寄存器地址),直接可以一次性获取温度16bit和湿度数据16bit和各自的8bitcrc校验,我也多次翻阅了这个手册,对于整个流程,状态机如何划分跳转还是没太搞清楚,特别是后边的读取温湿度数据这部分,就寻思大佬能不能指点下,我想的是先上电状态,再IDLE,再START再发送控制指令(包括器件地址和读写控制位),再S_ACK1,从这个状态开始根据控制指令的读或者写,划分两条路,一条是写命令后,经过S_ACK后到STOP状态,另一条是读,流程大概是读温度高八位——M_ACK——读温度低八位——M_ACK——CRC——读湿度高八位——M_ACK——读湿度第八位——M_ACK——CRC——NACK——STOP,不知道这么划分对不对,希望大佬指点下
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2022-8-4 11:37:44 | 显示全部楼层
wzzwzz 发表于 2022-8-4 09:29
你好,这个传感器是写入一个八位指令(但是我没找到要写入的寄存器地址),直接可以一次性获取温度16bit ...

状态机的划分主要是一个状态表示一个功能,让代码看上去更清晰易懂一些,这个没有绝对的怎么划分,我们有一些例程和你这个比较类似,你可以参考下,比如EEPROM读写测试实验,DHT11温湿度实验、DS18B20温度实验等
回复

使用道具 举报

13

主题

202

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2012-10-27
在线时间
65 小时
发表于 2022-8-4 20:26:44 | 显示全部楼层
1、对的,第P10、P11页,有一个8Bit的Command。这颗传感器没有寄存器,也没有寄存器地址。这个Command即可理解为“芯片功能选择”。我只是粗略的看了下,应该是选择什么操作功能回复什么类型的数据。具体的命令交互流程、以及字节数,见第十页那张图。

2、建议先用 STM32 调试,将温湿度数据通过串口,或LCD显示出来,直观的进行观察。如果温度数据经观察没有类似散点的数据,CRC校验可忽略。调通后,再尝试将C语言程序改为状态机,比如0.5秒状态机从头执行一次,实现数据读取、发送。

3、我是不明白为什么设计FPGA仍然是单片机的一套思路,我所见是本科毕设,要求必须使用FPGA。我个人的想法,如果是为了应付差事,不熟悉Verilog,且Intel FPGA容量足够,直接跑个Nios软核,像单片机一样调C语言。
回复

使用道具 举报

13

主题

202

帖子

0

精华

高级会员

Rank: 4

积分
527
金钱
527
注册时间
2012-10-27
在线时间
65 小时
发表于 2022-8-4 20:34:29 | 显示全部楼层
ACK(应答)还有所提到START、STOP,都属于I2C协议的一部分。这个是不需要自己从头来写的,找个I2C传输代码例程,把里面一个字节一个字节,发送、读取的代码扒出来,放到自己的程序里,每发送一个字节套用一次。真正需要自己来设计并实现的其实是程序流程(状态机)。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-4 02:27

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表