长葛住房和城乡建设局网站怎么管理购物网站
news/
2025/10/4 3:38:48/
文章来源:
长葛住房和城乡建设局网站,怎么管理购物网站,长沙给中小企业做网站的公司,环保h5微网站前言
ARM SOC 有别于单片机 MCU 的一点就是#xff0c;ARM SOC 的 GPIO 比较少#xff0c;基本上引脚都有专用的功能#xff0c;因为它很少去接矩阵键盘、众多继电器、众多 LED。 但有时 ARM SOC 又需要三五个按键#xff0c;这时候 LRADC 就是一个不错的选择#xff0c;…前言
ARM SOC 有别于单片机 MCU 的一点就是ARM SOC 的 GPIO 比较少基本上引脚都有专用的功能因为它很少去接矩阵键盘、众多继电器、众多 LED。 但有时 ARM SOC 又需要三五个按键这时候 LRADC 就是一个不错的选择它使用一个引脚就可以扩展几个到几十个按键。
原理 设计上述电路
当没有按键按下时KEYADC0 引脚电压约等于 AVCC(3V)S1 按下时KEYADC0 引脚电压等于 6.8/(6.8100)*3V0.19VS2 按下时KEYADC0 引脚电压等于 (6.88.2)/(6.88.2100)*3V0.39VS3 按下时0.6VS4 按下时0.8V
这样根据 KEYADC0 引脚电压值就可知道哪个键被按下了。
继续介绍下 LRADC 内部原理
当 ADC_IN 从 3.0V 降到 2.0V 以下比较器 24 会发送第一个中断给 Control Logic当 ADC_IN 从 2.0V 降到某一指定电压以下比较器 25 会发送第二个中断给 Control Logic如果 Control Logic 收到了第一个中断在指定的时间内没有收到第二个中断它会向 host 发送 HOLD_KEY_IRQ如果 Control Logic 收到了第一个中断并且在指定的时间内又收到第二个中断它会向 host 发送 KEY_DOWN_IRQ如果 Control Logic 只收到了第二个中断没有收到第一个中断它会向 host 发送 ALREADY_HOLD_IRQ。
硬件
焊接按键和分压电阻
设备树
arch/arm/boot/dts/sun8i-v3s.dtsi soc {lradc: lradc1c22800 {compatible allwinner,sun4i-a10-lradc-keys;reg 0x01c22800 0x400;interrupts GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH;status disabled;};};arch/arm/boot/dts/sun8i-v3s-licheepi-zero-dock.dts
lradc {vref-supply reg_vcc3v0;status okay;button-200 {label Volume Up;linux,code KEY_VOLUMEUP;channel 0;voltage 200000;};button-400 {label Volume Down;linux,code KEY_VOLUMEDOWN;channel 0;voltage 400000;};button-600 {label Select;linux,code KEY_SELECT;channel 0;voltage 600000;};button-800 {label Start;linux,code KEY_OK;channel 0;voltage 800000;};
};内核编译选项 测试
LRADC 中断已注册成功
rootv3s-diy:~# cat /proc/interrupts CPU0 17: 0 GIC-0 29 Level arch_timer18: 267730 GIC-0 30 Level arch_timer21: 0 GIC-0 50 Level timer1c20c0022: 24551 GIC-0 92 Level sunxi-mmc23: 832950 GIC-0 93 Level sunxi-mmc24: 0 GIC-0 103 Level musb-hdrc.1.auto25: 0 GIC-0 72 Level 1c20400.rtc31: 0 GIC-0 62 Level sun4i-a10-lradc-keys // LRADC 中断32: 2037 GIC-0 32 Level ttyS034: 224 GIC-0 38 Level mv64xxx_i2c35: 10 GIC-0 39 Level mv64xxx_i2c36: 3589553 GIC-0 97 Level sun6i-spi37: 0 GIC-0 82 Level 1c02000.dma-controller39: 0 GIC-0 116 Level sun6i-csi40: 0 GIC-0 104 Level ehci_hcd:usb141: 2 GIC-0 105 Level ohci_hcd:usb2
IPI0: 0 CPU wakeup interrupts
IPI1: 0 Timer broadcast interrupts
IPI2: 0 Rescheduling interrupts
IPI3: 0 Function call interrupts
IPI4: 0 CPU stop interrupts
IPI5: 0 IRQ work interrupts
IPI6: 0 completion interrupts
Err: 0/dev/input 目录下已产生对应设备
# ls /dev/input/
event0检测按键
# hexdump /dev/input/event0
0000000 005c 0000 a87a 000c 0001 0160 0001 0000
0000010 005c 0000 a87a 000c 0000 0000 0000 0000
0000020 005d 0000 8dfc 0006 0001 0160 0000 0000
0000030 005d 0000 8dfc 0006 0000 0000 0000 0000
0000040 005e 0000 fa30 000e 0001 0160 0001 0000
0000050 005e 0000 fa30 000e 0000 0000 0000 0000
0000060 005f 0000 a730 0007 0001 0160 0000 0000
0000070 005f 0000 a730 0007 0000 0000 0000 0000
0000080 0060 0000 664f 000a 0001 0160 0001 0000
0000090 0060 0000 664f 000a 0000 0000 0000 0000
00000a0 0061 0000 dad1 0001 0001 0160 0000 0000
00000b0 0061 0000 dad1 0001 0000 0000 0000 0000
#
# cat /proc/interrupts | grep lradc31: 6 GIC-0 62 Level sun4i-a10-lradc-keys可以检测到按键事件并且中断数量也相应增加。 至此 LRADC KEY 调试 OK
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/926562.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!