100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > MT7621方案 LED 灯控制 (基于OpenWrt平台)

MT7621方案 LED 灯控制 (基于OpenWrt平台)

时间:2019-10-12 18:21:51

相关推荐

MT7621方案 LED 灯控制 (基于OpenWrt平台)

注:出处不明,最开始是在这里看到的,图竟然没有。。。没有。。。相关资料也几乎木有。。。datasheet里也没有寄存器配置说明。。。。。。MT7621还真是坑爹啊!

目前市面上大部分路由器方案是基于MT7620的,LED的控制比较简单,直接修改dts文件,系统会自动生成相应的文件系统节点,从而可以很方便的控制,当然这些LED控制都是基于CPU的GPIO来控制,包括LAN灯、WIFI灯。但MT7621方案开始,对于LED灯的控制有所区别,LAN灯直接由芯片内部的SWITCH(MT7503)直接控制,而且预定义是自动配好的,有数据收发时会自动闪烁,插上网线会自动亮,拔掉会自动灭,这部分LED控制完全是硬件自动实现,不再赘述。

USB2.0和USB3.0灯是由CPU直接控制的,可以增加dts的LED节点即可:

gpio-leds { compatible = "gpio-leds"; usb2 { label = "green:usb2"; gpios = <&gpio0 14 1>; }; usb3 { label = "green:usb3"; gpios = <&gpio0 17 1>; }; };

内核解析完dts文件后,会在/sys/devices/platform/gpio-leds/leds 目录下生成两个目录,分别为green:usb2 和green:usb3,进入这两个文件夹,可以通过echo命令来操作LED灯:

操作USB灯(例如USB2.0灯):

cd sk:green:usb2echo 1 > brightness // 开启usb2.0 灯echo 0 > brightness // 关闭usb2.0 灯

MT7621方案,一般会由两个射频芯片和MT7621相连,一个是MT7612e (5G WIFI) ,一个是MT7602e(2.4G WIFI,也有用MT7603的) ,我的demo板是MT7612e + MT7602e 。 5G WIFI 和 2.4G WIFI 指示灯 分别由 这两个芯片控制(区别于MT7620由CPU的GPIO控制):

【我猜此处应有图】

在OpenWrt中的公版驱动中,这两个芯片的驱动是通用的,所以控制方式一致。我是通过操作芯片的LED_CTRL寄存器直接控制的,对于WIFI指示灯,对应该寄存器中的LED2对应的几个bit:

【我猜此处应有图】

通过测试 ,发现LED灯是由 电平脉冲 形式触发,LED2_KICK置为1,则表示产生一个脉冲。LED2_TX_BLINK_MODE置为1,表示有数据发送时,LED灯会自动闪烁。LED2_POL表示LED极性。

对于本单板:

LED2_KICK = 1 , LED2_POL = 0 , LED灯常亮 (LED_CTRL写 0x800000)LED2_KICK = 1 , LED2_POL = 1, LED灯常灭 (LED_CTRL写 0x820000)LED2_KICK = 1,LED2_TX_BLINK_MODE ,LED自动闪烁 (LED_CTRL写 0x840000)

MT76x2的寄存器读写,可通过openwrt 的mt76x2驱动提供的调试命令实现,例如要实现MT7612E LED常亮:

cd/sys/kernel/debug/ieee80211/phy0/mt76echo 0x770 > regidx //设置相对偏移地址echo 0x800000 > regval //写寄存器

至此,MT7621方案的LED控制完成。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。