seewolf 发表于 2012-9-8 09:20:41

分享:msp430控制SHT10测量温湿度程序及调试问题总结

本人近期用到msp430控制SHT10来进行温湿度的测量并通过串口在电脑上显示,发现网上没有什么完成的程序代码,都是一些有问题的程序,故在此分享给大家。
关于调试中的一些问题在此列举一下:
1、SHTXX关于通信逻辑的问题不多说,提醒大家注意时钟速率的问题,当VDD<4.5V时最大频率只能到1M,当VDD>4.5V时,最大频率才能到10M。
2、SHTXX的DATA引脚记得加上拉电阻。
3、相信很多人都是参照官方的那个51历程写的,但是有一点大家可能忽视了,就是msp430和51的内部存储方式,430为小端存储方式,而51为大端存储方式,比如:一个16位的数,大端存储的时候是高八位放在前面,低八位放在后面。而小端存储则是相反地,低八位在前,高八位在后。所以在用430从SHTXX接受数据时,先接收到的高八位要放在后面,后接收到的低八位放在前面就才行,我看网上很多人都错在这里了。正确的接收方式如下图所示:



程序在附件当中,大家自己看。




skynet 发表于 2012-9-8 09:57:05

受人恩惠,要顶帖
多谢楼主提醒

fghlw 发表于 2012-9-10 07:51:45

这个官方的C51例程移植过来就好了啊

gdjsfy_86 发表于 2012-9-10 08:16:02

学习了   

seewolf 发表于 2012-9-10 10:46:14

fghlw 发表于 2012-9-10 07:51 static/image/common/back.gif
这个官方的C51例程移植过来就好了啊

直接移植430还是有些问题要注意的,我说的就是那些需要注意的地方,呵呵~

electricit 发表于 2012-9-10 11:01:44

while(HT_mark)循环里应该加一超时判断,万一SHT10出问题了,整个系统就挂了

seewolf 发表于 2012-9-10 11:03:42

electricit 发表于 2012-9-10 11:01 static/image/common/back.gif
while(HT_mark)循环里应该加一超时判断,万一SHT10出问题了,整个系统就挂了

超时判断我有,你仔细看程序,我是用定时器计时的,超时极限为2S

marrylilili 发表于 2012-12-10 21:55:54

学习了!!!

6329xz 发表于 2013-5-20 12:41:55

楼主好贴心,赞一个

642142533 发表于 2013-6-25 23:25:46

刚刚搞定
   想问一下楼主
      你使用了软件复位指令了吗
         我使用了好像不是太好用

seewolf 发表于 2013-6-26 08:53:57

642142533 发表于 2013-6-25 23:25 static/image/common/back.gif
刚刚搞定
   想问一下楼主
      你使用了软件复位指令了吗


很久以前的事情了,实在记不清了,不好意思,呵呵

642142533 发表于 2013-6-26 10:35:57

seewolf 发表于 2013-6-26 08:53 static/image/common/back.gif
很久以前的事情了,实在记不清了,不好意思,呵呵


   看错了
      还以为你刚发的呢

universe.will 发表于 2013-7-26 14:05:06

mark一下

zlpvch 发表于 2013-8-1 16:34:25

谢谢分享

jwxcelebrate 发表于 2013-8-9 10:17:32

好帖,顶起

hgjdwjz699 发表于 2013-8-9 10:21:59

多谢楼主经验的分享!

csliu911 发表于 2013-9-22 15:06:06

PIC单片机也是小端格式

wsm80828 发表于 2013-9-22 20:58:25

谢谢分享

charley 发表于 2013-10-9 23:26:51

2年前做过这东西,都忘了当时有没有遇到这个问题,多谢提醒,哈哈。

dammon 发表于 2014-5-28 15:56:05

大小端 那个必须改吗 我看到过有没改的。。。为什么我下载不下来。。。

seewolf 发表于 2014-5-28 23:39:50

dammon 发表于 2014-5-28 15:56
大小端 那个必须改吗 我看到过有没改的。。。为什么我下载不下来。。。

大小端问题不一定非得改,这取决于你的单片机存储方式

dammon 发表于 2014-6-2 21:54:08

seewolf 发表于 2014-5-28 23:39
大小端问题不一定非得改,这取决于你的单片机存储方式

最近也再弄SHT10。430用8M调试,但是一直没弄好。手册上说 电压小于4.5V 频率要小于1M,那么我是必须要把时钟改为1M吗?还是只是加大延时 让采样时候频率小于1M即可?设置为8M 我没读出数据

seewolf 发表于 2014-6-2 22:24:38

dammon 发表于 2014-6-2 21:54
最近也再弄SHT10。430用8M调试,但是一直没弄好。手册上说 电压小于4.5V 频率要小于1M,那么我是必须要把 ...

电压只是决定了SHT10的采样和通信速率而已,单片机的时钟源无所谓的,你设置好通信频率和采样速率即可

dammon 发表于 2014-6-3 22:26:06

seewolf 发表于 2014-6-2 22:24
电压只是决定了SHT10的采样和通信速率而已,单片机的时钟源无所谓的,你设置好通信频率和采样速率即可 ...

问题是我设置不好啊。。。。。。有大神弄过4308M时钟下的吗????{:cry:}

dammon 发表于 2014-6-3 22:28:42

seewolf 发表于 2014-6-2 22:24
电压只是决定了SHT10的采样和通信速率而已,单片机的时钟源无所谓的,你设置好通信频率和采样速率即可 ...

楼主 你这个调试通过了吗?很有参考价值啊 之前没下下来 回头看看 你这个好像就是8M下的

seewolf 发表于 2014-6-4 10:33:48

dammon 发表于 2014-6-3 22:28
楼主 你这个调试通过了吗?很有参考价值啊 之前没下下来 回头看看 你这个好像就是8M下的 ...

没调试过的代码我是不会上传的。。。

dammon 发表于 2014-6-4 12:58:55

seewolf 发表于 2014-6-4 10:33
没调试过的代码我是不会上传的。。。

恩我看了 你这个也是将MCLK 给8分频了。结果还是1M的频率。要是在8M下 不好弄啊。

dammon 发表于 2014-6-4 16:05:24

if(TimerA_num==100)

你的程序为什么要设置 1秒采集一次?这有什么用处么 还是只是为了方便if(TimerA_num==100)

dammon 发表于 2014-6-4 16:44:47

本帖最后由 dammon 于 2014-6-4 16:59 编辑

不知道你的P2.02.12.6都链接的是什么 看到程序里有相关设置。char s_measure(unsigned char *p_value, unsigned char *p_checksum, unsigned char mode) 在这个函数里SHT是P1.01.1 那这三个P2口是什么 我把你的程序改成我的对应IO因为我的SHT 是P2.0 2.1我把你的P2给注释掉了 没有读出数据

seewolf 发表于 2014-6-5 10:42:05

dammon 发表于 2014-6-4 16:44
不知道你的P2.02.12.6都链接的是什么 看到程序里有相关设置。char s_measure(unsigned char *p_value ...

你自己研究下吧,代码都给你了,不难的

dammon 发表于 2014-6-18 16:51:46

seewolf 发表于 2014-6-5 10:42
你自己研究下吧,代码都给你了,不难的

{:cry:} 下进去不好使 我怎么研究啊

seewolf 发表于 2014-6-19 13:38:18

dammon 发表于 2014-6-18 16:51
下进去不好使 我怎么研究啊

这我也爱莫能助了,帮只能帮到这个程度了

dammon 发表于 2014-6-25 16:21:43

seewolf 发表于 2014-6-19 13:38
这我也爱莫能助了,帮只能帮到这个程度了

好的有时间我自己在看看吧 谢了
页: [1]
查看完整版本: 分享:msp430控制SHT10测量温湿度程序及调试问题总结