
致俺的100根白头发和无数壮烈的脑细胞 谨以此文纪念俺的100根白头发和无数壮烈的脑细胞 事情起因是这样的,手上有块原子的ministm32开发板,上面提到一个测温实验用到DS18B20,结果。。。。我说军哥你是嘛个意思哟,竟然木有传感器!!!于是乎,俺就去为马云上市做贡献了,收到传感器后,按照惯例,g一下有木写好的ds18b20.c,嗯,真多,unfortunately,千篇一律的skiprom做法,这可不行,按照网上的说法多点测温方法有三:1:一个线接一个传感器,也可以加模拟通道选择,2:事前一片一片的读入的id,硬编码或者存到e2p中,然后挂到单线上。3:ROM search。俺这个人比较懒,前2个方法不考虑,那就rom search 吧,读了半天资料,没整明白,就去官网查了一下,还好,他们提供了一个匹配算法,在这里我要对做ds18b20datasheet的伙计说一句:你做的什么玩意!然后俺就按照他们的方法做了个实现,按照俺的传统(俺比较在意接口的完整性,可复用性),俺把相关的接口都做了实现。下载运行,temp:0.00 Oh,what?why ?上帝呀你在哪呀?在俺多了100根白头发和牺牲了无数脑细胞后,俺终于发现了问题,ds18b20的INIT过程包括2个阶段: 1:主机的480us低电平, 2:从机480us的回应低电平。俺的错误在于检测到从机低电平present信号后,没有等到从机释放总线就直接开始发命令。 后记:我的开发板为f302,用的内部8M HSI, DS18B20所需的us延时我是直接用for循环,并不精确,在别的主频下需要注意, 另外,因我手上只有一片18b20,没有用多片实物验证,只做过模拟验证。 |
DS18B20.rar
下载69.15 KB, 下载次数: 26
RE:Nucleo板开发日志-DS18B20之ROM Seach,致俺的100根白头发和无数壮烈的脑细胞