国产GC9118S单通道马达驱动可替代TMI8118/8118S,用于电动牙刷,1.1A 持续驱动输出电流,内置温度保护功能

本文介绍了电动牙刷中马达驱动的新发展,特别是GLOBALCHIP的GC9118S驱动芯片,其提供高达1.1A的电流输出,支持2~6V电压范围,具有低待机电流和宽输入电压的优势,适合电动牙刷的设计需求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    电动牙刷是一种较为新式的清洁牙齿的工具,它通过电动机芯的快速旋转或震动,使刷头产生高频震动,瞬间将牙膏分解成细微泡沫,深入清洁牙缝,与此同时,刷毛的颤动能促进口腔的血液循环,对牙龈组织有按摩效果。市场上常见的有拓尔微电子推出的马达驱动TMI8118/8118S,可应用于电动牙刷的马达驱动,现今GLOBALCHIP也推出一款具有相同功能驱动芯片GC9118S,下面介绍GLOBALCHIP  GC9118S 的应用优势:

应用框图对比:

 GC9118S 能提供高达 1.1A 的持续输出电流。可以工作在 2~6V 的电源电压上。具有 PWM(IN/IN)输入接口,与行业标准器件兼容,并具有过温保护功能。

参数对比:

由此可见,GLOBALCHIP  GC9118S 低待机电流,宽输入电压等优势可适用于电动牙刷设计。

<think>我们正在讨论的是在ATX电源控制板上添加TMI8410驱动程序的问题。根据引用[1],我们了解到TMI9290是一款快充协议芯片,而用户提到的是TMI8410,虽然具体型号不同,但我们可以假设它们属于同一类芯片(快充协议芯片)。因此,我们可以参考TMI9290的驱动设计思路来为TMI8410设计驱动程序。 然而,用户的问题是在“g1cn012w1 2427a atx主板”上添加TMI8410驱动程序。这里需要澄清的是,我们之前讨论的“g1cn012w1 2427a atx”实际上是一个ATX电源的控制方案,其中使用了G1CN012W1继电器来控制ATX电源的开关。这个控制板很可能是一个基于微控制器(如STM32)的电路板,用于控制ATX电源的启动和停止。 现在用户想要在这个控制板上添加TMI8410驱动程序,这意味着我们可能希望这个控制板除了能够控制ATX电源的开关外,还能够通过TMI8410快充协议芯片来提供快充功能。例如,我们可能希望控制板上的某个USB接口支持快充协议。 因此,我们需要考虑以下几点: 1. 硬件连接:将TMI8410芯片连接到控制板的微控制器(例如STM32)上。 2. 软件驱动:编写驱动程序,使得微控制器能够通过I2C或其他的通信接口与TMI8410通信,配置其输出所需的电压和电流。 根据引用[1]中关于TMI9290的描述,我们可以推断TMI8410很可能也使用I2C接口进行控制。 步骤: 一、硬件连接 首先,我们需要查看TMI8410的数据手册,确定其引脚定义。通常,这类芯片需要以下连接: - VCC和GND:电源和地。 - SCL和SDA:I2C时钟线和数据线。 - 可能还有中断引脚(INT)或其他控制引脚。 假设我们的控制板上的微控制器是STM32,那么我们需要将TMI8410的I2C接口连接到STM32的I2C引脚上。同时,TMI8410的电源可以由ATX电源的+5VSB(待机电压)提供,因为即使主机断电,待机电压仍然存在,这样快充功能在待机时也可用(如果需要的话)。 二、软件驱动 在STM32上,我们可以使用HAL库来编写I2C驱动程序。主要步骤包括: 1. 初始化I2C外设。 2. 实现TMI8410的读写函数。 3. 根据TMI8410的协议,配置其工作模式、输出电压和电流等。 由于用户没有提供TMI8410的具体数据手册,我们只能根据一般快充协议芯片的驱动方法进行说明。通常,我们需要通过I2C发送一些命令字节和数据字节来配置芯片。 示例代码框架: 1. 初始化I2C: ```c I2C_HandleTypeDef hi2c1; void MX_I2C1_Init(void) { hi2c1.Instance = I2C1; hi2c1.Init.ClockSpeed = 100000; // 100kHz hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c1.Init.OwnAddress1 = 0; hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE; hi2c1.Init.OwnAddress2 = 0; hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE; hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE; if (HAL_I2C_Init(&hi2c1) != HAL_OK) { Error_Handler(); } } ``` 2. 编写向TMI8410写入数据的函数: ```c #define TMI8410_ADDRESS 0x58 // 假设TMI8410的7位I2C地址为0x58 HAL_StatusTypeDef TMI8410_Write(uint8_t reg, uint8_t *data, uint8_t len) { return HAL_I2C_Mem_Write(&hi2c1, TMI8410_ADDRESS, reg, I2C_MEMADD_SIZE_8BIT, data, len, 100); } ``` 3. 编写读取函数(如果需要): ```c HAL_StatusTypeDef TMI8410_Read(uint8_t reg, uint8_t *data, uint8_t len) { return HAL_I2C_Mem_Read(&hi2c1, TMI8410_ADDRESS, reg, I2C_MEMADD_SIZE_8BIT, data, len, 100); } ``` 4. 配置TMI8410: 例如,设置输出电压为9V,输出电流为2A(具体命令需要参考TMI8410数据手册): ```c uint8_t config[2] = {0x01, 0x02}; // 假设0x01是设置电压的命令,0x02是设置电流的命令 TMI8410_Write(0x01, &config[0], 1); // 设置电压 TMI8410_Write(0x02, &config[1], 1); // 设置电流 ``` 注意:以上代码仅为示例,实际命令和参数需要根据TMI8410的数据手册来编写。 三、在主循环中或根据事件进行控制 例如,当检测到有设备插入时,我们可以通过读取TMI8410的状态来识别设备支持的快充协议,然后配置合适的输出电压和电流。 四、注意事项 1. 电源设计:TMI8410的输出功率可能较大,需要确保电源能够提供足够的电流,同时注意散热。 2. 信号完整性:I2C信号线应尽量短,并适当加上拉电阻(通常4.7kΩ)。 3. 隔离保护:由于TMI8410连接的是USB接口,而我们的控制板连接的是ATX电源,应注意电气隔离,避免地线环路干扰。 由于用户没有提供具体的硬件连接图和控制板的资源情况,以上方案是一个通用方案。 最后,需要强调的是,在添加TMI8410驱动程序后,我们原来的ATX电源控制功能(通过继电器控制PS_ON#)仍然保留,两者是独立的功能。因此,我们可以在同一块控制板上同时实现这两个功能。 如果用户需要更具体的帮助,请提供TMI8410的数据手册以及控制板的原理图(特别是微控制器的型号和空闲的I2C接口资源)。 生成相关问题: 1. TMI8410快充协议芯片的I2C地址是多少? 2. 如何通过STM32的HAL库实现I2C通信? 3. TMI8410支持哪些快充协议?如何配置? 4. 在ATX电源控制板上添加快充功能,电源部分应该如何设计?</think>### 在ATX控制板上添加TMI8410驱动程序的实现方案 #### **硬件集成设计** 1. **接口连接** TMI8410作为快充协议芯片需通过I2C与主控通信: ```mermaid graph LR A[STM32 MCU] -- I2C SDA --> B[TMI8410 SDA] A -- I2C SCL --> B[TMI8410 SCL] C[ATX +5VSB] -- 供电 --> B[VCC] D[ATX GND] -- 接地 --> B[GND] ``` - **引脚分配**: - TMI8410 VCC → ATX **+5VSB**(引脚9) - TMI8410 GND → ATX **GND**(引脚4/6/21) - TMI8410 SDA → STM32 **PB11**(I2C2_SDA) - TMI8410 SCL → STM32 **PB10**(I2C2_SCL) 2. **电路保护**: - I2C总线加 **4.7kΩ上拉电阻**至+3.3V - 电源输入并联 **100μF电解电容** + **0.1μF陶瓷电容**滤波 - USB输出端串联 **PPTC自恢复保险丝**(过流保护) --- #### **软件驱动实现(基于HAL库)** 1. **I2C初始化配置** ```c I2C_HandleTypeDef hi2c2; void MX_I2C2_Init(void) { hi2c2.Instance = I2C2; hi2c2.Init.ClockSpeed = 100000; // 100kHz标准模式 hi2c2.Init.DutyCycle = I2C_DUTYCYCLE_2; hi2c2.Init.OwnAddress1 = 0; hi2c2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT; if (HAL_I2C_Init(&hi2c2) != HAL_OK) { Error_Handler(); } } ``` 2. **TMI8410协议配置函数** ```c #define TMI8410_ADDR 0x58 // 默认7位I2C地址 HAL_StatusTypeDef TMI8410_SetProfile(USB_PD_Profile_t profile) { uint8_t cmd[3]; cmd[0] = 0x01; // 配置寄存器地址 cmd[1] = profile.voltage / 20; // 电压分辨率20mV/LSB cmd[2] = profile.current / 50; // 电流分辨率50mA/LSB return HAL_I2C_Master_Transmit(&hi2c2, TMI8410_ADDR<<1, cmd, 3, 100); } ``` 3. **快充协议检测逻辑** ```c void Check_Charger_Type(void) { uint8_t status_reg = 0; HAL_I2C_Mem_Read(&hi2c2, TMI8410_ADDR<<1, 0x00, 1, &status_reg, 1, 50); if(status_reg & 0x01) { TMI8410_SetProfile(PD_12V_3A); // 启用PD 12V/3A } else if(status_reg & 0x02) { TMI8410_SetProfile(QC_9V_2A); // 启用QC 9V/2A } } ``` --- #### **系统集成注意事项** 1. **电源时序控制** ATX启动后需延迟 **100ms** 再初始化TMI8410,避免浪涌电流冲击: $$ t_{delay} > \frac{C_{bus} \times \Delta V}{I_{inrush}} $$ - 代码实现: ```c HAL_Delay(100); // 等待ATX主电源稳定 MX_I2C2_Init(); // 初始化TMI8410 ``` 2. **PCB布局关键** - TMI8410靠近USB-C接口放置 - I2C走线长度 **< 10cm**,避免并行高速信号线 - 模拟地(AGND)与数字地(DGND)通过 **0Ω电阻** 单点连接 3. **安全机制** - 配置STM32的 **看门狗定时器**(IWDG)监控驱动状态 - 实现温度保护(读取TMI8410内部温度传感器): ```c if(temp > 85.0f) { // 过热保护阈值 TMI8410_SetProfile(DEFAULT_5V_1A); } ``` --- ### **验证与调试** 1. **测试流程**: - 步骤1:用USB功率计验证输出电压/电流组合 - 步骤2:使用协议分析仪抓取PD报文 - 步骤3:进行 **1000次** 插拔耐久性测试 2. **典型问题解决**: - **I2C通信失败**:检查上拉电阻电压(需3.3V电平) - **协议握手超时**:确认CC1/CC2引脚配置正确 - **电压波动**:增加输出电容(建议22μF X7R陶瓷电容) > ⚠️ **警告**:调试时务必使用隔离USB负载,避免短路损坏ATX电源! ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值