From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerry Van Baren Date: Tue, 01 Sep 2009 14:22:13 -0400 Subject: [U-Boot] I2c imd/imw for a digital potentiometer? In-Reply-To: <3d1967ab0909011050r6bb01a2ey18345615443e2d29@mail.gmail.com> References: <3d1967ab0909011050r6bb01a2ey18345615443e2d29@mail.gmail.com> Message-ID: <4A9D6655.4060503@ge.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Brian Hutchinson wrote: > Hi all, > > I'm a little stumped as to how to write to a EEPot with the imw command. > > The EEPot is a Maxim 5434 and has an address of 0x28. To write to its > volatile or non-volatile register ... a command byte is given. > > Writing 5 bits of data (it is a 32 tap pot so that is where the 5 bits come > from) to move the wiper goes something like this: > > Start, 0x28, Ack, Cmd byte, Ack, Data byte, Ack, Stop > > Cmd byte is 0x11 to write to volatile reg. 0x21 to write to non-volatile > reg. Looks pretty standard if you map "cmd byte" to "register". > The EEPROM really doesn't have addresses/offsets so I tried: > > imw 28 11 80 1 What is the trailing '1' here? Or is the '80' bogus? I would expect this to work. The i2c command defaults to a one byte register offset. To write a 0x80 byte to register (aka command) 0x11, you want to do this: imw 28 11.1 80 which should be the same as this: imw 28 11 80 > imw.w 28 0.0 1180 That seems like it should work also, although the '11' is more logically a register offset. > ... but it doesn't appear to play well with my device. Trivia: the old imw (imr, etc) commands are deprecated, you should use the new "i2c " versions. [snip] > Regards, > > Brian Good luck, gvb