打印
[STM32F1]

接不接传感器都显示128.多

[复制链接]
432|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者

没有修改之前有问题吗

使用特权

评论回复
5
chenho|  楼主 | 2020-1-1 11:08 | 只看该作者
我是在网站上找到的源码,
之前用淘宝上买的Stm32f103c8t6的最小系统开发板测试的,没有改端口,我是能读到温湿度的。
这次自己做了板子,把IO口换到了B10、B11,就变成了现在这种样子。

使用特权

评论回复
6
chenho|  楼主 | 2020-1-1 11:12 | 只看该作者
我也找了一资料,说是什么要打开I2C2功能,我也试了,也不行。

使用特权

评论回复
7
zhuhuis| | 2020-1-1 11:17 | 只看该作者
如果你用之前买的那个板子换io试试 看看可以吗 先排除硬件问题

使用特权

评论回复
8
chenho|  楼主 | 2020-1-1 11:20 | 只看该作者
我用开发板,B6、B7试了一下,也读不出来。好像读到的值是0,因为最后返回的结果是-46.85.

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

使用特权

评论回复
9
juventus9554| | 2020-1-1 11:23 | 只看该作者

那说明不是硬件的问题 建议楼主用示波器卡卡 比对一下修改引脚之后波形有没有什么差别 iic这个东西太娇气

使用特权

评论回复
10
dingy| | 2020-1-1 11:28 | 只看该作者
硬件,芯片SDA、SCL两个引脚没有加上拉电阻

使用特权

评论回复
11
chenho|  楼主 | 2020-1-1 11:35 | 只看该作者
在网上买的以为可以直接用

使用特权

评论回复
12
supernan| | 2020-1-1 11:39 | 只看该作者
IO口打开方式,程序里写成了打开IIC2

使用特权

评论回复
13
chenho|  楼主 | 2020-1-1 11:42 | 只看该作者
这个问题纠结了好久,才搞清楚,STM32只是模拟IIC不用打开硬件IIC

使用特权

评论回复
14
chenho|  楼主 | 2020-1-1 11:46 | 只看该作者
知道怎么回事了,多谢大家

使用特权

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

本版积分规则

748

主题

9853

帖子

5

粉丝