577|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
点赞 关注

回复
举报

9834

帖子

24

TA的资源

版主

沙发
 

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

 

 

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

 

 

 

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

 

此帖出自汽车电子论坛

点评

多谢大神,目前在看WDGF 的情况;  详情 回复 发表于 2024-12-25 20:19
个人签名虾扯蛋,蛋扯虾,虾扯蛋扯虾
 
 

回复

1706

帖子

4

TA的资源

纯净的硅(初级)

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

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

此帖出自汽车电子论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【有奖直播】2025是德科技数字月-数字新品来助阵
直播时间:3月19日(周三)14:00
直播奖励:小米口红充电宝、倍思充电线、是德科技十周年鼠标垫

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

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

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

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

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