中科蓝讯 AB5602B 红外功能介绍

   哈喽,大家好。

    在蓝牙音箱项目中,我们有时需要用到红外遥控功能。这次我将为大家带来中科蓝讯 AB5602B 红外功能的介绍。本次实验使用到的红外接收器是 VS 1838B。下面我首先介绍 VS 1838B 与 AB5602B电路连接,接着介绍如何在 SDK 中修改相应程序实现目标按键功能。

一、VS 1838B 与 AB5602B电路连接

1、电路连接

     

    本实验将 AB5602B 的 PF2 脚连接到红外接收器 VS 1838B 的信号输出脚,在实际项目中也可以改用蓝牙芯片的其他 GPIO。

 

2、本实验使用到的遥控器

    

 

二、程序实现

1、打开 IRRX 硬件模块
    

 

2、初始化 PF2
    

 

3、读取红外遥控器地址码和各红外按键键值

    在打开 IRRX 硬件模块和初始化 PF2 后,在 SDK 中只需要在 get_irkey() 函数中打开相应的打印即可正确上电,即可读取红外遥控器地址码和各红外按键键值:
    

 

    当按下遥控器的任意按键即可在 Downloader 中看到如下打印:
    

    b7a0:红外遥控器地址码;0af5:其中一个按键的键值。同理,要得到其他按键键值,按下相应按键,查看打印即可。

    按键键值(不同的遥控器键值不同)如下:

    16e9  50af  54ab  10ef  0af5  14eb  43bc  53ac  17e8  5fa0  57a8

 

4、按键队列消息的生成

    红外遥控按键也和普通按键一样是为了实现播放暂停等功能,两者实现的逻辑是类似的,都是把采集到的键值在 bsp_key_scan() 函数中处理后对应上按键队列消息,最终被队列消息函数处理。下面介绍如何生成按键队列消息。
    ① 定义当前使用的红外遥控器的宏开关


   

 

    ② 定义一个数组存放按键队列消息宏

    红外遥控按键键值 & 0xff 后减去 0xa0 做按键队列消息数组的元素下标每个下标对应一个按键队列消息:

    49  0f  0b  4f  55  4b  1c  0c  48  0  08
    

    数组元素即是按键队列消息宏,这些宏是 SDK 在 bsp_key.h 文件中已经定义好的(更详细的按键功能介绍请看大大通博文《中科蓝讯 SDK 开发——SDK按键功能简析》)。

    SDK 未定好的,也可以自定义数组元素的按键队列消息宏:
    

    在 bsp_key.h 中,做了普通按键(按键队列信息宏)的定义,可以支持短按,长按,双击等。查看 bsp_key.h 文件可知,KEY_28、KEY_29 尚未被 SDK 使用,则可用来定义我们所需的按键队列消息宏。

    KEY_HDMI、KEY_LO_OP 就是自定义的按键队列消息宏,分别用在按键队列消息数组的第 0 个元素和第 8 个元素中;

    定义按键短按队列消息宏:
    

    注意,前面只是做了普通按键定义,若最终要队列消息处理函数识别为红外遥控器按键短按(或单击)按键队列消息,则还需或上宏 KEY_SHORT_UP。


    ③ 按键队列信息上传
    

     采集到的键值就是通过数组 ir_tbl_FF00[] 与 按键队列消息宏对应上,get_irkey() 函数中的 key_val 获得按键队列消息宏后,最终上传到bsp_key_scan() 函数处理,可被队列消息处理函数识别为红外遥控器短按按键。

    ④ 添加按键短按队列消息宏到消息处理函数
    

    注意,队列消息处理函数可以不是 func_bt_message() 函数,也可以是 func_message() 等其他队列消息处理函数。按下红外遥控器按键,查看打印即可知,红外按键功能已经添加成功。

AB5602B 红外功能的内容就介绍到这里,欢迎大家批评指正。如果大家还有什么其他的问题或者功能想要询问,亦可以在评论区中提出,可以共同探讨,一起进步。

  

参考文档:

1、中科蓝讯蓝皮书

2、AB5602B DataSheet.pdf

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论