TA的每日心情 | 奋斗 2024-5-26 16:08 |
---|
签到天数: 11 天 [LV.3]偶尔看看II
注册会员
- 积分
- 122
|
本人新手,学单片机玩。先买了一片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无法工作。
问题出在哪呢?是不是两个芯片的指令有什么区别吗?
|
|