通用接口(6)——IR红外

T507 CIR接收器

平台:OKT507
系统:Android10.0

CIR 接收器具有以下特点:
· 全物理层实现
· 支持CIR遥控或无线键盘
·64x8 位 FIFO 用于数据缓冲区
· 可编程FIFO阈值
· 中断支持
· 采样时钟高达 1 MHz

结构框图:
在这里插入图片描述

硬件原理如下:
在这里插入图片描述
设备树配置:

s_cir0: s_cir@07040000 {
	compatible = "allwinner,s_cir";
	reg = <0x0 0x07040000 0x0 0x400>;
	interrupts = <GIC_SPI 106 IRQ_TYPE_LEVEL_HIGH>;
	pinctrl-names = "default";
	pinctrl-0 = <&s_cir0_pins_a>;
	clocks = <&clk_hosc>,<&clk_cpurcir>;
	supply = "vcc-pl";
	supply_vol = "3300000";
	status = "okay";
};

s_cir0_pins_a: s_cir0@0{
	allwinner,pins = "PH10";
	allwinner,function = "ir";
	allwinner,muxsel = <3>;
	allwinner,drive = <2>;
	allwinner,pull = <1>;
};
驱动文件
kernel/linux-4.9/drivers/media/rc/sunxi-ir-dev.c
static int sunxi_ir_recv_probe(struct platform_device *pdev)

/* get dt and sysconfig */
sunxi_ir_startup(pdev, ir_data);

//rc dev allocate
allocate memory for new input device
rc_allocate_device

struct rc_dev 		//结构体赋值

sunxi_rcdev->map_name = RC_MAP_SUNXI;
init_sunxi_ir_map
	rc_map_register	// 将rc_map注册到rc_map_list 链表中

//register rc device
rc_register_device(sunxi_rcdev);

//ir request i2c gpio,配置时钟寄存器
ir_setup(ir_data)

//存储申请的内存区域的指针
platform_set_drvdata(pdev, ir_data);

申请中断
参考链接
https://blog.csdn.net/skycover/article/details/69950727

static inline void platform_set_drvdata(struct platform_device *pdev, void *data)目的存储用户在probe()中主动申请的内存区域的指针以防止丢失
static inline void *platform_get_drvdata(const struct platform_device *pdev)则是将其取出。

=======================================================================
平台:OKxx18
系统:Android5.1

驱动文件
linux/kernel/kernel-3.4.39/drivers/media/rc/ppm-nxp.c

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值