IIC调试学习
----------------------应用于TMP1XX等一系列IIC温度传感器--------------------------------
由于项目要用到温度传感器,所以就挑选了TI的一款温度传感器Tmp102,这款温度传感器和TI的很多温度传感器都类似,比如Tmp112,lm75,lm75a等。这款温度传感器所用到的通信方式为IIC,之前仅仅了解过IIC并没有进行实际的操作,借着这个机会进行实际的IIC运用和学习。
其中IIC的基础知识点就不详细说明了,想要进行IIC的编程和学习,首先学习的应该是他的基本知识,只有知道了他的基础知识才能够进行有条不紊的应用。
我用的单片机是STM32F103ZET6,IIC为软件的形式是实现
IIC协议软件实现
- 产生开始信号
void IIC_Start(void)
{
SDA_OUT(); //sdaÏßÊä³ö
IIC_SDA=1;
IIC_SCL=1;
delay_us(4);
IIC_SDA=0;//START:when CLK is high,DATA change form high to low
delay_us(4);
IIC_SCL=0;//ǯסI2C×ÜÏߣ¬×¼±¸·¢ËÍ»ò½ÓÊÕÊý¾Ý
}
2.产生停止信号
void IIC_Stop(void)
{
SDA_OUT();//SDA设置为输出
IIC_SCL=0;
IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
delay_us(4);
IIC_SCL=1;
IIC_SDA=1;//钳住IIC线准备发送或者接受数据
delay_us(4);
}
3.主机等待从机应答
u8 IIC_Wait_Ack(void)
{
u8 ucErrTime=0;
SDA_IN();
IIC_SDA=1;delay_us(1);
IIC_SCL=1;delay_us(1);
while(READ_SDA)
{
ucErrTime++;
if(ucErrTime>250)
{
IIC_Stop();
printf("device no ack\r\n");
return 1;
}
}
IIC_SCL=0;
return 0;
}
4.主机不产生应答
void

测量与显示&spm=1001.2101.3001.5002&articleId=104012125&d=1&t=3&u=32f986a3d73247df8e5dc79959ce77e3)
1332

被折叠的 条评论
为什么被折叠?



