关于MSP430F249、SHT10温湿度传感器测试 基于Proteus仿真
[复制链接]
本帖最后由 tuyafei 于 2014-5-21 11:04 编辑
MSP430F249、SHT10温湿度传感器测试 基于Proteus
MCU:MSP430F249
Sensor:SHT10温湿度传感器
IDE:IAR for MSP430
仿真软件:Proteus 8.1
说明:1.MSP430F149和249大部分模块兼容,本设计部分除了串口部分代码需要调整其他都可以直接用于149,Proteus中时钟设置为:MCLK:1MHz,SMCLK:1MHz,ACLK:2MHz(串口代码中选择时钟ACLK,波特率:9600,使用的就2MHz, 如果是其他值,可以修改串口时钟源,调整波特率)。
2.SHT10的数据线DATA上拉电阻为20K,如果过小,仿真波形出错,得不到相关数据。
3.正是由于149和249大部分模块兼容,我们可以在没有149硬件平台以及示波器的情况下,使用proteus仿真软件,进行调试,观察波形的输出,以及观察代码流的执行情况。
4.proteus工程下的代码可用,但是因为用的是GCC MSP430编译器,由于计算露点公式中有log10(h),而导致无法编译,具体情况:用#include ,编译报错缺少complex.h文件。需将IAR工程的文件下ss.HEX文件加载到虚拟平台。
5.关于proteus仿真430时,时钟是个需要注意的地方,即便是原理图中画上晶振电路,实际如果不对MSP430F249进行时钟设置也是无效的。本设计代码中未加入相关时钟配置的代码,仿真时也是不需要的,实际硬件运行时可以加入如下代码:- BCSCTL1|=XTS+DIVA_0;
- BCSCTL2|=SELM_2+DIVM_3+SELS+DIVS_3;//选择XT2外部8MHz晶振,8分频,SMCLK选择XT2,8分频
- if (CALBC1_1MHZ != 0xFF) //DCO 部分没有用到,可以忽略该if{...}。
- {
- DCOCTL = 0x00;
- BCSCTL1 = CALBC1_1MHZ; /* Set DCO to 1MHz */
- DCOCTL = CALDCO_1MHZ;
- }
- BCSCTL1&=~XT2OFF;
- do
- {
- IFG1&=~OFIFG;
- for(i=0xFF;i>0;i++);
- }while((IFG1&OFIFG)!=0);
- BSCCTL3|=XT2S_2+LFXT1S_3+XCAP_0;//XT选择外部2MHz晶振
复制代码
proteus原理图如下:
SHT10与MCU连接原理图:(注:2说明,proteus中DATA上拉电阻阻值20K为好,实际硬件以下图为准)
SHT10启动时序:
程序运行效果:
相对湿度测量时序示例,数值“0000’0100‘0011’0001”=1073=35.50%RH(未包含温度补偿)。DATA 有效时间已标出,可参见DATA 线。加粗部分的DATA 线由传感器控制,普通的DATA 线由单片机控制。相对湿度测量时序如下:
温湿度波形输出图如下:
(1)启动相对湿度测量时序波形图:
(2)相对湿度湿度测量时序及启动温度时序图:
(3)温度测量时序图:
proteus仿真输出SHT10指令流图示:
下面简单说明一下对SHT10进行调试跟踪设置步骤:
(1)鼠标指针移到SHT10上右击弹出窗口中Configure Diagnostics。
(2)在弹出的对话框中选择SHT10,点击前面的+以展开子目录,选择需要跟踪仿真的子项Trace Information Level:下面的Full Trace,单击OK完成。
再次说明:proteus 是一个很强大的工具,在没有MCU、相关传感器硬件,而Proteus提供相关虚拟器件的情况下可以进行功能演示和验证,如果有实际硬件的话,最好在实际硬件中调试,仿真提供了前期的验证,对于相关原理的理解很有作用,节省的是实际硬件成本的开销。Proteus库中有很多传感器虚拟器件,我们学了一款MCU ,再结合相关的器件做一些关于IIC 、SPI 、1-Wire等等测试想必是有好处的。本文仅在于给大家提供一点关于MSP430和Proteus仿真的参考,希望对有需要的人有所帮助。
附上相关文档资料:
SHT11 MSP430F249驱动(487.50K)
proteus工程(7.83M)
IAR工程(353.52K)
SHT10_SHT11中文资料.pdf(445.29K)
|