Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] programming SI5338 I2C

Status
Not open for further replies.

aminpix

Advanced Member level 4
Joined
Sep 30, 2008
Messages
108
Helped
2
Reputation
4
Reaction score
2
Trophy points
1,298
Activity points
2,349
I am trying to program a SI5338 with a FPGA. In the datasheet it is mentioned to program SI5338 through I2C. But it seems the protocol is a bit different than typical I2C. I think after sending SI5338 address (1110000) we dont need to send the address of the memory.
Anybody has worked with SI5338 to help me about reading and writing to SI5338?
 

Hi

It is not unusual to send a register address after the device address.

Did you try it?
Why do you bother?

Klaus
 

In usual I2C, after sending address of the slave device we have to send the address of the memory and finally the data. but it looks here we have to send address of the slave device, then the data.
Am I right ?
 

I've never used this device, but in the datasheet I am looking at, in Section 5, it shows that you need to send the slave address, then the register address, then the data, when you do an I2C Write.

r.b.
 
I seems there are two methods of programming burst method and single byte. Almost in all sample codes I have seen, the programmers were using burst method. I more prefer single byte method, because it is more straight forward. but I wasn't successful to implement that.
 

Reading or writing a single bytes is the same thing as transmitting one byte in burst mode. If you don't manage to read or write a single byte, you are doing something basically wrong. Perhaps you should show your code.
 

It looks in the burst transmitting, we do not send the address of the memory, only we transmit the si5338 address and then data. Am I right?
 

Hi,

in either case you have to transmit register address first! Look into datasheet, chapter 5 Fig23 and Fig24.

The IC has an address auto increment feature. If you want to read/write two or more data bytes of increasing address you don´t need to transmit address for the folowing data.

***
This is very common in I2C communication.
For sure you are free to access every byte in single byte mode.

If you need further assistance, please refer to the exact item in the datasheet.

Klaus
 
It looks in the burst transmitting, we do not send the address of the memory, only we transmit the si5338 address and then data. Am I right?
Are you talking about read or write operation?

In write operation, SI5338 is always expecting a register address after the device address. Then one (single byte write) or many (burst write) data items.

In read operation, you are always using the register address that has been set by the previous write operation.

The addressing is by the way quite similar to the I2C RAM you mentioned in your inital post, also regarding address autoincrement.
 

I have tried to read a single byte from SI5338, but after sending the device address and read/write bit (1110000 + 1) the SI5338 send me back ACK and then start sending some bit values.
 

Hi,

Your last post isn't very descriptive.
You don't say nothing about register address. It has to be set first..

Show us the complete sequence.

What did you expect?

Klaus
 

Sorry for confusing. I found writing in SI5338 is exactly like typical I2C but reading is a bit different. Reading should be done in two steps, one writing the address and then in the next step, reading the data.
Thanks everyone. I was on this project for almost a week.
 

I found writing in SI5338 is exactly like typical I2C but reading is a bit different. Reading should be done in two steps, one writing the address and then in the next step, reading the data.
Don't think it's different. It's the procedure used by any I2C device that involves more than one read register. Just the same as with I2C RAM, as previously mentioned.
 
Thanks every one for the helps. I could start to read/write single bytes from/to the SI5338.

Now I can read and write to SI5338 from the address of 0 to 255; but SI5338 address memory is started from 0 to 350. Address register width in I2C (for single byte) is 8 bits, while for 350 memory address we need 9 bits address.
anybody knows how can I program SI5338 memory bytes for addresses greater than 255?
 

You should obtain and read the SI5338 Reference Manual. Section 10.4 makes mention of a PAGEBIT field in one of the registers which is used to access registers with addresses greater than 255.

r.b.
 
Have you looked at this document and specifically page 144?
**broken link removed**
 
Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top