【转载】板载微型电机的电路分析和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]