文章的开头我还是要批评下飞凌的驱动真的不怎么严谨。先说我们几天的问题吧。
几天前写了led的驱动,感觉真是是太简单了。但是复杂的又写不起来。所以就想研究下18b20的驱动。其实大家对18b20都很熟悉。他对时序的要求十分严格。所以我们要引起注意。
本来想看看飞凌自己的驱动,跟我们之前用的大致上的18b20在单片机上的差不多。但是下到板子里面不好使。于是自己决定好好跟他磕一下。把18b20的手册又拿出来仔细的看看,结果首先发现可能是那个
tmwbyte(0xcc); //
tmwbyte(0x44); //
udelay(6); //感觉可能是这一句
while(tmreset ()); //这是自己改的一句,等待让reset成功之后返回
还有一句在tmreset ()函数里面的最后一行printk(“18b20 initialization is sucessful\n”)这句话把屏蔽打开,可能这句话的时间正好修正了其时序。现在我的程序好使了。同时希望大家多动手。写出更好的驱动和我们分享
联系客服