F4 ds18b20 IO设置成开漏上拉读出数据错误的问题

2019-07-20 21:04发布

首先 我IO设置的是 开漏上拉 ,这就相当于双向口了,,然后写程序,发现复位的响应值 0能读出来,但是 读出来的温度 是错的 是0xffff,然后搞了好一会。后来我想我试试 不用开漏的,就用推挽输出然后切换模式,就是在写之前都切换成输出,读之前都切换成输出 发现,诶可以耶,都出来的值是正确的。。求解答为什么开漏上拉就不行。
我 IO模拟IIC用开漏上拉就行的呀。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
xkwy
1楼-- · 2019-07-20 23:19
欧欧耶 发表于 2016-7-29 10:15
但是我在开漏程序的基础上把初始化的开漏改成 推挽输出然后写和读之前都切换模式就没问题?

开漏和推挽在波形上的不同就是0→1的边沿,如下图:
img_0086(1).png


调时序,最有力的工具是示波器,单靠脑补是很费劲的;

xkwy
2楼-- · 2019-07-21 05:04
开漏是可以的,你可能外部上拉电阻过小导致总线没有足够的时间释放,对照着波形检查一下时序,
欧欧耶
3楼-- · 2019-07-21 09:48
xkwy 发表于 2016-7-28 23:32
开漏是可以的,你可能外部上拉电阻过小导致总线没有足够的时间释放,对照着波形检查一下时序,

但是我在开漏程序的基础上把初始化的开漏改成 推挽输出然后写和读之前都切换模式就没问题?

一周热门 更多>