基于SYD8801的蓝牙遥控器设计方案

来源:互联网 发布:华融新兴产业投资 知乎 编辑:程序博客网 时间:2024/05/15 05:07

         BLE芯片兴起已经有好几年了,从最初的TICC254x的火热到后期之秀Dialog在小米手环的绽放,产品形态也从最初的防丢器应用延时到可穿戴产品,智能家居和消费类产品等各个方面。

        采用BLE技术的蓝牙遥控器,也是最近兴起的产品,有很大的市场空间。相比普通的红外遥控器,蓝牙遥控有很明显的优点:1.360°无死角遥控,遥控距离更远 2.通过与智能电视或者机顶盒配对,可以实现独立无干扰的控制 3.可扩展性强,可以集成简单的语音控制和体感游戏控制 4.增加很低的成本,即可兼具红外遥控器功能和红外学习功能。

        本文描述了基于SYD8801的蓝牙遥控器设计方案,供开发人员参考。


1. 首先看看SYD8801的系统框图和改芯片的主要性能参数,对芯片有大致的了解:



2. 原理图设计

         由于SYD8801 片上集成了Balun ,无需阻抗匹配网络,无需外挂晶振负载电容,最大限度地节省BOM 成本。外部也只需要矩阵键盘和简单的元器件,极具成本优势。




3. 软件架构描述

int main(void)

{

__disable_irq();

ble_init(); //clk init

gpio_init();

dbg_init();dbg_printf("RCU Power On!\r\n"); 

#ifdef CONFIG_LED

led_config(LEDALL);

led_flash();

#endif

RCU_set_work_mode(RCU_MODE_BT);


io_irq_enable(BIT16|BIT17|BIT18|BIT19|IFR, &gpio_int_callback);

__enable_irq();


while(1)

{

if(work_mode == RCU_MODE_IR_RECEIVING)//瞬态的自加模式,会自动降到下一模式

{

__disable_irq();

pulse_time++;

__enable_irq();

}

else if(work_mode == RCU_MODE_IR_RECEIVE_WAITING)//红外学习模式

{

if(IR_receive_CMP == 1)

{

IR_receive_CMP = 0;

RCU_receive_decode();

enable_IR_receive(1);

}

KeyEvent_Handle();

}

else //蓝牙模式、红外发射模式

{

ble_sched_execute();

KeyEvent_Handle();

SystemSleep();

} 

}

}

在BLE初始化中调用:

evt.evt_mask=(GAP_EVT_CONNECTION_SLEEP|GAP_EVT_CONNECTION_INTERVAL);

evt.p_callback=&ble_evt_callback;

SetEvtCallback(&evt);

给底层协议栈注册ble_evt_callback(),当发生蓝牙事件的时候,会调用:

static void ble_evt_callback(struct gap_ble_evt *p_evt) 

{

if(p_evt->evt_code == GAP_EVT_ADV_END)

{

//广播结束

}

else if(p_evt->evt_code == GAP_EVT_ATT_READ)

{

//读特征

}

else if(p_evt->evt_code == GAP_EVT_ATT_HANDLE_CONFIGURE)

{

//配置服务

}

else if(p_evt->evt_code == GAP_EVT_ENC_KEY)

{

//配对

}

else if(p_evt->evt_code == GAP_EVT_CONNECTED)

{

//连接

}

else if(p_evt->evt_code == GAP_EVT_DISCONNECTED)

{

//断开

} 

}

通过调用该函数,处理相应的蓝牙事件。

矩阵扫描通过中断触发gpio_int_callback();

按键事件处理函数KeyEvent_Handle();

通过主函数可以看到,遥控器一共有3种主要的运行模式:蓝牙模式、红外发送模式、红外接收(学习)模式。

红外学习也采用中断方式解码红外接收头数据,目前红外主要采用NEC模式的红外协议。红外接收解码基本上准确无误。


4. 蓝牙服务描述

The Remote control reference application implements the following services:

--GAP

--GATT

--DIS

--HID over GATT

--Battery

其中HID服务可支持keyborad,mouse,system control,consumer key等HID报告。


5. 功耗测试情况

    目前已经在iphone4s,iphone5s,iphone6,华为P9,创维电视盒子上运行OK。



6. 软件开发环境采用MDK,目前蓝牙遥控器的代码空间使用情况

 功能:蓝牙遥控、红外遥控、红外学习

Program Size: Code=18962 RO-data=546 RW-data=212 ZI-data=7804

2 0
原创粉丝点击