Quantcast
Channel: Motor drivers forum - Recent Threads
Viewing all articles
Browse latest Browse all 13252

DRV10987: Please Help ! I can't spun my BLDC MOTOR with DRV10987.

$
0
0

Part Number:DRV10987

Hi,

I am using DRV10987 with my smart car application.,I have done what I can with Turning Guide.However,i can't spun my motor with under configurations.Here is my motor parameter and tested data:

void DRV_init(void)
{

		i2c_init(i2c0,100*1000);

		i2c_init(i2c1,100*1000);
 
		systick_delay_ms(1);				//Wait for set up 1ms

		do
		{
 
			i2c_write_reg(i2c0,DRV10987_Address,EECRTL,0x80,0x00);				//Setting EEPROM Access permission and DISABLE!!!!!!!! the motor

			i2c_write_reg(i2c0,DRV10987_Address,EEPROM1,0x00,0x00);				//clearer EEPROM Access code

			i2c_write_reg(i2c0,DRV10987_Address,EEPROM1,0xC0,0xDE);				//Setting EEPROM Access code

			gpio_init(G0,GPO,0);

//			systick_delay_ms(1);				//Wait for set up 1ms

		}while(i2c_read_reg(i2c0,DRV10987_Address,EEPROM2) != 0x0001);		//Setting EEPROM able to read

		gpio_init(G0,GPO,1);

		i2c_write_reg(i2c0,DRV10987_Address,CONFIG1,0
																								| p5_SpectrumControl_MASK
																								| FG_both_open_and_close
																								| FG_Only_Close
																								| FG_POLES(16),
																								0
																								| CLK_ADJ_SELECT(0)		  //0:FULL 1:HALF
																								| 0x5B );								//Setting to 3.5R


		i2c_write_reg(i2c0,DRV10987_Address,CONFIG2,0
																								| 0x0A,									//Page 24
																								0
																								| CommAdvMode(0)					
																								| 0x02  );									//Page 37
		
		
		i2c_write_reg(i2c0,DRV10987_Address,CONFIG3,0
																								| ISDThr_80ms
																								| BrkCurThrSel(0)
																								| BEMF_HYS(0) 
																								| ISDEn(0) 
																								| RvsDrEn(0)
																								|	RvsDrThr_6P3,								
																								0
																								|	OplCurr_0p4			
																								| OplCurrRt_6
																								| BrkDoneThr_0 );							

		
		i2c_write_reg(i2c0,DRV10987_Address,CONFIG4,0
																								| AccRangeSec(0)
																								| StAccel2(0)
																								| StAccel(1),								
																								0
																								|	Op2ClsThr(1,10)			
																								| AlignTime(6) );

		i2c_write_reg(i2c0,DRV10987_Address,CONFIG5,0
																								| OTWarmingLimit(0)
																								| CloseLoopStuckLock(0)
																								| OpenLoopStuckLook(0)
																								| NoMotorLock(0)
																								| AbnormalKtLock(0)
																								| AbnormalSpeedLook(0),								
																								0
																								|	SWiLimitThr(0)			
																								| HWiLinitThr(0) 
																								| IPDasHWlLimit(0)  );


		i2c_write_reg(i2c0,DRV10987_Address,CONFIG6,0
																								| SpdCtrlMd(1)
																								| PWMFreq(0)
																								| KtLckThr(0)
																								| AVSIndEn(0)
																								| AVSMMd(0)
																								| IPDRIsMd(0),								
																								0
																								|	CLoopDis(0)			
																								| CIsLpAccel(0) 
																								| DutyCycleLimit(0)  
																								| SlewRate(0)  );


		i2c_write_reg(i2c0,DRV10987_Address,CONFIG7,0
																								| IPDAdvcAg(0)
																								| IPDCurrThr(0)
																								| IPDClk(0),								
																								0
																								| CtrlCoef(4)  
																								| Deadtime(10)  );

		
		i2c_write_reg(i2c0,DRV10987_Address,EEPROM5,0x00,0x06);

		while(i2c_read_reg(i2c0,DRV10987_Address,EEPROM2) != 0x0001);

		i2c_write_reg(i2c0,DRV10987_Address,EEPROM5,0x00,0x02);

		while(i2c_read_reg(i2c0,DRV10987_Address,EEPROM2) != 0x0001);

		i2c_write_reg(i2c0,DRV10987_Address,EECRTL,0x00,0x00);

		systick_delay_ms(5);				//Wait for set up

/***********************************************************************************************************************************************/

		do
		{

			i2c_write_reg(i2c1,DRV10987_Address,EECRTL,0x80,0x00);				//Setting EEPROM Access permission and DISABLE!!!!!!!! the motor

			i2c_write_reg(i2c1,DRV10987_Address,EEPROM1,0x00,0x00);				//clearer EEPROM Access code

			i2c_write_reg(i2c1,DRV10987_Address,EEPROM1,0xC0,0xDE);				//Setting EEPROM Access code

			gpio_init(G0,GPO,0);
// 
//			systick_delay_ms(1);				//Wait for set up 1ms

		}while(i2c_read_reg(i2c1,DRV10987_Address,EEPROM2) != 0x0001);		//Setting EEPROM able to read

			gpio_init(G0,GPO,1);

		i2c_write_reg(i2c1,DRV10987_Address,CONFIG1,0
																								| p5_SpectrumControl_MASK
																								| FG_both_open_and_close
																								| FG_Only_Close
																								| FG_POLES(2),
																								0
																								| CLK_ADJ_SELECT(0)		  //0:FULL 1:HALF
																								| 0x5B );								//Setting to 3.5R


		i2c_write_reg(i2c1,DRV10987_Address,CONFIG2,0
																								| 0x0A,									//Page 24
																								0
																								| CommAdvMode(0)					
																								| 0x02 );									//Page 37
		
		
		i2c_write_reg(i2c1,DRV10987_Address,CONFIG3,0
																								| ISDThr_80ms
																								| BrkCurThrSel(0)
																								| BEMF_HYS(0) 
																								| ISDEn(0) 
																								| RvsDrEn(0)
																								|	RvsDrThr_6P3,								
																								0
																								|	OplCurr_0p4			
																								| OplCurrRt_6
																								| BrkDoneThr_0 );							

		
		i2c_write_reg(i2c1,DRV10987_Address,CONFIG4,0
																								| AccRangeSec(0)
																								| StAccel2(0)
																								| StAccel(1),								
																								0
																								|	Op2ClsThr(1,10)			
																								| AlignTime(6) );

		i2c_write_reg(i2c1,DRV10987_Address,CONFIG5,0
																								| OTWarmingLimit(0)
																								| CloseLoopStuckLock(0)
																								| OpenLoopStuckLook(0)
																								| NoMotorLock(0)
																								| AbnormalKtLock(1)
																								| AbnormalSpeedLook(1),								
																								0
																								|	SWiLimitThr(0)			
																								| HWiLinitThr(0) 
																								| IPDasHWlLimit(0)  );


		i2c_write_reg(i2c1,DRV10987_Address,CONFIG6,0
																								| SpdCtrlMd(1)
																								| PWMFreq(0)
																								| KtLckThr(0)
																								| AVSIndEn(0)
																								| AVSMMd(0)
																								| IPDRIsMd(0),								
																								0
																								|	CLoopDis(0)			
																								| CIsLpAccel(4) 
																								| DutyCycleLimit(0)  
																								| SlewRate(4)  );


		i2c_write_reg(i2c1,DRV10987_Address,CONFIG7,0
																								| IPDAdvcAg(0)
																								| IPDCurrThr(0)
																								| IPDClk(0),								
																								0
																								| CtrlCoef(4)  
																								| Deadtime(10)  );

		
		i2c_write_reg(i2c1,DRV10987_Address,EEPROM5,0x00,0x06);

		while(i2c_read_reg(i2c1,DRV10987_Address,EEPROM2) != 0x0001);

		i2c_write_reg(i2c1,DRV10987_Address,EEPROM5,0x00,0x02);

		while(i2c_read_reg(i2c1,DRV10987_Address,EEPROM2) != 0x0001);

		i2c_write_reg(i2c1,DRV10987_Address,EECRTL,0x00,0x00);

		systick_delay_ms(50);				//Wait for set up

			


Viewing all articles
Browse latest Browse all 13252

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>