ARM技术论坛
直播中

dongoyang

10年用户 5经验值
擅长:2985
私信 关注
[问答]

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

在网上找的 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)

h1654155956.5608

2018-6-12 10:42:28
SDA这个引脚在使用时既要做为输入又要作为输出,你这样初始化他肯定有问题。
举报

dongoyang

2018-6-12 11:15:08
引用: zhifubao 发表于 2018-6-12 10:42
SDA这个引脚在使用时既要做为输入又要作为输出,你这样初始化他肯定有问题。

应该怎么做,我是个新手,能不能给个代码?
举报

h1654155956.5608

2018-6-12 13:03:35
受到警告
提示: 作者被禁止或删除 内容自动屏蔽
举报

dongoyang

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

jinyi7016

2018-7-15 15:37:10
可发一下电路看看吧,感觉应该是硬件上的问题的
举报

更多回帖

发帖
×
20
完善资料,
赚取积分