android 模拟IR输出

#define IR_HEAD0 0
#define IR_HEAD1 1
#define IR_TIME_BASE 2
#define IR_CODE_0  3
#define IR_CODE_1  4
#define IR_CODE_END  5
#define TIMER_9000US  10500
#define TIMER_4500US  5710
#define TIMER_560US   720
#define TIMER_1680US  2135

SendIR(const U16 head, const U16 keycode,const BOOL outreverse)
{
	  S8 TranselateBitPos;
	  U8 Ir_trans_sta;
	  int count = 0;
	  U8 head0 = head >> 8;
	  U8 head1 = head &0x00ff;
	  Ir_trans_sta=IR_HEAD0;
	  TranselateBitPos=32;
	  printf("\n yanxi head:%d  keycode:%d  outreverse:%d",head,keycode,outreverse);
	  while(TranselateBitPos>=0)
	  {
	 	switch(Ir_trans_sta)
	 	{
		 case IR_HEAD0:	
			  Ir_trans_sta= IR_HEAD1; 
			  for(count=TIMER_9000US;count>0;count--)
				  SetGpioDeviceStatus(LED_WORK,!outreverse);
			  break;
		 case IR_HEAD1:		 			
			  Ir_trans_sta= IR_TIME_BASE; 
			  for(count=TIMER_4500US;count>0;count--)
				  SetGpioDeviceStatus(LED_WORK,outreverse);
			  break;
		 case IR_TIME_BASE:	
		 		if(TranselateBitPos>24)
				{
					 if( ((head0>>(32-TranselateBitPos)) && 0x1) == 0x1 )
					 	Ir_trans_sta= IR_CODE_1; 
					 else 
					 	Ir_trans_sta= IR_CODE_0; 						 
				}

				else if(TranselateBitPos>16)
				{
					 if( ((head1>>(24-TranselateBitPos)) && 0x1) == 0x1 )
					 	Ir_trans_sta= IR_CODE_1; 
					 else 
					 	Ir_trans_sta= IR_CODE_0; 						 
				}
				else if(TranselateBitPos>8)
				{
					 if( ((keycode>>(16-TranselateBitPos)) && 0x1) == 0x1 )
					 	Ir_trans_sta= IR_CODE_1; 
					 else 
					 	Ir_trans_sta= IR_CODE_0; 						 
				}
				else if(TranselateBitPos>0)
				{
					 if( ((keycode>>(8-TranselateBitPos)) && 0x1) == 0x1 )
					 	Ir_trans_sta= IR_CODE_0; 
					 else 
					 	Ir_trans_sta= IR_CODE_1; 						 
				}
				else
				{
					 Ir_trans_sta= IR_CODE_END; 	
				}
				
				for(count=TIMER_560US;count>0;count--)
					SetGpioDeviceStatus(LED_WORK,!outreverse);
				
				break;
		 case IR_CODE_0:		
				Ir_trans_sta= IR_TIME_BASE; 
				for(count=TIMER_560US;count>0;count--)
					SetGpioDeviceStatus(LED_WORK,outreverse);						
				TranselateBitPos--;
				break;
		 case IR_CODE_1:		
				Ir_trans_sta= IR_TIME_BASE; 
				for(count=TIMER_1680US;count>0;count--)
					SetGpioDeviceStatus(LED_WORK,outreverse);						
				TranselateBitPos--;
				break;
	 	 case IR_CODE_END:
				Ir_trans_sta= IR_HEAD0; 
				SetGpioDeviceStatus(LED_WORK,outreverse);						
				TranselateBitPos=-1;//force to exit.
				break;
		 default:break;
		}
	}

}

IR2110是一种高压、高速功率MOSFET和IGBT驱动器,具有独立的高端和低端参考输出通道。它的内部功能由逻辑输入、电平平移和输出保护三部分组成。IR2110的逻辑输入与标准CMOS或LSTTL输出兼容,可以使用3.3V逻辑电平。它的浮动通道可用于驱动高端配置的N沟道功率MOSFET或IGBT,其工作电压高达500或600伏。\[1\]\[2\] 然而,由于IR2110不能产生负偏压,当将其用于驱动桥式电路时,可能会出现干扰问题。在开通与关断时刻,由于密勒效应的存在,集电极与栅极间的寄生电容会产生位移电流,这可能在栅极上引起干扰。特别是在大功率情况下,关断电流较大,IR2110的驱动输出阻抗不够小,位移电流会在驱动电压上叠加形成毛刺干扰。如果这种干扰超过了IGBT的最小开通电压,就会导致桥臂瞬间短路。为了解决这个问题,可以使用栅极电平箝位电路,它可以防止由于IR2110不能产生负偏压而引起的桥臂短路现象。\[3\] #### 引用[.reference_title] - *1* [H桥驱动芯片IR2110功能简介](https://blog.csdn.net/King_BingGe/article/details/9747983)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [模块学习笔记-IR2110/IR2130(上)](https://blog.csdn.net/weixin_30532369/article/details/96555954)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [IR2110栅极驱动密勒效应解决电路](https://blog.csdn.net/qlexcel/article/details/77984426)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值