手柄电路源码分析之开关机

PA6、PA7 USB_ID  USB_ON  都拉高
USB_ID:高电压触发外部USB进行充电
USB_ON:用来测试SUB已经供电,插上USB
答:进入Charger_HOST_Mode说明已经插入USB。

电路的开机电路分析:

在poweroff函数中关机函数

HAL_GPIO_WritePin(DC3V2_EN_GPIO_Port,DC3V2_EN_Pin,GPIO_PIN_RESET);

这个函数的意义是关闭自身供电的DCDC电路,控制的引脚是PA9  3V2_DCDC_EN。

使3V2_DCDC_EN得电平拉高,就是3V2电平拉高。
  HAL_GPIO_WritePin(RFPWR_EN_GPIO_Port,RFPWR_EN_Pin,GPIO_PIN_RESET);  //PA8 RF_PWR_E

这个函数是关闭RF的电源使能电路

从上图可以看出,3V2_EN的高电平是3V2_DCDC_EN和HOME_BTN共同触发的。在开机的时候HOME_BTN起主导的作用。关机的时候HOME_BTN处于悬浮状态。

只要3V2_DCDC_EN拉低电路就会关闭3V2的供电。

下面是触发的电路:

 

 

 

 

上面是home键的电路,home键有开机的作用也有关机的作用。

开机的作用上面已经分析了,下面讨论home键的关机原理。

HOME键是PC3
if(PressHomeButtonTick > 200)
{
 PressHomeButtonFlag = 0;
 Power_off();
}
if(1 == PressHomeButtonFlag)
{
 PressHomeButtonTick++;
}
else
{
 PressHomeButtonTick = 0;
}
外部home键长按2秒home键就会自动关机。

 

 

相关推荐
一、实验 先说说原理吧。原理很简单,电脑声卡上面的15针游戏端口(GAME PORT),只要加上4只电位器和4个开关,就可以构成一个4轴4按钮的游戏摇杆。而航模遥控器上面恰好有两支摇杆,摇杆的动作分别对应着4只电位器阻值的变化。因此我们可以充分利用一台废旧的遥控器,当然也可以在一台好的遥控器上面改造,只不过这时工作量会大一些。 电脑的接口一直在不断演进,声卡也基本上都集成到主板上面了,而这个游戏端口却一直保留着,虽然如今风头都叫USB端口占尽了,人们也很少关注这个端口 了,但它却是十分简单而有效的! 下面是游戏端口的引脚定义: 下面是电路原理图: 很简单是吧。只需要四只100k电位器,作为比例通道,四只开关作为开关通道。另外还需要15针插头以及连线若干。 买来四只100k电位器和一个15针插头,先利用手里的排线,搭接上电路就可以先试验一下了。 插头的连接:三个5V电源合在一起,两个地线合在一起,再加上四个比例通道四个开关通道,正好需要十条线。 电位器的连接:每只电位器只需要连接其中一个端点和中间的滑动点就可以了。 开关就是这几条线,暂时没有连开关,黑色的是地线,同另外四条线的通断就是开和关了: 电路搭建完毕,该进行电脑的设置了。打开控制面板,双击游戏控制器,再点击添加出现下面界面: 再点击自定义按钮 选择飞行控制器或飞行杆,轴数选择4,按钮选择4(如果你需要按钮的话),然后给自定义的游戏控制器起个名字就可以了。连续点击两个确定以后,在游戏控制器界面就会看到刚才自定义的游戏控制器已经添加了,并且如果连接没有问题的话,控制器的状态是确定,否则会显示未连接: 选择这个游戏控制器,点击属性就可以校准了,校准以后,分别旋转4只电位器就可以看到X轴,Y轴,油门和方向舵随着电位器的旋转而改变,再把上面图中的四条开关线同黑色的地线相连,可以看到四个按钮随之点亮。 OK,试验成功了! 二、制作  遥控器里面的电位器是5k的,这个跟声卡游戏端口资料所要求的100k是不同的,所以制作过程主要就是把这个电位器 换成100k的(关于阻值,后面还有说明),安装开关(不需要也可也不安装)以及焊接相应的连线。 如果不换电位器直接使用原装的,我试验过,在控制面板和RealFlight G2里面都可以校准,但是精度不够好,比例通道信号抖动比较厉害,RealFlight G2勉强可以玩,还是换了比较好。 需要先把摇杆拆开: 拧开上面的铜螺母,电位器就可以拿下来了: 下面的任务就是去买四个这样的电位器,需要满足这三个要求:阻值是100k,电位器的螺纹要和这个相同,电位器的手柄也要和这个相同。 事实证明,这样的电位器是买不到的或者说太难找到了,如果你能买到,那实在是太幸运了。市面上都是我试验时用的这种: 这种电位器螺纹部分的直径比原装的要细,手柄形状也不一致。没有买到合适的电位器,这对我最初的热情多少有点打击。后来仔细研究一下,发现这个电位器只要稍加改造就可以利用。方法就是在螺纹上面套上一段热缩管,恰好有这么粗的(而且厚度也正好)热缩管,套上去不用加热都可以,再拧上那个铜螺母,十分合适!如果没有热缩管,想办法用别的什么东西代替就行了。手柄粗细正好,但是比原装的长了两三毫米,需要锯掉,然后再用挫打磨出那个缺口。这个手柄是铝的,加工起来十分容易,几分钟加工一个,比原来想象当中的容易得多!打磨这个缺口的时候,需要注意方向不要错了,否则安不上去,跟原装的比较一下就知道方向了。另外打磨的缺口尽量到位,不要只磨一半然后就把手柄压扁,这样会造成手柄的两端不共轴。 下面是四个加工好的电位器: 早知道加工这个如此容易,我就不必到处跑去买跟原装的一样的电位器了。买电位器的时候,我发现根原装电位器比较接近的只有下面的2和3 2是最接近的,只是手柄缺口的方向是反的,但是只买到两只(是柜台里面的样品,一定是时间很久的了),3只有螺纹是合适的,塑料的手柄应该也比较容易加工,但是阻值只有300欧的。这两种样式比较老,结构不是很合理,手柄也有些松动。1是原装的,4是加工以后的。总之,电位器完全合乎要求的买不到,但是把买到的加工一下很容易。下面是一个换过电位器以后的摇杆,跟原来没什么大的区别接下来该考虑开关了,声卡的游戏端口最多支持四个开关,需要几个就安几个,不需要可以不安装。开关的种类形状有很多,选择自己喜欢的觉得合适的就行了。下面是我选择的两种: 前面的是按键式,这种按键式的开关有的是带锁的,也就是按下去以后开关一直开着,需要再按一次才能弹起来,这种带锁的开关在有些游戏里有时候是需要的,当然有的游戏里面也能通过软件的设定来解决。 后面的开关是拨动式的,我就是用这个来完成锁定功能的而没有使用带锁的按键式开关。把这两种开关并联,需要点接触的时候就用按键开关,需要一直打开的时候,就使用拨动开关,比如微软的飞行模拟里面,对襟翼的操纵或者刹车,一推拨动开关就行了。 这两种开关都是带螺丝的,很容易安装。也有不带螺丝的那种,想要使用这种就得自己另想办法安装了。另外按键式的开关手感也不同,有的不太合适使用。开关的安装位置随便了,只要自己喜欢,什么位置都可以,放到遥控器后面中指能够得着的地方也是可以考虑的,我还是把开关放到了遥控器的肩上。最后该连线了。这需要多芯电缆或者排线也行,芯数由自己的需求决定,最多10芯,即正负电源,4个比例通道4个开关,如果不需要这么多开关,电缆芯数就相应的减少,如果一个开关也不需要,电源地线也可以省略,这样总共需要5芯就行了。我选择的是10芯的,当然软一些的比较好,带屏蔽的就更好了。 下面是连线的简单示意图: 这是打开遥控器外壳以后,从遥控器背面看上去的示意图。每只电位器标+的端点都连接声卡游戏接口上面的正电源。标*的端点引脚不使用,如果使用了这个*端点而不使用+端点的话,遥控器摇杆的动作跟电脑里面的就相反了。遥控器反向功能也正是这样实现的,可以再增加另外一组开关来切换这两个端点实现此功能,但实际上这没什么必要,因为很多游戏里面都可以设置反向功能,而且只要现在一次性连接正确就可以了,以后基本上都不需要调整。 四只电位器的中间引脚要按照图中说明的那样连接,数字就是声卡游戏接口的引脚序号,对应关系不能乱,否则摇杆的动作跟电脑里面就不是一一对应了。这样连接以后,在控制面板的游戏控制器选项里面,可以看到,右手的上下左右正好对应下面图中的X轴Y轴的动作,而左手的上下对应油门的大小,左手的左右对应方向舵的左右 可见操作系统里面的模式正是美国所使用的模式2,而国内大多数爱好者都是使用欧洲的模式1的,也就是用右手操纵油门,这没有关系的。到 RealFlight G2里面,按等号键,屏幕显示一个遥控器,摇动自己的摇杆,可以看到我们所制作的摇杆的动作跟RealFlight G2里面摇杆的动作正好是完全对应的。也就是说,不管你是使用那个模式,只要按照前面的示意图连线,然后到遥控器校准选项里面选择相应的模式就行了,屏幕上的遥控器动作跟我们自己的遥控器的动作始终是对应的。 开关的连接就没什么好说的了,把开关安在自己喜欢的位置就行了。如果你也选择了前面图中的那种拨动开关,搞清楚开关动作对应下面哪两个引脚的通断就行了,这种开关有三个引脚,我们只使用其中两个。 下面是连线接好以后的几张图片: 这是15针的插头,焊好以后把电缆同插头的外壳固定牢,不然插拔的时候容易弄断连线 连好以后遥控器的内部,只有连线,没有看不懂的电路板,除了电位器和开关,没有别的元件了。 这是一侧肩上的四个开关,实际上这四个开关只对应游戏控制器上的两个按钮。白色箭头两端所指的开关是并联的,所以他们对 应同一个按钮,如果需要松手以后开关就断开,那么就使用红色的按键开关,如果需要开关一直打开,就把拨动开关推上去。我没有使用那种带锁的按键式开关。另一侧肩上的开关同这一侧是相同的。这个红色的开关看起来有点怪怪的感觉,当初选择红色,就是希望能醒目一些,没想到太醒目了,而且这个开关的形状不太合 适,按钮比较细而且小红帽比较短。等发现合适的再把这四个按键开关换掉吧。 三、总结  我写得比较详细,这是给没有基础的朋友看的,如果你有一定的基础,看一看原理图,然后再参考一下电位器的连接图就可以了。我所作的东西(我一直不知道该给它起个什么名字好)其实是没有什么技术含量的,就是利用了声卡的游戏端口和遥控器的摇杆。做USB接口的游戏控制器的才是高手,我曾经也想做USB接口的,但是这个太复杂,我没有那么多的时间和精力。还是先总结一下优点吧。最大的优点是简单,只需要一点电子的基础甚至没有什么基础照着连线就行了,非常适合爱好者自制,而且它根本不需要电池,插上就能用了。其次的优点是它适用范围广,FMS,RealFlight G2就不用说了,微软的飞行模拟,极品飞车都行,就连超级玛丽,俄罗斯方块也行,用这个玩极品飞车是极爽的。还有就是它成本少,只要四个电位器,开关(数量按需而定),多芯电缆(最多10芯)和一只15针(两排的)插头就可以了。 我是利用一台废旧的遥控器改装而成的,也就是利用了遥控器的外壳以及摇杆。很多朋友可能手里没有现成的废旧遥控器,那么解决方法首先当然是购买了,吉林振华有卖的,几十块钱吧,国产的遥控器我估计上面的电位器应该很容易就买到形状合适的,所以就不用再加工电位器的手柄了,直接就能安上。如果在现有的完好的遥控器上面改造的话,方法之一就是原电位器的“对面”的位置上,设法再固定另外一只形状比较合适的电位器,并且把遥控器摇杆的转轴同电位器的手柄相连,这当然要看个人的手艺了。我不知道别的品牌的遥控器的电位器阻值都是多大(我用FUTABA的),如果有原装电位器就是100k的,那就更好了,可以直接利用原来的电位器了,不再需要更换和加工,这时候最好加一组切换开关,用来切换电位器是连接到遥控器上还是连接到电脑上。还有一种方法是尝试性的,就是把遥控器上正在使用的5k电位器直接换成100k的,这样遥控器还能否正常工作我不肯定,也没有试验过,如果能工作的话,后面的工作就跟上面相同了,就是电脑和遥控器共同使用这100k电位器了。但是这样即使能工作,我们换上去的电位器肯定没有原来的精度好,所以这种方法不是十分可取。关于电位器的阻值,我还需要说明一下。声卡的游戏端口技术资料说明需要100k的电位器,我使用的也是100k的,但是由于遥控器的摇杆活动的角度有限,还不到90度,而电位器的旋转角度大约有300度,经测量实际上100k的电位器就只能利用其大约40k到60多k之间的一小段。本来应该是0到100k 的阻值对应一个完整的控制信号,但是把这样一小段阻值校准成一个完整的信号,这实际上就造成了把电位器的粗糙程度放大了,也就是精度有所下降。当然,使用质量良好的电位器可以改善精度,但是电位器的阻值也是重要的一方面,正如前面用原装的5k电位器试验的时候,电脑里的信号抖动的比较厉害,虽然原装的电位 器精度很高,但是阻值小得多。所以要想提高精度,除了采用精度高的电位器,阻值的范围也最好是恰到好处的0到100k。其解决方法一是设法寻找转动角度大约是90度的100 k电位器,这个能否买到我不敢肯定,估计是没有。另外的办法就是使用阻值大一些的电位器,300k或者400k的,然后使用其阻值从0开始的一段,从摇杆活动的角度判断,能利用电位器的0到100k之内的一段,估计精度会有所提高。这时在打磨电位器手柄上面的缺口的时候,需要仔细对比,搞清楚缺口应该在什么角度。还有一点可以改进的地方。因为我利用的是一台废旧的遥控器,所以那条电缆就从原来天线的孔伸出来了,遥控器上面拖着一条长线,如果觉得不方便,可以再准备一对插头,在电缆和遥控器上面分别安上插头和插座,这样电缆就可以在遥控器上面插拔了,可以把电缆一直留在电脑一端,遥控器可以很方便的拿下来,还不用每次都到电脑主机后面插拔电缆了。制作过程当中,需要注意不要把声卡接口上面的正电源和地短接。我还是要提醒一下,读者因为操作失误而损坏电脑,作者是不负任何责任的。 注:各轴精度为8位 也就是256单位
©️2020 CSDN 皮肤主题: 程序猿惹谁了 设计师:白松林 返回首页