您的位置:首页 > 其它

zigbee网关 zstack CC2530添加iic温度传感器lm75a

2015-11-19 16:40 387 查看
lm75a已经裸机驱动起来,下一步准备添加在zstack中zigbee网关 cc2530裸机驱动温度传感器LM75A

把iic.c, iic.h, lm75a.c, lm75a.h拷贝到zigbeeGateWay工程中的source目录下

右击app选择添加source把iic.c和lm75a.c添加进来

在协调器的workspace中分别选中iic.c和lm75a.c右击选择option把exclude from build勾上,这样协调器就不会把这两个文件编译进来



把lm75a中main函数等函数删掉仅留下

float ReadTemp(void)


函数

把iic.c中iic初始化函数改成

void iic_init()
{
P0DIR |= 1<<6 | 1<<7; //数据线时钟线设置输出模式
P0INP &= ~(1<<6);//数据线输入上拉或者下拉
P2INP &= ~(1<<5);//数据线输入上拉
set_sda_out();
SCL = 1;
delay();
SDA = 1;
delay();
}


至此,lm75a的驱动函数完成

参考Zigbee网关 cc2530 zstack添加1602驱动的做法,因为这是一个单向控制的,简单的把之前周期报告led状态的函数改成报告温度的函数即可

添加头文件,为了协调器工程不报错,使用的宏if

#ifndef APP_UIP
#include "iic.h"
#include "lm75a.h"
#endif


在初始化函数中添加iic初始化

#ifndef APP_UIP
iic_init();
#endif


将函数

void ZigbeeGateWay_SendPeriodicMessage( void )
中的前3行改成如下:

uint8 led_string[20];
//int led_State = P0;
sprintf((char*)led_string, "Temperature:%2.1f",ReadTemp());


ok,完成,上电测试,

收到的消息

{"From":"Endian","Addr":"3E92","Type":"Message","Content":"Temperature:2.1f"}


好像不太对,%2.1f没给翻译

原因是printf formatter太低了,选Auto,让编译器自己选合适的formatter



上电测试



成功了,温度升高是因为我用手按了一会儿。

更多精彩案例请参考 web.nenewind.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: