V3S的LRADC采样口 ,看内核里面有这个口的驱动 ,就是dtsi 和config里面要怎么去配置哦
离线
我就是dts中加了 因为我看到在dtsi中有lradc的配置
&lradc{
status = "okay";
};
离线
https://github.com/torvalds/linux/blob/master/arch/arm/boot/dts/sun8i-v3s.dtsi
lradc: lradc@1c22800 {
compatible = "allwinner,sun4i-a10-lradc-keys";
reg = <0x01c22800 0x400>;
interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
status = "disabled";
};请问你有什么疑问?
dts和.config 里面不要去配置吗 只要配置这个dtsi 就可以了是吧
我刚才在dts里面设置了状态为ok了
离线
荔枝派默认配好了,启动就生成 /dev/event* 设备
我也是在找这个event设备 没有找到
离线
全局搜了下 就下面几个event0
有一个是在input下面但是这个不是这个lradc的
离线
在打印中出现这两个错误
1] sun4i-a10-lradc-keys 1c22800.lradc: keymap is missing in device tree
[ 2.179407] sun4i-a10-lradc-keys: probe of 1c22800.lradc failed with error -22
离线
晕哥 这个button-XXX是不是通过按键去设置一个输出电压??
麻烦你帮我解释下这几个button的功能是什么了
现在我的内核里面的event出来,因为我只要从这个event1里面去读取读取数据就可以了
离线
这个代码我看过,主要是我只要从event1 读取数据就可以了,而且我不会通过按键去设置,是不是就是可以不用写用按键设置的啊
离线
不用了, 你读出按键值就可以了.
就是直接读取event1的就可以是吧,
离线
evtest 可以测试那四个按键:
# evtest No device specified, trying to scan all of /dev/input/event* Available devices: /dev/input/event0: 1c22800.lradc Select the device event number [0-0]: 0 Input driver version is 1.0.1 Input device ID: bus 0x19 vendor 0x1 product 0x1 version 0x100 Input device name: "1c22800.lradc" Supported events: Event type 0 (EV_SYN) Event type 1 (EV_KEY) Event code 114 (KEY_VOLUMEDOWN) Event code 115 (KEY_VOLUMEUP) Event code 352 (KEY_OK) Event code 353 (KEY_SELECT) Properties: Testing ... (interrupt to exit) Event: time 2663.260991, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 1 Event: time 2663.260991, -------------- SYN_REPORT ------------ Event: time 2663.471909, type 1 (EV_KEY), code 115 (KEY_VOLUMEUP), value 0 Event: time 2663.471909, -------------- SYN_REPORT ------------ Event: time 2666.354566, type 1 (EV_KEY), code 353 (KEY_SELECT), value 1 Event: time 2666.354566, -------------- SYN_REPORT ------------ Event: time 2666.565488, type 1 (EV_KEY), code 353 (KEY_SELECT), value 0 Event: time 2666.565488, -------------- SYN_REPORT ------------ Event: time 2667.424816, type 1 (EV_KEY), code 352 (KEY_OK), value 1 Event: time 2667.424816, -------------- SYN_REPORT ------------ Event: time 2667.620117, type 1 (EV_KEY), code 352 (KEY_OK), value 0 Event: time 2667.620117, -------------- SYN_REPORT ------------ Event: time 2668.139619, type 1 (EV_KEY), code 352 (KEY_OK), value 1 Event: time 2668.139619, -------------- SYN_REPORT ------------ Event: time 2668.311484, type 1 (EV_KEY), code 352 (KEY_OK), value 0 Event: time 2668.311484, -------------- SYN_REPORT ------------
你这个evtest测试代码是内核里面吗
离线
对的
突然发现那个 ioctl这个函数无从下手啊
离线
因为这个lradc是6位 所以最大不会超过31 但是从打印数据来看好像不对
离线
你到荔枝派的板子上面测试吧, 我evtest试过键值和 dts一致。
就这几个里面的if语句 那个if 才是我读取的确切值 就是看打印跳变很大 我没有用button去控制 那我是不是可以将那个dock里面那几个button 给去掉了
最近编辑记录 无情一刀 (2019-07-23 11:34:00)
离线
怎样将那4个按键中断给去掉哦哦哦,我去掉了后报错,没有那个event 了
离线
去掉 dts 的 button, 这不问题又绕回到 6楼了吗?
是的 因为我这里不要这几个按钮中断 我就是只要读取event1里面的数据
然后读取出来那个code不一样 vaule,, 从文档里面看到 只有低6位才是数据
离线
没有 button 配置, 不就会出8楼的错误信息,
lradc->chan0_map_count = of_get_child_count(np); if (lradc->chan0_map_count == 0) { dev_err(dev, "keymap is missing in device tree\n");
然后不就退出初始化了吗?
只要读 ADC 值吗?
那可能要改驱动, 你看下杂项设备行不行?
你说的杂项设备是???
离线
我现在直接将代码里面
error = sun4i_lradc_load_dt_keymap(dev, lradc);
if (error)
return error;
这里给屏蔽了
为什么出来的类型不是一样的哦 就是这个type 和code
离线
/dev下面有event1 我在驱动里面将那个读取中断按钮的给去掉了
error = sun4i_lradc_load_dt_keymap(dev, lradc);
if (error)
return error;
驱动能起来了 在/dev/input/event1 有这个文件。
就是读取的数据还是不对,不知道哪里还有问题
还有一个问题就是不知道为什么这里的code会不一致了 (这里是我引用层打印出来)
2222ev.type= 3 ev.code= 47 ev.value= 2
2222ev.type= 3 ev.code= 53 ev.value= 53
2222ev.type= 3 ev.code= 54 ev.value= 6
2222ev.type= 3 ev.code= 47 ev.value= 3
离线
这里是要进到中断里面才会去上报信息
如果我不借用按键的情况下 ,如何让1秒钟上报一次哦哦 通过定时器去上报这个信息
离线