关于iic的问题

2019-08-22 13:12发布

我使用原子哥的iic程序去操作一个温湿度原件可是连应答都没都 我把原件资料和代码贴出来 希望有大神帮我找出问题     我接的是4.7的上拉电阻 Vcc=3.3
[mw_shl_code=c,true]#include "dht11_iic.h" #include"myiic.h" #include "delay.h" #include "sys.h" u16 ws_rec[10];//存放接受到的温湿度 void dht_write(void)//向传感器发送指令 { IIC_Start(); IIC_Send_Byte(0XB8); //发送写命令 delay_us(1500); IIC_Stop();//产生一个停止条件 delay_ms(2); IIC_Start(); IIC_Send_Byte(0XB8); //发送写命令 IIC_Wait_Ack(); IIC_Send_Byte(0x03);//发送功能码 IIC_Wait_Ack(); IIC_Send_Byte(0x00);//发送起始地址 IIC_Wait_Ack(); IIC_Send_Byte(0x04);//读取寄存器个数 IIC_Wait_Ack(); IIC_Stop();//产生一个停止条件 delay_ms(2); } void dht11_rec(void)//接受传感器数据 { u8 i; IIC_Start(); IIC_Send_Byte(0XB9); //进入接收模式 IIC_Wait_Ack(); delay_us(50); for(i=0;i<8;i++) //接收从机发来的字节 ws_rec=IIC_Read_Byte(1); IIC_Stop();//产生一个停止条件 } unsigned short crc16(u16 *ptr, unsigned char len) { unsigned short crc=0xFFFF; unsigned char i; while(len--) { crc ^=*ptr++; for(i=0;i<8;i++) { if(crc & 0x01) { crc>>=1; crc^=0xA001; } else { crc>>=1; } } } return crc; } void data_deal(u8 *tem,u8 *huim)//获取温湿度 { dht_write(); delay_ms(10); dht11_rec(); ws_rec[8]=ws_rec[7]<<8+ws_rec[6]; // if (ws_rec[8]==crc16(ws_rec,6)) { *huim=ws_rec[3]; *tem=ws_rec[5]; } }[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
gamerskyer
1楼-- · 2019-08-22 16:52
 精彩回答 2  元偷偷看……
z2500053109
2楼-- · 2019-08-22 18:08
初始化在主函数里做过了
ST-FAE-SALE
3楼-- · 2019-08-22 19:37
换成5V好使不
z2500053109
4楼-- · 2019-08-22 20:24
回复【3楼】ST-FAE-SALE:
---------------------------------
还是用不了
chineseben
5楼-- · 2019-08-22 21:17
Jlink 仿真,加逻辑分析仪抓,对照时序图应该很好查的
z2500053109
6楼-- · 2019-08-23 01:00
 精彩回答 2  元偷偷看……

一周热门 更多>