找回密码
 注册
关于网站域名变更的通知
查看: 443|回复: 5
打印 上一主题 下一主题

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

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2020-10-23 15:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
在网上找的 SHT20 的程序,我只修改了端口 由PB6、PB7也成了 PB10、PB11
( ~, \1 S+ Z1 Q0 M* g3 r5 {6 W$ h, S可运行后,读出的值为128.多,温湿度的值都不变。
9 e2 O. Y8 p2 t. Q3 J好像接不接传感器都显示128.多  的值!) J9 V  q" v+ c9 W2 B( W
请各位大神指教一下,那里有问题?谢谢
4 g, h  l+ _& a! i6 ?
9 ^3 Z# a3 ?7 B% C5 a7 W0 x" L# V" f
3 R2 x/ T# }' N2 L.h 的设置,我只改了前3行7 C2 a( h8 `/ e( L. b

4 S. F  `% L) i! E
% _  P% [/ \+ Z$ v% [5 T#define SHT2x_I2C_PORT          GPIOB
% F) V7 y8 `" B1 l2 t#define SHT2x_SCL_PIN           GPIO_Pin_10        //6/ r8 [" ^. a3 ~' e2 d+ Y/ n
#define SHT2x_SDA_PIN           GPIO_Pin_11        //7. I# D4 f; y4 F/ D; z' ~7 ^& T) z
% D" c1 X  Y  ^9 x

1 T8 c2 E4 a" r#define SHT2x_SCL_HIGH()        GPIO_SetBits(SHT2x_I2C_PORT, SHT2x_SCL_PIN)
2 b0 ^6 Z  P+ N4 S#define SHT2x_SCL_LOW()         GPIO_ResetBits(SHT2x_I2C_PORT, SHT2x_SCL_PIN)
" e; W2 t# ?8 j, v) p. |
' v* F- S2 k0 c6 R
1 m) q* q7 H* u$ u3 k+ }#define SHT2x_SDA_HIGH()             GPIO_SetBits(SHT2x_I2C_PORT, SHT2x_SDA_PIN)
) S  f8 @4 W5 J; k#define SHT2x_SDA_LOW()         GPIO_ResetBits(SHT2x_I2C_PORT, SHT2x_SDA_PIN)5 S4 T1 g6 ~6 u4 _
) }2 q% j: F1 B9 v) \0 E
* A3 w0 a4 A, p' ?7 a( V8 v
#define SHT2x_SCL_STATE()       GPIO_ReadInputDataBit(SHT2x_I2C_PORT, SHT2x_SCL_PIN); z3 B1 u* \9 b' o2 D
#define SHT2x_SDA_STATE()       GPIO_ReadInputDataBit(SHT2x_I2C_PORT, SHT2x_SDA_PI' m9 e( x; F4 P  y  O  b, N

9 D. ~) W3 I4 X1 W1 n) J. E8 d# M0 y7 ?. b2 S5 O! A7 s0 H
! x+ W% _6 j3 r9 b6 v/ F
, i+ B4 K8 E" A# N- ]1 J9 a. J) O
.c 初始化函数,我只加了 RCC_APB2PeriphclockCmd(RCC_APB2Periph_GPIOB , ENABLE);这一句
- v  E% C! E+ g1 r8 S1 A. J$ r3 z* I/ x2 x. m# J
6 w/ m0 w  l. X7 h
void SHT2x_Init(void)
) v2 `, h1 u( N$ `# O{
9 [# O0 e  }8 t    GPIO_InitTypeDef GPIO_InitStructure;
: X/ p3 G! [7 A7 W% b1 I( ~$ w1 Z4 r9 E, H4 s' [
& i% v* d! f" a4 G$ s1 Q$ c# Y
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , ENABLE);( L$ r! C: U+ A4 ~1 Z- G. Z

  f/ y4 b0 X! H7 q# Z* R3 {; H( y; C; e9 Y
    GPIO_InitStructure.GPIO_Pin =  SHT2x_SCL_PIN | SHT2x_SDA_PIN;* D& l( K" m4 f6 {, K
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
, h7 i8 _; ?, L. {/ |    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;' ?# q- I: T3 |9 @" R, y" V
    GPIO_Init(SHT2x_I2C_PORT, &GPIO_InitStructure);
% b  h& B7 Y0 o, a; f
7 y' l$ H3 D: P- a
8 m% d$ M5 |! A4 g- {    SHT2x_SCL_HIGH();* }6 F  M- ]/ r6 j
    SHT2x_SDA_HIGH();
* L& s+ X2 h. X( f# b. s6 R$ t) R& s0 I7 \' G* O! `2 T& z  J

- l' x+ U1 {( W9 r: `, z    SHT2x_Delay(80);6 ?5 ^; T) z: a7 C
) M' s, w( X; K* w. s( Q' v% c  Z

, [- \& s& N) f1 c    SHT2x_SoftReset();
7 d) j; Q5 V7 y' g) N% f# q6 I}
  R4 e; _8 y( a: B( B# W8 O4 O0 J; V8 r; D7 e: p- I1 `
  • TA的每日心情
    慵懒
    2020-6-13 15:46
  • 签到天数: 1 天

    [LV.1]初来乍到

    2#
    发表于 2020-10-23 16:02 | 只看该作者
    菜鸟帮你顶一个

    该用户从未签到

    3#
    发表于 2020-10-23 17:43 | 只看该作者
    SDA这个引脚在使用时既要做为输入又要作为输出,你这样初始化他肯定有问题

    点评

    应该怎么做  详情 回复 发表于 2020-10-23 17:44

    该用户从未签到

    4#
     楼主| 发表于 2020-10-23 17:44 | 只看该作者
    mytomorrow 发表于 2020-10-23 17:43) S. O) L8 F' r+ g
    SDA这个引脚在使用时既要做为输入又要作为输出,你这样初始化他肯定有问题

    1 s( x* k' n& c+ {% T2 j& q  M应该怎么做
    5 ~  F* F9 A9 ~  T

    点评

    在读取数据的时候将SDA设置为输入,在写数据的时候将SDA设置为输出,建议你参考原子的例程,他也是使用模拟IIC。  详情 回复 发表于 2020-10-23 17:44

    该用户从未签到

    5#
    发表于 2020-10-23 17:44 | 只看该作者
    beachsun 发表于 2020-10-23 17:44
    / u3 K. X9 o: }( v应该怎么做

    : e" n$ h: Q  \* X3 s在读取数据的时候将SDA设置为输入,在写数据的时候将SDA设置为输出,建议你参考原子的例程,他也是使用模拟IIC。' @- {6 u- R5 H% y

    点评

    谢谢指导,问题已经解决, 主要问题: 1.硬件,芯片SDA、SCL两个引脚没有加上拉电阻——在网上买的以为可以直接用。 2.IO口打开方式,程序里写成了打开IIC2——这个问题纠结了好久,才搞清楚,STM32只是模拟IIC不  详情 回复 发表于 2020-10-23 17:49

    该用户从未签到

    6#
     楼主| 发表于 2020-10-23 17:49 | 只看该作者
    mytomorrow 发表于 2020-10-23 17:44
    % i4 ~% h8 c" Q6 z: Q% v在读取数据的时候将SDA设置为输入,在写数据的时候将SDA设置为输出,建议你参考原子的例程,他也是使用模 ...

    & X' e1 N; r6 U3 @! M/ c谢谢指导,问题已经解决,/ M% w, v! M# u8 z
    主要问题:7 z7 J3 w9 S- P* h. ~% f
    1.硬件,芯片SDA、SCL两个引脚没有加上拉电阻——在网上买的以为可以直接用。- K1 W4 Q' C/ y; v
    2.IO口打开方式,程序里写成了打开IIC2——这个问题纠结了好久,才搞清楚,STM32只是模拟IIC不用打开硬件IIC。
    9 }5 k5 @" {6 }' S' R1 O5 t
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    关闭

    推荐内容上一条 /1 下一条

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-11-24 23:55 , Processed in 0.171875 second(s), 24 queries , Gzip On.

    深圳市墨知创新科技有限公司

    地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

    快速回复 返回顶部 返回列表