用的是 stm8s discover开发板,嗯,就是说,MCU 是 stm8s105c6t6
对于stm8这种分IO口方向的片子,到底要怎么设置,才算的上 释放总线?
51的是双向口,写高就释放了,没什么。
但它呢?
输出方向,写高,算不算释放总线?
如果直接设置成 输入方向,是不是也等于释放了总线——因为它不再写出东西啊。
问题是出在,最近在它下面做一个 ds18b20的程序。
时序也调了,而且还用逻辑分析仪对着看,按道理,那时序是够严格的了。
但依然是,复位能找着器件,但是,读写就是不行,读出来的两个温度值始终是
0xff 0xff
用逻辑分析仪看了一下 协议分析,发现只有 复位时序,没有读也没有写,压根和网上看到的波形不一样。
不排除 逻辑分析仪质量有问题——其实我觉得不像。
我以前在51下做过,虽然也费了劲,但是做成功了,而且当时我都还不需要用 逻辑分析仪 调时序。
事儿搁着有几天了,着实很郁闷。
想了想,大概有两个原因:
1.我怀疑自己在淘宝上买的那10根不锈钢封装的ds18b20有猫腻。
所以对此,我另外买了四根ds18b20管子——不过,最近忙别的,所以也就先放着没动;
2.上面那个怀疑其实我自己也觉得不太靠谱,那想来想去,和之前51的区别,肯定就在于 IO口的模式上的理解了。
看了一些网上的资料,都说要 释放总线,但我想不明白,对于stm8这种分IO口方向的片子,到底要怎么设置,才算的上 释放总线?
51的是双向口,写高就释放了,没什么。
但它呢?
输出方向,写高,算不算释放总线?
如果直接设置成 输入方向,是不是也等于释放了总线——因为它不再写出东西啊。
查了查百度,翻了一下stm8s105c6t6的pdf和编程手册,还是没看到相关的介绍。
请知道的兄弟给指教指教,谢谢!
此帖出自
小平头技术问答
1.我在封装gpio时,IO模式为了简化,我只选择了初始化方向后,默认为低电平状态。所以......虽然这个地方我也想不太通,但是,把默认状态选择为高以后,即释放电平,复位问题就解决了。
2.我封装的读写函数耗时太长,所以读信号慢了。
一周热门 更多>