[STM32F1] 接不接传感器都显示128.多

[复制链接]
 楼主| chenho 发表于 2020-1-1 10:53 | 显示全部楼层 |阅读模式
在网上找的 SHT20 的程序,我只修改了端口 由PB6、PB7也成了 PB10、PB11
可运行后,读出的值为128.多,温湿度的值都不变。
好像接不接传感器都显示128.多  的值!
happy_10 发表于 2020-1-1 10:57 | 显示全部楼层

楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因
 楼主| chenho 发表于 2020-1-1 11:00 | 显示全部楼层

.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();
}
liuzaiy 发表于 2020-1-1 11:04 | 显示全部楼层

没有修改之前有问题吗
 楼主| chenho 发表于 2020-1-1 11:08 | 显示全部楼层
我是在网站上找到的源码,
之前用淘宝上买的Stm32f103c8t6的最小系统开发板测试的,没有改端口,我是能读到温湿度的。
这次自己做了板子,把IO口换到了B10、B11,就变成了现在这种样子。
 楼主| chenho 发表于 2020-1-1 11:12 | 显示全部楼层
我也找了一资料,说是什么要打开I2C2功能,我也试了,也不行。
zhuhuis 发表于 2020-1-1 11:17 | 显示全部楼层
如果你用之前买的那个板子换io试试 看看可以吗 先排除硬件问题
 楼主| chenho 发表于 2020-1-1 11:20 | 显示全部楼层
我用开发板,B6、B7试了一下,也读不出来。好像读到的值是0,因为最后返回的结果是-46.85.

SHT2x_Init();
        
while(1)
{
        TH=SHT2x_MeasureTempHM();   //这里返回 -46.85
        delay_ms(100);
}
juventus9554 发表于 2020-1-1 11:23 | 显示全部楼层

那说明不是硬件的问题 建议楼主用示波器卡卡 比对一下修改引脚之后波形有没有什么差别 iic这个东西太娇气
dingy 发表于 2020-1-1 11:28 | 显示全部楼层
硬件,芯片SDA、SCL两个引脚没有加上拉电阻
 楼主| chenho 发表于 2020-1-1 11:35 | 显示全部楼层
在网上买的以为可以直接用
supernan 发表于 2020-1-1 11:39 | 显示全部楼层
IO口打开方式,程序里写成了打开IIC2
 楼主| chenho 发表于 2020-1-1 11:42 | 显示全部楼层
这个问题纠结了好久,才搞清楚,STM32只是模拟IIC不用打开硬件IIC
 楼主| chenho 发表于 2020-1-1 11:46 | 显示全部楼层
知道怎么回事了,多谢大家
您需要登录后才可以回帖 登录 | 注册

本版积分规则

748

主题

9853

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部