What I mean is I generally (but not always!) expect I2C to be able to do this:
[0xa0 0] [0xa1 r r r r]
Set pointer to 0, read 4 bytes starting at 0. This is fairly typical. Instead we are limited to this:
[0xa0 0] [0xa1 r]
The chip is limited to reading a single register, except the PDO profiles, which all 26 bytes can be read at once.
For lots of chips this is also a completely valid I2C access:
[0xa0 0][0xa1 r:4][0xa1 r:5][0xa1 r:2]
The byte after the write address (0xa0) sets the pointer. Then, it auto increments on each read. Here we read 11 bytes ending on byte address 10. Its the partial write command that updates the address pointer, not the start sequence.
Usually! The INA2xx we looked at a while back also had single byte register access. It’s not unheard of, but I am always disappointed when I can’t dump the entire chip and look at all the registers in context.
I don’t think think this chip can do anything source wise. It has a very simplified register set with basically status, profiles, select profile, issue hard reset.
Ugh. You’re right, that’s disappointing, and make the comms much more chatty then they need to be. The auto-incrementing read for the entire readable space is a much better option.
I2C> usbpd status
Source : PD source connected
CC line : CC2
Data role : UFP
De-rating : normal
VBUS voltage: 5040 mV
VBUS current: 72 mA
Requested V : 5000 mV
Requested I : 3000 mA
Temperature : 20 C
Available PDO entries: 7
PDO 1 (SPR Fixed): 5000 mV, 3000-3249 mA
PDO 2 (SPR Fixed): 9000 mV, 3000-3249 mA
PDO 3 (SPR Fixed): 12000 mV, 2500-2749 mA
PDO 4 (SPR Fixed): 15000 mV, 2000-2249 mA
PDO 5 (SPR Fixed): 20000 mV, 1500-1749 mA
PDO 6 (SPR PPS): >=3300 mV to 5900 mV, 3000-3249 mA
PDO 7 (SPR PPS): >=3300 mV to 11000 mV, 3000-3249 mA
The current PD plank prototype does have the same USBPD chip as the picopd you linked.
The adusbcim3 is super interesting because it reads e-markers and does source/sink. That was one of my original goals with the FUSB302B chip version, but the AP33772S gives a lot of features without writing a full USBPD stack.
One small thought. It might be worth labelling the terminal block VBUS IN or VBUS OUT. We went through so many iterations on this, I think it’s out right? This USBPD chip does sink not source? Thanks. Looking forward to seeing the plank in the store.