分享: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接受数据时,先接收到的高八位要放在后面,后接收到的低八位放在前面就才行,我看网上很多人都错在这里了。正确的接收方式如下图所示:
程序在附件当中,大家自己看。
受人恩惠,要顶帖
多谢楼主提醒 这个官方的C51例程移植过来就好了啊 学习了 fghlw 发表于 2012-9-10 07:51 static/image/common/back.gif
这个官方的C51例程移植过来就好了啊
直接移植430还是有些问题要注意的,我说的就是那些需要注意的地方,呵呵~ while(HT_mark)循环里应该加一超时判断,万一SHT10出问题了,整个系统就挂了 electricit 发表于 2012-9-10 11:01 static/image/common/back.gif
while(HT_mark)循环里应该加一超时判断,万一SHT10出问题了,整个系统就挂了
超时判断我有,你仔细看程序,我是用定时器计时的,超时极限为2S 学习了!!! 楼主好贴心,赞一个 刚刚搞定
想问一下楼主
你使用了软件复位指令了吗
我使用了好像不是太好用 642142533 发表于 2013-6-25 23:25 static/image/common/back.gif
刚刚搞定
想问一下楼主
你使用了软件复位指令了吗
很久以前的事情了,实在记不清了,不好意思,呵呵 seewolf 发表于 2013-6-26 08:53 static/image/common/back.gif
很久以前的事情了,实在记不清了,不好意思,呵呵
哦
看错了
还以为你刚发的呢 mark一下 谢谢分享 好帖,顶起 多谢楼主经验的分享! PIC单片机也是小端格式 谢谢分享 2年前做过这东西,都忘了当时有没有遇到这个问题,多谢提醒,哈哈。 大小端 那个必须改吗 我看到过有没改的。。。为什么我下载不下来。。。 dammon 发表于 2014-5-28 15:56
大小端 那个必须改吗 我看到过有没改的。。。为什么我下载不下来。。。
大小端问题不一定非得改,这取决于你的单片机存储方式 seewolf 发表于 2014-5-28 23:39
大小端问题不一定非得改,这取决于你的单片机存储方式
最近也再弄SHT10。430用8M调试,但是一直没弄好。手册上说 电压小于4.5V 频率要小于1M,那么我是必须要把时钟改为1M吗?还是只是加大延时 让采样时候频率小于1M即可?设置为8M 我没读出数据 dammon 发表于 2014-6-2 21:54
最近也再弄SHT10。430用8M调试,但是一直没弄好。手册上说 电压小于4.5V 频率要小于1M,那么我是必须要把 ...
电压只是决定了SHT10的采样和通信速率而已,单片机的时钟源无所谓的,你设置好通信频率和采样速率即可 seewolf 发表于 2014-6-2 22:24
电压只是决定了SHT10的采样和通信速率而已,单片机的时钟源无所谓的,你设置好通信频率和采样速率即可 ...
问题是我设置不好啊。。。。。。有大神弄过4308M时钟下的吗????{:cry:} seewolf 发表于 2014-6-2 22:24
电压只是决定了SHT10的采样和通信速率而已,单片机的时钟源无所谓的,你设置好通信频率和采样速率即可 ...
楼主 你这个调试通过了吗?很有参考价值啊 之前没下下来 回头看看 你这个好像就是8M下的 dammon 发表于 2014-6-3 22:28
楼主 你这个调试通过了吗?很有参考价值啊 之前没下下来 回头看看 你这个好像就是8M下的 ...
没调试过的代码我是不会上传的。。。 seewolf 发表于 2014-6-4 10:33
没调试过的代码我是不会上传的。。。
恩我看了 你这个也是将MCLK 给8分频了。结果还是1M的频率。要是在8M下 不好弄啊。
if(TimerA_num==100)
你的程序为什么要设置 1秒采集一次?这有什么用处么 还是只是为了方便if(TimerA_num==100) 本帖最后由 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给注释掉了 没有读出数据 dammon 发表于 2014-6-4 16:44
不知道你的P2.02.12.6都链接的是什么 看到程序里有相关设置。char s_measure(unsigned char *p_value ...
你自己研究下吧,代码都给你了,不难的 seewolf 发表于 2014-6-5 10:42
你自己研究下吧,代码都给你了,不难的
{:cry:} 下进去不好使 我怎么研究啊 dammon 发表于 2014-6-18 16:51
下进去不好使 我怎么研究啊
这我也爱莫能助了,帮只能帮到这个程度了 seewolf 发表于 2014-6-19 13:38
这我也爱莫能助了,帮只能帮到这个程度了
好的有时间我自己在看看吧 谢了
页:
[1]