ts-7000
[Top] [All Lists]

Re: [ts-7000] Re: I2C interface on TS-7500 [1 Attachment]

To:
Subject: Re: [ts-7000] Re: I2C interface on TS-7500 [1 Attachment]
From: Jonatan Olofsson <>
Date: Wed, 26 Jan 2011 21:38:43 +0100
[Attachment(s) from Jonatan Olofsson included below]

Mostly for future reference,

After a considerable amount of research and grey hairs, I finally found the issue with the I2C on the TS-7500: there is none.
Or rather, it's broken, and apparently admittedly so. I got myself a logic analyzer to analyze the signals, and discovered that the Cavium processor does in fact send illegal bus commands when the receiver demands clock stretching (keywords: cavium i2c broken). 

After a month or so of mail conversations, it appears that this is a known issue at Cavium networks, but that the processor is too old to care about. So no luck there. TS, being very supportive as opposed to Cavium, suggested modifying the opencore SPI interface for I2C. While I may not get around to it myself, I noticed that there actually is some opencore code on this already at http://opencores.org/project,i2c

So if you're trying to get I2C working on the TS-7500 and require that clock-stretching is supported, I unfortunately must tell you that you cannot use the ordinary processor interface; you have to either use the FPGA or an external device (which I'm currently leaning towards, since I still need it in my case) for the I2C communication.

Best regards,
Jonatan Olofsson

On Thu, Dec 23, 2010 at 19:24, Jim Jackson <> wrote:
 



On Thu, 23 Dec 2010, Jonatan Olofsson wrote:

> It seems very few people has ever used the I2C on the TS-7500, so the
> documentation is very sparse. I'm determined to write a better one to
> publish once I've successfully figured it out, but as of now, i would need a
> pointer or two.
>
> What I'm trying to accomplish is reading data from a Wii controller to the
> TS. I know the controller works, but all I can seem to get out of it is a
> series of ones (0xFFFFFFFF), wherever i read from or write to. At first i
> thought the initialization was wrong, but after triple-checking everything,
> in that case it must be because i misunderstand the way it sends data.
>
> From what I gather, the data in the TWI_WR_DAT register is sent LSB first.
> Thus, to send the sequence "start - 0xA6 - 0xFE - 0x05 - stop", I should
> write 0x53 to the slave address register (=0xA6 in transferred bytes), then
> 0x05FE to the write data register, and lastly enable the bit to start the
> transmission.

Can't help with the ts7500 and hardware i2c, sorry. But I did get i2c
running on a ts7260, using the linux 2.4 i2c infrastructure with
a kernel bit banging module driving a couple of pins on the dio1 interface.

A snip from a previous post here I made...

This kernel module works with the standard kernel i2c framework so
supporting a standard interface to user programs.

I used the stuff from this webpage... I then wrote a program to use the kernel interface to the i2c device to
get data.

All this was done with the standard kernel Linux2.4.26-ts11 supplied by
Technologics with the ts7260 board. I had to compile all the standard i2c
modules as well as they are not supplied with the their kernel.


> So my first question is, am I getting these basic things right? It would be
> really nice to hear from someone who successfully implemented something more
> than that i2ctemp example, which really isn't very helpful..
>
> Best regards and Happy Holidays!
> Jonatan Olofsson
>
> On Thu, Dec 16, 2010 at 21:13, jonatan_olofsson
> <jonatan.olofsson%40gmail.com>wrote:
>
> >
> >
> > I'm still trying to figure out a few things about I2C communication.. Long
> > story short, i can't get it to work.
> >
> > First off, does anyone know what actually happens when data is read/sent
> > through the registers? What acks/nacks are sent?
> > From what i gathered from taking my TS-7500 to a logic analyzer today in
> > school, it sends start/stop conditions (and it appears to send data..)
> >
> > Part of why i'm asking is, when receiving or sending data, i read/write
> > from/to 32 byte registers. The device i need to interface sends data a 6
> > byte format, so i would need to be able to read that, and i'm not quite sure
> > what happens if the TS sends stop conditions after just four bytes..
> >
> > I really can't find any documentation on this.. I have the cavium datasheet
> > with some register addresses, but still this says nothing of what actually
> > happens on the bus, or how i can actually use the I2C interface..
> >
> > I would be tremendously grateful for hints on this, or documentation. Or
> > code, for that matter.
> >
> > Best regards,
> > Jonatan Olofsson
> >
> >
> > --- In ts-7000%40yahoogroups.com <ts-7000%40yahoogroups.com>, "Kris"

> > <> wrote:
> > >
> > > The i2ctemp.c example on our FTP site (
> > ftp://ftp.embeddedarm.com/ts-arm-sbc/ts-7500-linux/samples/i2ctemp.c) will
> > not work on the TS-7500 as the temp sensor on the TS-752 is SPI. It is
> > however a generic example of using the I2C hardware in the Cavium CPU. We
> > attempted to use the Linux kernel interface to I2C however it will not even
> > communicate correctly with our I2C temp sensor.
> > >
> > > This sample code is going to be the most efficient way of interfacing
> > with I2C unless you want to bit-bang the data out of DIOs which will be much
> > slower since you have to go through the SBUS to access the DIO pins.
> > >
> > > -Kris Bahnsen
> > > Technologic Systems
> > >
> > >
> > > --- In ts-7000%40yahoogroups.com <ts-7000%40yahoogroups.com>,

> > "jonatan_olofsson" <jonatan.olofsson@> wrote:
> > > >
> > > > Hi,
> > > >
> > > > First of all, thanks for the interesting discussions going on on this
> > forum.
> > > >
> > > > I'm trying to get the I2C interface working on my TS-7500. There is a
> > simple example available on the TS ftp, which unfortunately seems a bit
> > (way) too simple. So my question is, is there anyone who has written code
> > for using the TWI interface, or do i have to write my own implementation?
> > > >
> > > > Anyone got I2C working already who can give any pointers or hints?
> > > >
> > > > Best regards,
> > > > Jonatan Olofsson
> > > >
> > >
> >
> >
> >
>



Attachment(s) from Jonatan Olofsson

1 of 1 File(s)


__._,_.___


Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: =Email Delivery: Digest | m("yahoogroups.com?subject","ts-7000-fullfeatured");=Change Delivery Format: Fully Featured">Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | =Unsubscribe

__,_._,___
<Prev in Thread] Current Thread [Next in Thread>
  • Re: [ts-7000] Re: I2C interface on TS-7500 [1 Attachment], Jonatan Olofsson <=
Admin

Disclaimer: Neither Andrew Taylor nor the University of NSW School of Computer and Engineering take any responsibility for the contents of this archive. It is purely a compilation of material sent by many people to the birding-aus mailing list. It has not been checked for accuracy nor its content verified in any way. If you wish to get material removed from the archive or have other queries about the archive e-mail Andrew Taylor at this address: andrewt@cse.unsw.EDU.AU