[求助] stm8s的IO口,怎么才能释放总线

辛昕   2012-9-15 12:00 楼主
用的是 stm8s discover开发板,嗯,就是说,MCU 是 stm8s105c6t6

对于stm8这种分IO口方向的片子,到底要怎么设置,才算的上 释放总线?
51的是双向口,写高就释放了,没什么。
但它呢?
输出方向,写高,算不算释放总线?
如果直接设置成 输入方向,是不是也等于释放了总线——因为它不再写出东西啊。


问题是出在,最近在它下面做一个 ds18b20的程序。
时序也调了,而且还用逻辑分析仪对着看,按道理,那时序是够严格的了。

但依然是,复位能找着器件,但是,读写就是不行,读出来的两个温度值始终是

0xff 0xff

用逻辑分析仪看了一下 协议分析,发现只有 复位时序,没有读也没有写,压根和网上看到的波形不一样。

不排除 逻辑分析仪质量有问题——其实我觉得不像。

我以前在51下做过,虽然也费了劲,但是做成功了,而且当时我都还不需要用 逻辑分析仪 调时序。

事儿搁着有几天了,着实很郁闷。

想了想,大概有两个原因:
1.我怀疑自己在淘宝上买的那10根不锈钢封装的ds18b20有猫腻。
  所以对此,我另外买了四根ds18b20管子——不过,最近忙别的,所以也就先放着没动;
2.上面那个怀疑其实我自己也觉得不太靠谱,那想来想去,和之前51的区别,肯定就在于 IO口的模式上的理解了。

看了一些网上的资料,都说要 释放总线,但我想不明白,对于stm8这种分IO口方向的片子,到底要怎么设置,才算的上 释放总线?

51的是双向口,写高就释放了,没什么。
但它呢?
输出方向,写高,算不算释放总线?
如果直接设置成 输入方向,是不是也等于释放了总线——因为它不再写出东西啊。

查了查百度,翻了一下stm8s105c6t6的pdf和编程手册,还是没看到相关的介绍。
请知道的兄弟给指教指教,谢谢!
强者为尊,弱者,死无葬身之地

回复评论 (5)

回复 楼主 辛昕 的帖子

你把SDA引脚外接上拉,设置成开漏输出高阻态,就可以当51用了。
点赞  2012-9-17 11:01

回复 沙发 weikezhi 的帖子

SDA?
单总线只有一条数据线,是指连接那个的IO吧。

敢情,我设置成 IN_FL才是对的?!
强者为尊,弱者,死无葬身之地
点赞  2012-9-17 14:25

回复 沙发 weikezhi 的帖子

stm8s 开漏是有了,但是,没见到写着是 开漏高阻。

另外,那输入呢,输入该设置什么方式?

是不是,有了外部上拉电阻以后,浮动输入就可以?
强者为尊,弱者,死无葬身之地
点赞  2012-9-17 14:31
额,stm8s+ds18b20搞定了,问题有2:
1.我在封装gpio时,IO模式为了简化,我只选择了初始化方向后,默认为低电平状态。所以......虽然这个地方我也想不太通,但是,把默认状态选择为高以后,即释放电平,复位问题就解决了。

2.我封装的读写函数耗时太长,所以读信号慢了。
强者为尊,弱者,死无葬身之地
点赞  2012-10-5 09:14
楼主能不能给我一个能用的18b20程序,我也遇到读出来全是1的情况。邮箱1015043947@qq.com
点赞  2016-2-23 14:21
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复