stm32f103 sht20,接不接传感器都显示128.多 的值! 请各位大神指教一下,那里有问题?

2019-07-16 07:55发布

在网上找的 SHT20 的程序,我只修改了端口 由PB6、PB7也成了 PB10、PB11
可运行后,读出的值为128.多,温湿度的值都不变。
好像接不接传感器都显示128.多  的值!
请各位大神指教一下,那里有问题?谢谢


.h 的设置,我只改了前3行


#define SHT2x_I2C_PORT          GPIOB
#define SHT2x_SCL_PIN           GPIO_Pin_10        //6
#define SHT2x_SDA_PIN           GPIO_Pin_11        //7


#define SHT2x_SCL_HIGH()        GPIO_SetBits(SHT2x_I2C_PORT, SHT2x_SCL_PIN)
#define SHT2x_SCL_LOW()         GPIO_ResetBits(SHT2x_I2C_PORT, SHT2x_SCL_PIN)


#define SHT2x_SDA_HIGH()             GPIO_SetBits(SHT2x_I2C_PORT, SHT2x_SDA_PIN)
#define SHT2x_SDA_LOW()         GPIO_ResetBits(SHT2x_I2C_PORT, SHT2x_SDA_PIN)


#define SHT2x_SCL_STATE()       GPIO_ReadInputDataBit(SHT2x_I2C_PORT, SHT2x_SCL_PIN)
#define SHT2x_SDA_STATE()       GPIO_ReadInputDataBit(SHT2x_I2C_PORT, SHT2x_SDA_PI




.c 初始化函数,我只加了 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);这一句


void SHT2x_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;


        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);


    GPIO_InitStructure.GPIO_Pin =  SHT2x_SCL_PIN | SHT2x_SDA_PIN;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(SHT2x_I2C_PORT, &GPIO_InitStructure);


    SHT2x_SCL_HIGH();
    SHT2x_SDA_HIGH();


    SHT2x_Delay(80);


    SHT2x_SoftReset();
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
zhifubao
1楼-- · 2019-07-16 10:49
SDA这个引脚在使用时既要做为输入又要作为输出,你这样初始化他肯定有问题。
dongoyang
2楼-- · 2019-07-16 13:02
zhifubao 发表于 2018-6-12 10:42
SDA这个引脚在使用时既要做为输入又要作为输出,你这样初始化他肯定有问题。

应该怎么做,我是个新手,能不能给个代码?
zhifubao
3楼-- · 2019-07-16 15:42
dongoyang 发表于 2018-6-12 11:15
应该怎么做,我是个新手,能不能给个代码?

在读取数据的时候将SDA设置为输入,在写数据的时候将SDA设置为输出,建议你参考原子的例程,他也是使用模拟IIC。

评分

参与人数 1积分 +5 收起 理由 dongoyang + 5 您的付出是论坛的动力,感谢您一直支持!

查看全部评分

dongoyang
4楼-- · 2019-07-16 15:47
 精彩回答 2  元偷偷看……
liujinyi016
5楼-- · 2019-07-16 16:23
可发一下电路看看吧,感觉应该是硬件上的问题的

一周热门 更多>