TI engineering, I'm having trouble getting my DRV2667 to operate properly. I make a breakout board with close to the recommended layout, using default components. I've rebuilt several copies of the board with new components on new PCB just be sure. I've spent hours now checking the traces and the solder and verifying connectivity. The major symptom I have is that the board responds over I2C and I can read and write registers. However, at no point do I see anything more than 3.3V on the BST pin, suggesting to me that no voltage is getting generated. Using a scope I have verified that there is no switching going on. I am driving the board from the 3.3 pin of an arduino uno. I have it connected to a ceramic disc speaker. Any help would be appreciated! Layout Back Software I'm using: #include #define DRV2667_ADDR 0x59 void writeRegisterBytes(uint8_t reg, uint8_t val) { uint8_t cmd[2]; cmd[0] = reg; cmd[1] = val; Serial.print( "Sending cmd=" ); Serial.print( (int)reg ); Serial.print( " val=" ); Serial.print( (int)val ); Serial.println(); Wire.beginTransmission(DRV2667_ADDR); Wire.write(reg); Wire.write(val); Wire.endTransmission(); delay(1); uint8_t x ; // use i2c Wire.beginTransmission(DRV2667_ADDR); Wire.write((byte)reg); Wire.endTransmission(); Wire.requestFrom((byte)DRV2667_ADDR, (byte)1); x = Wire.read(); Serial.print("$"); Serial.print(reg, HEX); Serial.print(": 0x"); Serial.println(x, HEX); delay(1); } void setup() { // put your setup code here, to run once: delay(10); Serial.begin(115200); } void loop() { // put your main code here, to run repeatedly: Serial.println( "Sending" ); writeRegisterBytes(0x02, 0x00); //Take device out of standby mode writeRegisterBytes(0x01, 0x07); //Set to analog input + Gain 0-3 (0x04-0x07 25v-100v) writeRegisterBytes(0x02, 0x02); //Set EN_OVERRIDE bit = boost and amplifier active delay(1000); // Serial.println( "Done" ); // // delay( 1000 ); } My output: Sending cmd=2 val=0 $2: 0x0 Sending cmd=1 val=7 $1: 0x7 Sending cmd=2 val=2 $2: 0x2
↧