富斯 i6 遥控器改SWB三段开关及SWE

网上有视频,但是个人一向不喜欢看视频教程,虽然也看了,其中有人只是加了SWE开关。

先贴一下老外的网页链接

FLYSKY FS-I6 UPGRADE TUTORIAL : 6 Steps - Instructables

开始是把控带在包里把开关压断了,顺带想着反正是换开关都要动烙铁焊接,不如直接升级一下。

前提当然是要刷入10通或14通道的固件(不刷的话,SWB改三段也是一样可行的,只是就没有SWE的支持了)

有些视频就说不知道怎么把原有的SW开关改成三段。

而老外那个图的SWB的电路图是有点错的。

关键在于SW开关的电路原理,理论上SW开关应该是一个ADC输入口,连着220欧的电阻来拉高拉低即为开关,所以先说SWB的三段改造:

可以在电路板上找到SWB的测试点焊盘,使用万用表可以量到它和SWB开关的黄线之间的电阻是220欧。(参见老外的网页里的图片)

准备两个4.7k欧的电阻,也可以用两个10k的,只要阻值够高(远高于220欧),阻值相同即好,一个用于接去3.3V焊盘拉高,一个用于接去地线焊盘拉低。

在SWB焊盘附近就能找到一个未标记的3.3V和一个地线焊盘,用万用表就能找到。

用这两个电阻从SWB焊盘分别飞到3.3V焊盘和地线焊盘。

更换SWB开关为三段的,黄色的220欧引线焊到中间引脚,原来的地线焊在下方引脚(默认打到最上面时,使用220欧拉低,为SWB关状态)。

从附近SWD处可以飞一条3.3V线到SWB上方引脚(打到最下面时,使用220欧拉高,为SWB最大状态)。

SWB开关打在中间时,同时经4.7K电阻拉高并拉低,也就是分压 3.3V/2 = 1.65V,为中间值状态。

由此可见,SW开关是一个电阻分压的ADC输入口,把电压拉到中等值,就是中间位置,用小一点的电阻拉去3.3V就是最小值,接去地线就是最大值,同理所有SW开关都可以改成三段的,使用电位器也可以改成旋钮。

图就不贴了,见老外网文及各方视频。

<think>好的,我现在需要回答用户关于AT9s_SwitchStateBool和AT9s_SwitchStateTri数据类型的定义及用法的问题。首先,我需要确认这两个数据类型的具体来源和上下文。根据用户提供的引用[1],文中提到的是飞思卡尔芯片MC9S08SG16和MC9S08SG08,所以可能这些数据类型是飞思卡尔或NXP(飞思卡尔后来被NXP收购)的MCU开发中使用的。 接下来,我需要查找是否有官方文档或相关资料提到这两个数据类型。由于用户提供的引用中没有直接说明,可能需要根据常见的命名习惯和嵌入式系统中的开关状态处理来推断。通常,嵌入式系统中,布尔型开关可能表示两种状态(如开/关),而Tri可能指三态开关(如开/关/中间状态)。 然后,考虑编程中的定义。布尔类型可能使用枚举或简单的整数表示,例如: typedef enum { SWITCH_OFF, SWITCH_ON } AT9s_SwitchStateBool; 三态的可能定义: typedef enum { SWITCH_OFF, SWITCH_MID, SWITCH_ON } AT9s_SwitchStateTri; 在代码中使用时,可能用于读取GPIO状态或控制继电器等。例如,在引用[1]提到的双胞胎继电器设计电路中,可能需要这样的状态控制。 还需要注意可能的命名规范,例如前缀AT9s可能与具体的芯片型号或项目相关,但用户的问题中提到了AT9s,而引用中的芯片是MC9S08SGxx,可能存在拼写差异,需要确认是否为同一系列的不同命名方式,或者是否用户有拼写错误。 此外,检查是否有相关的库文件或头文件定义这些类型。例如,在飞思卡尔的SDK中可能会有类似的枚举定义用于开关状态处理。如果没有找到确切资料,可能需要建议用户查阅对应芯片的编程手册或SDK文档,或者提供示例代码说明常见用法。 最后,确保回答结构清晰,分点说明定义和用法,并引用提供的参考资料,特别是引用[1]中的控制系统设计,可能涉及这些数据类型的应用场景。</think>关于AT9s_SwitchStateBool和AT9s_SwitchStateTri数据类型的定义及用法,结合飞思卡尔芯片(MC9S08SG16/MC9S08SG08)的编程特性分析如下: ### 1. 数据类型定义 #### AT9s_SwitchStateBool - **定义**:布尔型开关状态,表示两种状态(如按键/继电器的开/关)。 典型枚举定义: ```c typedef enum { AT9S_SWITCH_OFF = 0, AT9S_SWITCH_ON = 1 } AT9s_SwitchStateBool; ``` 对应二进制状态$0/1$,常用于GPIO输入检测或继电器控制[^1]。 #### AT9s_SwitchStateTri - **定义**:三态开关状态,表示三种状态(如高/低/悬空或开/关/中间位置)。 典型枚举定义: ```c typedef enum { AT9S_SWITCH_OFF = 0, AT9S_SWITCH_MID = 1, AT9S_SWITCH_ON = 2 } AT9s_SwitchStateTri; ``` 常见于多档位开关或需要中间状态的传感器信号处理[^1]。 ### 2. 编程用法 #### 应用场景 - **硬件控制**:用于读取主/从节点按键电路状态(如引用[1]中的LED背景灯光控制)。 - **状态机设计**:在LIN通信控制电路中处理开关状态转换。 - **继电器操作**:控制双胞胎继电器设计电路的吸合/释放逻辑。 #### 示例代码 ```c // 读取布尔型开关状态 AT9s_SwitchStateBool read_switch() { if (GPIO_ReadPin(SWITCH_PIN) == HIGH) return AT9S_SWITCH_ON; else return AT9S_SWITCH_OFF; } // 处理三态开关状态 void handle_tri_state(AT9s_SwitchStateTri state) { switch(state) { case AT9S_SWITCH_OFF: /* 关闭继电器 */ break; case AT9S_SWITCH_MID: /* 中间保持状态 */ break; case AT9S_SWITCH_ON: /* 启动电机 */ break; } } ``` ### 3. 扩展说明 - **内存优化**:在MC9S08SG08等资源有限的芯片中,可使用`uint8_t`类型存储枚举值以节省内存。 - **错误处理**:建议在状态读取函数中添加防抖逻辑,避免机械开关的抖动干扰。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值