【NanoPi NEO2 开发板试用体验】读取18B20(Kernel 4.11.x 内核)

  • QiaoJiannan
  • LV3工程师
  • |      2017-07-02 21:15:31
  • 浏览量 1678
  • 回复:0
本帖最后由 QiaoJiannan 于 2017-7-2 21:20 编辑 上篇是基于 3.4.x 内核的驱动,4.11.x内核跟3.4.x内核不同,4.11版本没有w1-sunxi这个模块,所以也就不能用 1 枚举所有mod find/lib/modules/$(uname -r) -type f -name \*.ko | grep w1 2 w1-gpio, w1-therm, wire 但就是没有w1-sunxi4.11内核采用DeviceTreeDT)方式加载外部硬件资源,所有配置都在名为/boot/dtb/xxx.dtbo的二进制文件中描述。所以,加载一线设备(1-wiredevice)需要将其描述编译成dtbo文件,在内核启动的时候加载之。 介绍之前先说一下IO管脚的编号,还记不记得BCM编号,就是gpio readall列出来最靠边的那一列数字,但在这里我们关注的是Name这一列,它的编号是GPIO<字母><数字>的方式,这个也是硬件访问所需要的地址。 3 BCM编号是<字母> x 32 + <数字>,例如管脚7GPIOG11BCM编码是 6 x 32 + 11 =203 6G的字母编号,从零开始,所以A=0G=6DeviceTree中编码也同样,不过是分开写的。 首先,我们在/boot/dtb目录中建立用户自定义的dtbo文件夹mkdir /boot/overlay-user系统本身自带一个w1-gpiodtbo文件,我们把二进制转换成文本先dtc -I dtb -O dts -o/boot/overlay-user/w1-18b20.dts/boot/dtb/allwinner/overlay/sun50i-h5-w1-gpio.dtbo如果是H3的就用这条dtc -I dtb -O dts -o/boot/overlay-user/w1-18b20.dts /boot/dtb/overlay/sun8i-h3-w1-gpio.dtbovi /boot/overlay-user/w1-18b20.dts 4 接下来修改18B20接的管脚,我这里接到了管脚7上,也就是BCM=203Name=GPIOG11( G=0x6, 11=0xb ),修改以下两处 5 修改好后,存盘退出(以上用例是H5的,H3的也一样,只是某些标识不同),接下来把文本再转成二进制dtc -I dts -O dtb -o/boot/overlay-user/w1-18b20.dtbo /boot/overlay-user/w1-18b20.dts接下来修改 vi/boot/armbianEnv.txt文件,在文件末尾增加overlay-user 6 此处只要给出文件名就行,不用尾缀。重启NEO,查看是否搜索到设备:ls /sys/bus/w1/devices 7 18b20都是28开头的,如果是00-80000xxx这一类表示端口号不对,需要核对端口号。查看温度 more /sys/bus/w1/devices/28*/w1* 8 至此,18B20读取温度方法补完。 参考资料 https://docs.armbian.com/Hardware_Allwinner_overlays/
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:0
x
收藏成功!点击 我的收藏 查看收藏的全部帖子