TI中文支持网
TI专业的中文技术问题搜集分享网站

am335x 红外接收应该如何实现?

reg_val = tsal_read(pdev,SYS_ADDR);
tsal_write(pdev,SYS_ADDR, reg_val | (1 << 1));
do {
udelay(1);
}while(!(tsal_read(pdev,SSYS_ADDR) & (1 << 0)));
reg_val = tsal_read(pdev,MDR1_ADDR);
tsal_write(pdev,MDR1_ADDR,(reg_val & 0xfff8) | 0x07);
tsal_write(pdev,LCR_ADDR, 0x80);
tsal_write(pdev,DLL_ADDR,0x13);
tsal_write(pdev,DLH_ADDR,0x88);
reg_val = tsal_read(pdev,MDR1_ADDR);
tsal_write(pdev,MDR1_ADDR,(reg_val & 0xfff8) | 0x01);
tsal_write(pdev,LCR_ADDR, 0x0);
reg_val = tsal_read(pdev,IER_ADDR);
tsal_write(pdev,IER_ADDR,reg_val | 0x1);
#endif
pm_runtime_put_sync(&pdev->dev);
printk("tsal7600_probe\n");

ret = request_irq(priv->irq, ir_recv_irq, IRQF_SHARED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
"tsal", pdev);
if (ret < 0)
printk("tsal request irq failed\n");

按照am335x的datasheet说明,对uart进行配置,但按红外遥控器时,不能进中断函数,请帮忙分析。

kevin.yang:

更改速率为9600

tsal_write(pdev,DLL_ADDR,0x38);tsal_write(pdev,DLH_ADDR,0x01);

然后更改ret = request_irq(priv->irq, ir_recv_irq, IRQF_SHARED,"tsal", pdev);

也是不行,按下红外遥控按键,不能进入ir_recv_irq

Steven Liu1:

回复 kevin.yang:

按下按键不能进入中断,你需要先查一下你对这个按键(应该是个GPIO吧?)的设置。

有没有使能中断?中断配置是否有问题?先查GPIO的中断是否能正常工作,再去看红外的问题。

kevin.yang:

回复 Steven Liu1:

这个中断号是串口的中断,在dts里面写的是44,根据am335x的datasheet描述,这有8个中断源,我把IER寄存器设置为0xff,是可以进入中断的,但在中断函数里面读中断标志,是TX 类的中断。

 

谢谢

赞(0)
未经允许不得转载:TI中文支持网 » am335x 红外接收应该如何实现?
分享到: 更多 (0)