找回密码
 立即注册
查看: 551|回复: 4

STC8G1K17A的困惑

[复制链接]
  • TA的每日心情
    奋斗
    2024-5-26 16:08
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    2

    主题

    10

    回帖

    122

    积分

    注册会员

    积分
    122
    发表于 2023-8-14 21:44:52 | 显示全部楼层 |阅读模式
    本人新手,学单片机玩。先买了一片STC15W204S,SOP8的,感觉挺好玩,这么小的一个芯片,不需要任何外围元件,可以做很多事情。

    最近试了一下I2C总线的128*32的OLED屏显示,用I2C的SHT30做了个温湿度计。运行挺正常,就是OLED的字体数据太占空间了,4K的程序空间捉襟见肘。
    后来看STC8G1K17A和15W204S的引脚完全一样,程序存贮空间有17K,就买了几片更换。
    结果换上去后,发现程序根本不能正常运行,连最基本的IO输出点LED灯都点不亮
    后来发现要在程序一开始加了几条语句,先把IO口设置成准双向IO口才行。

        P1M0 = 0x00;
        P1M1 = 0x00;
        P2M0 = 0x00;
        P2M1 = 0x00;
        P3M0 = 0x00;
        P3M1 = 0x00;
        P4M0 = 0x00;
        P4M1 = 0x00;
        P5M0 = 0x00;
        P5M1 = 0x00;

    困惑一:STC8G1K17A芯片上电初始化时IO口不是准双向口吗?
    然而,OLED可以正常工作了,SHT30却无法正常工作,在I2C write command函数时会NOACK。我这两个I2C设备分别使用P3^2和P3^3, P5^4和P5^5作为SCLK1,SDA1,SCLK2,SDA2,在15W204S和HE-6800(STC90CRD+芯片)试验板上都工作正常。(时钟频度都选的11.0592MHz)
    我在程序里和接线上交换了OLED和SHT30使用的IO口,仍然是OLED可以工作,SHT30无法工作。
    问题出在哪呢?是不是两个芯片的指令有什么区别吗?
    回复 送花

    使用道具 举报

    该用户从未签到

    557

    主题

    9729

    回帖

    1万

    积分

    管理员

    积分
    14220
    发表于 2023-8-14 22:14:43 | 显示全部楼层
    1.png
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    3 天前
  • 签到天数: 144 天

    [LV.7]常住居民III

    29

    主题

    559

    回帖

    2168

    积分

    荣誉版主

    积分
    2168
    发表于 2023-8-15 07:17:29 | 显示全部楼层
    I2C的所有设备都可以挂在同一条总线上,通过不同地址访问不同设备。他和串口不一样。没必要弄两套scl sda

    8G系列和15系列速度不一样,有时候要调整代码




    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-26 16:08
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    2

    主题

    10

    回帖

    122

    积分

    注册会员

    积分
    122
     楼主| 发表于 2023-8-15 07:37:43 | 显示全部楼层

    这个规则,是STC8G1K系列才有的吧?是不是15W204S不需要这样?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-5-26 16:08
  • 签到天数: 11 天

    [LV.3]偶尔看看II

    2

    主题

    10

    回帖

    122

    积分

    注册会员

    积分
    122
     楼主| 发表于 2023-8-15 07:43:57 | 显示全部楼层
    gentleman 发表于 2023-8-15 07:17
    I2C的所有设备都可以挂在同一条总线上,通过不同地址访问不同设备。他和串口不一样。没必要弄两套scl sda

    ...

    对I2C还不是太熟悉,代码都是复制再修改的,下一步我试试设备接在同一个总线上。
    我猜是SHT30代码里的延时函数在不同的芯片上运行结果不同。试着调不同晶振频率,用24M,连OLED都不能正常工作了。但是调到最低,SHT30也不能工作。
    在STC90CRD+上,运行速度明显比15W204慢好多倍,但是能工作。
    回复 支持 反对 送花

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-6-3 10:35 , Processed in 0.059906 second(s), 47 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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