找回密码
 立即注册
查看: 71|回复: 12

帮忙看下关于32G8K GPIO口电流驱动能力问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-08-29 10:32:49
已绑定手机

1

主题

5

回帖

23

积分

新手上路

积分
23
发表于 6 天前 | 显示全部楼层 |阅读模式
我在测试PWM直接驱动微型步进电机时遇到的问题:  电机接线如图1

截图202508281808564415.jpg          

P02 P03 为PWM输出, P10 P14对应线圈的另一个引脚。   
用其他牌子的芯片每200uS走一微步,电机的扭矩没有问题,
今天试了用这个要500uS一微步才能驱的起来,
我想看下是不是驱动电流配置的不对。

以下是IO口的配置
void        GPIO_config(void)
{
//        GPIO_InitTypeDef GPIOA;
        
       P0_MODE_OUT_PP(GPIO_Pin_2|GPIO_Pin_3); //PWM7 PWM8 输出
        P0_SPEED_HIGH(GPIO_Pin_2|GPIO_Pin_3);
        P0_DRIVE_HIGH(GPIO_Pin_2|GPIO_Pin_3);
        
        P1_MODE_OUT_PP(GPIO_Pin_0|GPIO_Pin_4); //对应PWM7 PWM8  
        P1_SPEED_HIGH(GPIO_Pin_0|GPIO_Pin_4);
        P1_DRIVE_HIGH(GPIO_Pin_0|GPIO_Pin_4);
}

以下为PWM配置

void Steper_init(void)
{
        PWMx_InitDefine                PWMx_InitStructure;
        
        PWMB_Duty.PWM7_Duty = 150;                         //M3占空比
        PWMB_Duty.PWM8_Duty = 150;                                                                                                        //M1占空比
        
        
        PWMx_InitStructure.PWM_Mode    =        CCMRn_PWM_MODE1;        //模式,                CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
        PWMx_InitStructure.PWM_Duty    = PWMB_Duty.PWM7_Duty;        //PWM占空比时间, 0~Period
        PWMx_InitStructure.PWM_EnoSelect   = ENO7P;                                        //输出通道选择,        ENO1P,ENO1N,ENO2P,ENO2N,ENO3P,ENO3N,ENO4P,ENO4N / ENO5P,ENO6P,ENO7P,ENO8P
        PWM_Configuration(PWM7, &PWMx_InitStructure);                                //初始化PWM,  PWMA,PWMB

        PWMx_InitStructure.PWM_Mode    =        CCMRn_PWM_MODE1;        //模式,
       CCMRn_FREEZE,CCMRn_MATCH_VALID,CCMRn_MATCH_INVALID,CCMRn_ROLLOVER,CCMRn_FORCE_INVALID,CCMRn_FORCE_VALID,CCMRn_PWM_MODE1,CCMRn_PWM_MODE2
        PWMx_InitStructure.PWM_Duty    = PWMB_Duty.PWM8_Duty;        //PWM占空比时间, 0~Period
        PWMx_InitStructure.PWM_EnoSelect   = ENO8P;                                        //输出通道选择,        ENO1P,ENO1N,ENO2P,ENO2N,ENO3P,ENO3N,ENO4P,ENO4N / ENO5P,ENO6P,ENO7P,ENO8P
        PWM_Configuration(PWM8, &PWMx_InitStructure);                                //初始化PWM,  PWMA,PWMB

        PWMx_InitStructure.PWM_Period   = 300;                                                        //周期时间,   0~65535
        PWMx_InitStructure.PWM_DeadTime = 0;                                                                //死区发生器设置, 0~255
        PWMx_InitStructure.PWM_MainOutEnable= ENABLE;                                //主输出使能, ENABLE,DISABLE
        PWMx_InitStructure.PWM_CEN_Enable   = ENABLE;                                //使能计数器, ENABLE,DISABLE
        PWM_Configuration(PWMB, &PWMx_InitStructure);                                //初始化PWM通用寄存器,  PWMA,PWMB

        PWM7_USE_P02();

        PWM8_USE_P03();

        NVIC_PWM_Init(PWMB,DISABLE,Priority_0);
}


以下是我电机测试部份程序

for(loop=0;loop<60;loop++)
        {
                        PWMB_Duty7(CMRTABLE1[loop%24]*3); //M3   
                        PWMB_Duty8(CMRTABLE4[loop%24]*3); //M1
                        M0 = CMRTABLE2[loop%24];               
                        M2 = CMRTABLE3[loop%24];
                  delay_us(800);
  }
        
        
        for(loop=0;loop<2640;loop++)
        {
                        PWMB_Duty7(CMRTABLE1[loop%24]*3); //M3   
                        PWMB_Duty8(CMRTABLE4[loop%24]*3); //M1
                        M0 = CMRTABLE2[loop%24];               
                        M2 = CMRTABLE3[loop%24];
                  delay_us(500);
               
//                ASM_DELAY_US(150);
  }






回复

使用道具 举报 送花

3

主题

2001

回帖

850

积分

等待验证会员

积分
850
发表于 6 天前 | 显示全部楼层
关于您提到的32G8K GPIO口电流驱动能力问题,我们非常重视,并针对您的测试情况进行了详细分析。以下是基于现有信息的专业评估与建议:

首先,从您提供的GPIO配置来看,P0和P1端口均被设置为推挽输出(PP),并配置为高速模式(HIGHSPEED)及高驱动能力(HIGHDRIVE)。这表明在硬件层面上,GPIO口具备较高的驱动能力,理论上能够满足大多数中等功率应用的需求。

然而,在实际应用中,PWM信号的驱动能力不仅取决于GPIO的配置,还受到以下因素的影响:

1. PWM频率与占空比:  
   您提到使用500μs才能驱动微步电机,而其他品牌芯片仅需200μs。这可能意味着当前PWM频率或占空比设置不够理想。建议检查PWM的周期是否合理,确保其在电机所需的响应范围内。此外,占空比过低可能导致电机无法获得足够的平均电流,从而影响扭矩表现。

2. 电机线圈阻抗与电感特性:  
   步进电机的线圈具有一定的电感,当PWM信号切换时,可能会产生反向电动势(EMF)。若GPIO驱动能力不足,可能无法快速响应这种变化,导致电机无法正常启动或运行。建议检查电机线圈的阻抗与电感值,并考虑增加适当的续流二极管以保护电路。

3. GPIO驱动能力限制:  
   虽然32G8K的GPIO配置为高驱动能力,但其最大输出电流通常受限于芯片规格。例如,部分型号的单个GPIO口最大输出电流可能仅为20-40mA。若您所使用的电机线圈需要更高的电流,建议考虑外接MOSFET或驱动芯片来增强驱动能力。

4. PCB布线与寄生电容/电感:  
   信号路径上的寄生电容或电感可能影响PWM信号的上升/下降时间,进而影响电机的响应速度。建议优化PCB布局,减少走线长度,并确保电源与地线的稳定性。

综上所述,建议您从以下几个方面进行排查与优化:
检查PWM频率与占空比设置,确保其符合电机需求;
测量电机线圈的实际工作电流,确认是否超出GPIO的最大输出能力;
考虑引入外部驱动电路(如MOSFET或H桥模块)以提升驱动能力;
优化PCB设计,减少信号干扰与寄生效应。

如需进一步协助,欢迎提供更详细的电机参数、电源电压及实际测量数据,我们将为您进行更深入的分析与建议。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-08-29 10:32:49
已绑定手机

1

主题

5

回帖

23

积分

新手上路

积分
23
发表于 6 天前 | 显示全部楼层
是不是因为有内部下拉的问题,软件能不能关闭内部下拉

点评

默认下拉是关闭的,不需要设置  发表于 5 天前
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:643
  • 最近打卡:2025-09-03 07:46:35
已绑定手机

54

主题

1898

回帖

3822

积分

论坛元老

积分
3822
发表于 6 天前 | 显示全部楼层
单片机一般不会直接这样驱动电机吧,最好加驱动电路
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:546
  • 最近打卡:2025-09-02 06:28:13
已绑定手机

85

主题

6045

回帖

1万

积分

超级版主

积分
11106
发表于 6 天前 | 显示全部楼层
IO最大电流20mA,请确保IO不要超电流
回复

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:171
  • 最近打卡:2025-09-03 08:32:47

777

主题

1万

回帖

1万

积分

管理员

积分
18935
发表于 5 天前 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-08-29 10:32:49
已绑定手机

1

主题

5

回帖

23

积分

新手上路

积分
23
发表于 5 天前 | 显示全部楼层
感谢大这的回复。 虽然这类微型电机有专用驱动芯片,很多情场景为了降低成本都是单片机直接驱动的。最大工作电流18ma  正常应该是没什么问题。 现在在每个微步停留的时间要比较长,电机才能转动起来,电流太小就容易失步。

BKA30系列步进电机说明书.pdf

2.63 MB, 下载次数: 3

回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-08-29 10:32:49
已绑定手机

1

主题

5

回帖

23

积分

新手上路

积分
23
发表于 5 天前 | 显示全部楼层
Debu*** 发表于 2025-8-28 22:24
IO最大电流20mA,请确保IO不要超电流

电机线圈阻抗275欧,电流不会超过20mA.  如果能正常输出20mA电流,就不会有问题的。

点评

IO设置为强驱动模式 [attachimg]113217[/attachimg]  详情 回复 发表于 5 天前
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-08-29 10:32:49
已绑定手机

1

主题

5

回帖

23

积分

新手上路

积分
23
发表于 5 天前 | 显示全部楼层
jw*** 发表于 2025-8-28 21:15
单片机一般不会直接这样驱动电机吧,最好加驱动电路

这类微型电机很多时候都是用直驱的。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:546
  • 最近打卡:2025-09-02 06:28:13
已绑定手机

85

主题

6045

回帖

1万

积分

超级版主

积分
11106
发表于 5 天前 | 显示全部楼层
yan鈥*** 发表于 2025-8-29 10:42
电机线圈阻抗275欧,电流不会超过20mA.  如果能正常输出20mA电流,就不会有问题的。 ...

IO设置为强驱动模式
截图202508291137166364.jpg
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-9-3 08:35 , Processed in 0.147802 second(s), 99 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表