个人总结之基于MSP430F5510的TMP275驱动
来源:互联网 发布:淘宝联盟可以招代理吗 编辑:程序博客网 时间:2024/05/16 05:56
1.TMP275是什么?
TMP275是一款精度为 ±0.5°C 且具有 12 位模数转换器 (ADC) 的集成数字温度传感器, 可在低至 2.7V 的电源供电下运行, 并且与德州仪器 (TI) 的 LM75、TMP75、 TMP75B 和 TMP175 引脚和寄存器兼容。
2.TMP275有什么用?我们拿来干嘛?
温度传感器当然是拿来测温的,不过测温也有很多种,比如测液态,测人体,测固态等
当然我们这款主要是拿来测大气的温度。
3.这款芯片怎么用?
第一反应当然是看数据手册,查看引脚和时序
软件方面主要了解SDA数据线SCL串行时钟
总 线 闲 置: :SDA 和SCL 线路都保持高电平。
开 始 数 据 传 送: SDA 线路的一个状态变化,从高电平到低电平,同时SCL 线路为高电平,定义了一个启动条件。
每个数据 传送由一个启动条件启动。
停 止 数 据 传 送: : SDA 线路从低电平到高电平的一个状态变化,同时SCL 线路为高电平,定义了一个停止条件。
每个数据传送 都由一个重复的启动或停止条件终止。
数 据 传 输 :在一个启动条件和一个停止条件之间传送的数据字节的数量 没有限制并且由主器件确定。 接收器确认
数据传送。
确 认: 每一个接收器件,当被寻址时, 必须生成一个确认位。 做出确认的器件必须在确认时钟脉冲期间下拉 SDA
线路, 这样,在确认时钟脉冲的高 周期,SDA 线路为稳定低电平。 必须将建立和保持时间考虑在内。 在一个主
器件 接收数据时,通过在从器件已发出的最后一个字节上生成一个 不确认,主器件可发出数据传输终止信号。
4.代码怎么实现?
可以通过I2C开启中断读取
unsigned char tmpValues[2];//tmp取温度值 tmpValues[0]高8位 tmpValues[1]低8位
unsigned char tmpNum=0; //第tmpNum个数据
//tmp275的初始化
void TMP_init()
{
P3SEL|=0x03; //设定P3.0,P3.1 为SDA SCL I2C接口
UCB0CTL1|=UCSWRST; //使能SW复位
UCB0CTL0=UCMST+UCMODE_3+UCSYNC; //选SMCLK,SW复位
UCB0CTL1=UCSSEL_2+UCSWRST;
UCB0BR0=12; //fSCL=SMCLK/12=~100kHZ
UCB0BR1=0;
UCB0I2CSA=0X48; //设从机地址
UCB0CTL1&=~UCSWRST; //清SW
UCB0IE=0X01; //允许接收中断
__bis_SR_register(GIE); //开总中断
}
//读取TMP值
void TMP_readValue(unsigned char *readBuf)
{
unsigned int t;
int i;
UCB0CTL1|=UCTXSTT; //I2C开始条件
t= tmpValues[0]*100 + (unsigned int)(tmpValues[1]*0.0625*0.0625*100);
for(i=0;i<4;i++,readBuf++)
switch(i)
{
case 1:
*readBuf=t/1000;
break;
case 2:
*readBuf=t%1000/100;
break;
case 3:
*readBuf=t%100/10;
break;
case 4:
*readBuf=t%10;
break;
default :
break;
}
}
//中断接收温度数据
#pragma vector=USCI_B0_VECTOR
__interrupt void TMP_RE_ISR()
{
if(UCRXIFG)
{
tmpValues[tmpNum] = UCB0RXBUF; // TX -> RXed character
tmpNum++;
if(tmpNum == 2)
tmpNum = 0;
UCB0IFG &= ~UCRXIFG;
}
}
- 个人总结之基于MSP430F5510的TMP275驱动
- 个人总结之基于MSP430F5510的X9331驱动
- 个人总结之MSP430F5510串口通讯(485)
- 详解温度传感器tmp275驱动
- VIN驱动个人总结
- 基于AMD的模块加载个人总结
- stm32f4开发板驱动LCD液晶屏的个人总结
- 个人对nandflash驱动的总结(ok6410版)
- 基于tomcat5.5的数据库连接池环境设置(个人总结)
- 个人工作之余的学习总结
- 基于mini2440的led驱动编写的总结
- 基于 LNMP 搭建个人网站的填坑之旅
- 2.6 基于SPI总线的SD卡驱动总结 ,at91
- 基于2.6.28.6内核的SPI驱动总结
- 基于mini2440的按键驱动分析与总结
- 基于Windows XP下的USB驱动开发总结
- platform驱动模型编程总结(基于mini2440平台的LED驱动)
- 基于S3C6410的Touch驱动详解(之二)
- 删除链表中倒数第n个节点
- sql代码重构—— 创建自定义函数(三)——自定义函数和存储过程的对比
- 选择排序和冒泡排序
- ScrollView嵌套listView显示不全解决办法
- React Native之Redux使用详解之Actions(29)
- 个人总结之基于MSP430F5510的TMP275驱动
- 利用HydroCMS水利设计成果管理系统进行资源整理和项目策划
- 内存管理技巧、高性能编程技巧
- java 实现mongodb中gridFS文件存储
- js实现从底部跳到 顶部
- 网页——右击
- Co-实现原理分析
- [bzoj4635]数论小测验
- Hibernate及Spring的框架简述