Important changes to forums and questions
All forums and questions are now archived. To start a new conversation or read the latest updates go to forums.mbed.com.
7 years ago.
Interfacing with MAX14750 on MAX32625PICO board
Hi,
The schematic (Figure 4 in MAX32625PICO Application Platform) shows that P3_4 and P3_5 of the MAX32625 on the pico board is attached to the MAX14750 power management IC. The pins on either end are I2C pins, and the 14750 datasheet shows that I2C is available on those pins. The board "Evaluates: MAX32625, MAX14750" so I2C communication with the 14750 is probably possible. There is no opportunity to add pullups to the board.
The schematic shows no pullup resistors, however the MAX32625 user guide I2C section (AN6350 section 7.2.1) states " External resistors (RP) are recommended to pull the lines to a logic-high state; internal pullups can also be used to start I²C buses with low capacitance". Unfortunately 7.2 has no further information on enabling pullups with the I2C peripheral.
I've tried using the pin_mode call to set PullUp on the pins (from pinmap.h) with no effect.
I've tried both 1.8 and vddIOH modes on the pins (https://developer.mbed.org/users/switches/code/max32625pico/): MAX32625PICO pico(MAX32625PICO::IOH_3V3, MAX32625PICO::VIO_1V8, MAX32625PICO::VIO_1V8); pico.vddioh(I2C1_SDA, MAX32625PICO::VIO_IOH); pico.vddioh(I2C1_SCL, MAX32625PICO::VIO_IOH);
Sample code: void findPmic() { uint8_t txbuf[1]; txbuf[0] = 0x00; pin_mode(I2C1_SDA, PullUp); pin_mode(I2C1_SCL, PullUp); I2C pmicI2c(I2C1_SDA, I2C1_SCL); pmicI2c.frequency(100000); for (uint8_t addr = 0; addr < 254; addr += 2) { if (pmicI2c.write(addr, (char*)&txbuf, 1) < 0) { serial.printf("%02X: found MAX14750\r\n", addr); } else { serial.printf("%02X ", addr); } pmicI2c.stop(); } serial.printf("\r\n"); }
To provide a little more context:
Mbed platform page: https://os.mbed.com/platforms/MAX32625PICO/
Max32625pico datasheet and schematic: https://datasheets.maximintegrated.com/en/ds/MAX32625PICO.pdf
Max14750 datasheet: https://datasheets.maximintegrated.com/en/ds/MAX14720-MAX14750.pdf
Max32625 user guide: https://pdfserv.maximintegrated.com/en/an/AN6350.pdf
And the code that I have above:
I've created a solution using the weak internal pullups since the GPIO pullups didn't seem to help: https://os.mbed.com/users/seanburford/code/i2c_pullup/file/a6d2db32f84e/main.cpp/
posted by Sean Burford 28 Nov 2017