esp8266红外例程

所需积分/C币:6 2018-05-30 17:30:57 485KB PDF
10
收藏 收藏
举报

这是esp8266的红外文档。
Espressif Systems ESP8266 Infrared Device guide Table of contents 1.红外发送与接收使用说明 1.1.红外发送使用方法 1.2.红外接收使用方法 4444 2.使用详细过程 2.1. timer_frc2_dsr_inito. 2.2.ir_ rx init)…… 23.ir_ timer0……… 2.4. test in_nec_tx0… 55556 2.5.红外接收中断 2.6. ir_intr_testo 6 Espressif Systems乐鑫信息科技 3/7 March 5. 2015 Espressif Systems ESP8266 Infrared Device guide 1.红外发送与接收使用说明 本文档以32 bit nec发送与接收协议为例,现实红外遥控功能。 接收 红外接收功能主要同过GPO的边沿中断完成。通过读取系统 counter时间,将两次时间相减可以得到波 形持续时间。 需要注意,红外接收通过GPO中断实现,同时,系统只能注册一个○中断处理程序,如果有其他|○口 也需要中断的话,需要将这些中断在同一个处理程序中处理(判断中断源并相应处理) 发送 以|2S的BCK或者WS脚产生38KHz载波用于发送。通过系统FRC2的 DSR TIMER产生并驱动红外发送状态 机 1.1.红外发送使用方法 (1)初始化FRC2 RT○SSDK timer_frc2_dsr_in it( N○ NE OS SDK: system_timer_reinit( (2)设置标准格式的数据 set_tx_data(u8 tx_addr, u8 tx_cmd, u8 tx_rep) 或自定义数据: set tx data custom(u8 tx addr,u8 tx ad dr2,u8tcmd,u8tcmd2,u8 tx_rep) 3)开始发送数据:ir_ tx test(); 12.红外接收使用方法 (1)初始化红外接收GPO端口和GPO中断:irrx_init( (2)当触发中断时,进入中断服务程序 interrupt_serv();在收到32位正确数据后,可以使用这些数据。 2.使用详细过程 该例程使用以GPO14作为红外接收,接收GPO13红外发送的数据。 从 void user_ini(void)开始: Espressif Systems乐鑫信息科技 4/7 March 5. 2015 Espressif Systems ESP8266 Infrared Device guide 2.1. timer frc2 dsr inito timer frc2 dsr init(;∥FRC2初始化,详见 FRC TIMER说明 2.2. ir_ rx_inito) rrx_init();∥红外接收初始化 GPO_ Config TypeDef gpio_ in_cfg;∥定义一个gpio输入结构体 gpio_ in_cfg.GP| o_Intr Type=GP|OP|N| NTR NEGEDGE;GPO下降沿触发中断 gpio_ in_cfg GPIO_Mode=GP○ Mode_Input;/GP○输入模式 gpio_in_cfg. GPIO Pin=GP|O_Pin14;//R引脚为GP○14 gpio_ in_cfg GPIO_Pullup=GP| O_ PullUp_D|s;/无上拉电阻 gpio_ config(& gpio_in_cfg);/配置GP|○寄存器 GPIO_REG_WRITE(GPIO_STATUS_W1TC_ ADDRESS BT(R_GP| O IN NUM);//清|R_GP|O|NNUM的中断 gpio_ intr_handler_register(( nterrupt_serv;/指定GPO中断服务程序 t isr unmask(1<<ETS_GP|O|NUM);/GPO中断 2.3. ir timer ir_timer() os_timer_disarm ( &ir_timer) os timer seton(&ir timer, test ir nec tx NULl) os_timer_arm_ms(&ir__timer, 2000, 1) /起 dir timer用于定时调用 test ir nec txI函数,实现定时发送 2. 4. test ir_nec txo test ir nec tx();/测试红外nec发送 (1)设置要发送的数据 set tx data(u8 tx addr,u8tcmd,u8 tx_rep);//标准的要发送的数据,发送处理中,将acdr的反码, cmd反码也一并发送 set tx data custom(u8 tx addn,u8 tx addr2u8 tx cmd. u8 tx cmd2,u8trep)/定义发送的数据, tx addr, tx addr2,cmd, tx cmd2构成一个32bt的数据 (2) ir tx test();/红外发送,分为四步完成 step1)caseR_TX_IDLE Espressif Systems乐鑫信息科技 5/7 March 5. 2015 Espressif Systems ESP8266 Infrared Device guide gen_i2sck();/产生38KHz载波信号 os timer_arm_us(& ir tx timer, IR NEC HEADER H|GHUS,0);//ms的载波 step2) case IR_TX_HEADER ir tx carrier clr();∥/关闭载波 os timer arm_us(&ir_ tx timer,|RNEC_ HEADER_ LOW US,0);/4.5ms的低电平 step3) case IR TX_DATA:∥发送数据,发送地址码和地址反码,命令码和命令反码 x standard=1时,使用标准格式的数据,addr1=addr2,cmd1=-cmd2 r tx stand ard=0时,使用自定义的数据,可获得4个数据add,addr2,cmd,cmd2 step4) case IR TX REP:∥/发送重复码 25.红外接收中断 step 1ir_rxenable o; gpio-pin_intr_state_set(GPIO_ID_PIN(IR_GPIO_IN_NUM) GP|OP| N INTR NEGEDGE);∥没置红外输入引脚为下降沿触发中断 step2)interrupt_serv () gpio_status= GPIO_REG_READGPIO_STATUS_ ADDRESS f(( gpo_status>>RGPO_NNUM)&BT0X∥获取R_GPO|NNUM状态 ir intr_test();∥/若红外接收pn脚触发中断,进入处理函数 2.6. ir intr test() r_intr_test();/红外接收中断处理,分为三步完成 step1) case Ir neo_ STATE_IDLE:∥获取引导码,包括9ms低电平,4.5ms高电平 step2) case IR nEo_ STATE_CMD:∥取地址码和地址反码,命令码和命令反码,当接收到32位数据 时,校验cmd1与cmd2的反码是否相同,相同则认为收到数据正确,否则重新接收数据。 fcnt== R NEC BIT NUM*4/收到32位数据 f( nec code check( ir cmd)∥校验cmd1与cmd2的反码是否相同 printf("adr:%02x,n", Ir cmc&0×f;/取第一个字节 printf("adr:%02Xn", ir cmd>>8)80×f);/取第二个字节 printf("cmd:%02x,\n"( ir cmd>>16)及&O×升);/获取第三个字节 Espressif Systems乐鑫信息科技 6/7 March 5. 2015 Espressif Systems ESP8266 Infrared Device guide printf("-cmd%02xn";( ir cmd>24)0xf);/取第四个字节 Ir state=|R_NEC_ STATE REPEAT;/下次进入接收重复码状态 rep_fg=0 Helsel state=|RNEC_ STATE_DLE;/下次进入接收引导码状态 cnt=0 ir cmd=0 step3) case IR Nec_ STATE REPEAT:取重复码 Espressif Systems乐鑫信息科技 7/7 March 5. 2015

...展开详情
试读 7P esp8266红外例程
立即下载 低至0.43元/次 身份认证VIP会员低至7折
一个资源只可评论一次,评论内容不能少于5个字
weixin_37653845 SDK里都没这些函数,屁用没有
2020-12-16
回复
上传资源赚积分or赚钱
    最新推荐
    esp8266红外例程 6积分/C币 立即下载
    1/7
    esp8266红外例程第1页
    esp8266红外例程第2页

    试读结束, 可继续读1页

    6积分/C币 立即下载 >