428|2

1706

帖子

4

TA的资源

纯净的硅(初级)

楼主
 

【DigiKey 评测之ST应用于车窗升降的L99H92直流电机驱动】L99H92 软件驱动与异常分析 [复制链接]

  目前针对于L99H92 的驱动探讨如下:

一、硬件连接:

         

   

 

  软件代码:

#include <SPI.h>

//L99H92 控制口
const int EN_PIN = D2;  //D2
const int DIAGN_PIN = D3;
const int DIR_PIN = D4;
const int MTPWM_PIN = D5;
const int FSINB_PIN = D6;

//CS 片选
const int CS_PIN = D10;

void setup() {
  //SPI.begin();
  SPI.beginTransaction(SPISettings(10000000, MSBFIRST, SPI_MODE0));
  //串口配置
  Serial.begin(115200);
  Serial.println("UART Start");
  // 设置输入和输出方式
  pinMode(CS_PIN,OUTPUT);
  pinMode(EN_PIN,OUTPUT);
  pinMode(DIAGN_PIN,INPUT);
  pinMode(DIR_PIN,OUTPUT);
  pinMode(MTPWM_PIN,OUTPUT);
  pinMode(FSINB_PIN,OUTPUT);
  //设置初始化状态
  digitalWrite(CS_PIN,HIGH); 
  digitalWrite(EN_PIN,LOW);  
  digitalWrite(FSINB_PIN, LOW);
  int Vst = digitalRead(DIAGN_PIN);
  //analogWrite(MTPWM_PIN,100);
   
  //启用L99H992
   digitalWrite(EN_PIN, HIGH);
   digitalWrite(FSINB_PIN, HIGH);
}
void loop() {
        //DIR=0, PWM=1
      	digitalWrite(DIR_PIN,LOW);
		digitalWrite(MTPWM_PIN,HIGH);
      	//INPMODE=0, OUTE=1, AFWE=0,FWS=0;
      	writeRegister(0x00,  0x03, 0x00,0x40 );   
		delay(5000);
}

//Sends a write command to L99H92
void writeRegister(uint8_t chipOP,uint8_t chipAddr, uint8_t Value1, uint8_t Value2) { 
  // take the chip select low to select the device:
  digitalWrite(CS_PIN, LOW);
  SPI.transfer((chipOP<<6) | chipAddr );  
  SPI.transfer(Value1);
  SPI.transfer(Value2);
  // take the chip select high to de-select:
  digitalWrite(CS_PIN, HIGH);
}

//Read from or write to register from the L99h92:
uint16_t readRegister_2Byte(uint8_t chipOP,uint8_t chipAddr) {
  uint16_t result; 
  uint8_t date1, date2;
  uint8_t first = chipOP<<6;
  digitalWrite(CS_PIN, LOW);
  // send the device the register you want to read:
  SPI.transfer(first | chipAddr);
  // send a value of 0 to read the first byte returned:
  date1 = SPI.transfer(0x00);
  date2 = SPI.transfer(0x00);
  // take the chip select high to de-select:
  digitalWrite(CS_PIN, HIGH);
  // return the result:
  result =  (date1<<8) | date2;
  return result;
}

测试硬件:

 

测试波形:

 

操作控制寄存器0x03;

读取状态寄存器GSB;

             有个疑问GSB的寄存器地址是0x3E? 还是其他;

            SDO 的输出,是opcode(2bit,01时候)+Address(6bit)+GSB(8bit)+data2+data1 ? 是这样?

           其他问题正在确认中,

最终结果:

    电机没有反应(电机在12V 其他板子测试正常);

请大家帮忙建议下;

此帖出自汽车电子论坛

最新回复

SDO会输出3个字节数据,包括一个字节的GSB和2个字节的数据 [attach]868371[/attach]     你在写入配置时,SDO已经返回一个GSB数据,对应的值为0x61,对应bit6 bit5 bit0为1。 [attach]868372[/attach]   [attach]868373[/attach]     FS 位表示由于看门狗故障或 FSINB 输入引脚被拉低,请重点检查这几个地方的错误。     详情 回复 发表于 2024-12-6 21:33
点赞 关注

回复
举报

9762

帖子

24

TA的资源

版主

沙发
 

SDO会输出3个字节数据,包括一个字节的GSB和2个字节的数据

 

 

你在写入配置时,SDO已经返回一个GSB数据,对应的值为0x61,对应bit6 bit5 bit0为1。

 

 

 

FS 位表示由于看门狗故障或 FSINB 输入引脚被拉低,请重点检查这几个地方的错误。

 

此帖出自汽车电子论坛

点评

多谢大神,目前在看WDGF 的情况;  详情 回复 发表于 6 天前
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

1706

帖子

4

TA的资源

纯净的硅(初级)

板凳
 
littleshrimp 发表于 2024-12-6 21:33 SDO会输出3个字节数据,包括一个字节的GSB和2个字节的数据     你在写入配置时,SDO已 ...

多谢大神,目前在看WDGF 的情况;

此帖出自汽车电子论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/3 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表