yCat 发表于 2015-8-27 14:26:55

【转载】板载微型电机的电路分析和PWM配置代码

帖子链接:http://bbs.elecfans.com/jishu_500494_1_1.html
帖子作者:xintuxing


在GoKit功能板上有一个小直流电机,该电机可起到震动和试验PWM的作用。
首先,看电机的驱动电路图,驱动芯片是L9110,这款芯片相关信息如下图,只需要两根驱动线,IA和IB,这两个引脚兼容TTL和CMOS电平,可以直接连接STM32芯片。GoKit开发板将IA连接到了PB4,IB连接到了PB5。
http://bbs.elecfans.com/data/attachment/forum/201507/21/142825rh9a8kikti98hzht.jpg.thumb.jpg

第二,根据刚才的电路分析,那么只要在PB4或PB5这两个引脚上输出PWM信号就可以调节电机的正反转和速度。下面看看从STM32F10x的资料上截下来有关PB4和PB5的两张图片:
http://bbs.elecfans.com/data/attachment/forum/201507/21/145118tj8c2cjwcoicxs6p.jpg.thumb.jpghttp://bbs.elecfans.com/data/attachment/forum/201507/21/145851c666d0uvgl5rp6jl.jpg.thumb.jpg

根据上面的两张图可以知道,TIM3 的通道1和通道2是默认在PA6和PA7上的,需要重映射后才是PB4和PB5。还有一点是PB4 是JTAG的复位引脚,系统复位后PB4默认是JRST功能,所以在程序里一定要将JTAG功能关闭或者只使JRST失效。
下面给出参考的代码:

[*]void TIM3_PWM_Configration(void)
[*]{
[*]                GPIO_InitTypeDefGPIO_InitStructure;
[*]                TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
[*]                TIM_OCInitTypeDef TIM_OCInitStructure;
[*]
[*]                GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//将PB4和PB5配置为复用推挽输出
[*]                GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;
[*]                GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
[*]                GPIO_Init(GPIOB, &GPIO_InitStructure);
[*]
[*]                RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3 , ENABLE);//打开TIM3时钟
[*]                GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE);//TIM3通道局部重映射,
[*]                TIM_TimeBaseStructure.TIM_Prescaler =7199;             //TIM3预分频因子(72MHz/(7199+1))=10000Hz
[*]                TIM_TimeBaseStructure.TIM_Period = 100;               // 自动重载寄存器的值周期10ms
[*]                TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //时钟不分割
[*]                TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数
[*]                TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);
[*]
[*]                TIM_OCInitStructure.TIM_OCMode=TIM_OCMode_PWM2;                //PWM2模式
[*]                TIM_OCInitStructure.TIM_Pulse=50;                                       //占空比调节值,也可通过TIM3->CCR1 = 0—100调节速度
[*]                TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;         //比较输出使能
[*]                TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;                //输出极性高
[*]                TIM_OC1Init(TIM3, &TIM_OCInitStructure);                        //装入TIM3_CH1(PB4)
[*]                TIM_OC2Init(TIM3, &TIM_OCInitStructure);                        //装入TIM3_CH2(PB5)
[*]                TIM_Cmd(TIM3,ENABLE);//使能TIM3

复制代码
谨以此拿来分享,见笑了。

页: [1]
查看完整版本: 【转载】板载微型电机的电路分析和PWM配置代码