打印
[STM32F1]

stm32f103 sht20问题

[复制链接]
2454|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
dongoyang|  楼主 | 2018-6-11 23:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在网上找的 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();
}
沙发
labasi| | 2018-6-12 08:16 | 只看该作者
没有修改之前有问题吗

使用特权

评论回复
板凳
dongoyang|  楼主 | 2018-6-12 10:35 | 只看该作者
labasi 发表于 2018-6-12 08:16
没有修改之前有问题吗

我是在网站上找到的源码,
之前用淘宝上买的Stm32f103c8t6的最小系统开发板测试的,没有改端口,我是能读到温湿度的。
这次自己做了板子,把IO口换到了B10、B11,就变成了现在这种样子。

我也找了一资料,说是什么要打开I2C2功能,我也试了,也不行。

使用特权

评论回复
地板
labasi| | 2018-6-12 10:40 | 只看该作者
如果你用之前买的那个板子换io试试 看看可以吗 先排除硬件问题

使用特权

评论回复
5
dongoyang|  楼主 | 2018-6-12 11:11 | 只看该作者
labasi 发表于 2018-6-12 10:40
如果你用之前买的那个板子换io试试 看看可以吗 先排除硬件问题

我用开发板,B6、B7试了一下,也读不出来。好像读到的值是0,因为最后返回的结果是-46.85.

SHT2x_Init();
       
while(1)
{
        TH=SHT2x_MeasureTempHM();   //这里返回 -46.85
        delay_ms(100);
}

使用特权

评论回复
6
labasi| | 2018-6-12 13:49 | 只看该作者
那说明不是硬件的问题 建议楼主用示波器卡卡 比对一下修改引脚之后波形有没有什么差别 iic这个东西太娇气

使用特权

评论回复
7
dongoyang|  楼主 | 2018-6-12 19:24 | 只看该作者
谢谢labasi的回复
问题已经解决,
主要问题:
1.硬件,芯片SDA、SCL两个引脚没有加上拉电阻——在网上买的以为可以直接用。
2.IO口打开方式,程序里写成了打开IIC2——这个问题纠结了好久,才搞清楚,STM32只是模拟IIC不用打开硬件IIC

使用特权

评论回复
8
DOGEEEE| | 2020-5-6 10:28 | 只看该作者
dongoyang 发表于 2018-6-12 19:24
谢谢labasi的回复
问题已经解决,
主要问题:

楼主能否提供一下代码参考一下,我配置的对的但是读出来的数据也是0

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

4

帖子

0

粉丝