The DS1077 is a 5volt, 133MHz to 16kHz programmable clock source. The interior frequency divider is configured over a easy I2C interface, as well as the chip needs no outside parts. Not poor for under $2. We utilized the Bus Pirate to test this chip before utilizing it in a project. get the datasheet (PDF) as well as comply with along.
DS1077, $1.69 direct from Maxim + $10 shipping.
This chip isn’t offered at any type of major distributors yet, however Maxim has them for under $2/each with a flat $10 shipping charge. This is an 8pin SOIC surface install chip, so we made a little breakout board for testing.
Test circuit
Pin connections
Bus Pirate
DS1077 (pin)
SCL
SCL (8)
SDA
SDA(7)
AUX
OUT1 (1)
+5volts
Vcc (3)
GND
GND, CTRL (4,5,6)
We powered the DS1077 from the Bus Pirate’s 5volt power supply. two resistors, R1 as well as R2, pull-up the I2C bus to 5volts when it’s not in use. Capacitor C1 is 0.01uF as well as C2 is 0.1uF, as suggested by the datasheet. manage pins offer some extra functions, however we bypassed them to ground during our test. Output1 is the main clock signal pin.
Interfacing
Adresse
Hensikt
0b10110000
Default base address (0xB0)
0xB0
Write address
0xB1
Read address
We put the Bus Pirate into I2C mode (M, options: I2C, 100kHz). The outside pull-up resistors hold the bus at 5volts, so it’s essential to leave the on-board 3.3volt pull-up resistors off (default).
I2C>{0b10110000} <– DS1077 compose address 210 i2c begynner tilstand 220 I2C WRITE: 0xB0 got ACK: indeed <– got ACK 240 i2c stopp tilstand I2c>
First, we broadcast the DS1077’s address as well as see if it acknowledges. The address of the DS1077 is 1011, plus three programmable bits (000 by default), as well as the checked out (1) or compose (0) bit. We got an ACK, so we understand that the circuit is working as well as our connections are good.
Adresse
Bytes
Registrere
0x01
2
10 bit clock divider, n+2 (DIV)
0x02
2
Prescaler, CTRL pin functions. (MUX)
0x0D
1
Address select, EEPROM compose control. (BUSS)
0x3F
0
Save settings to EEPROM (E2)
The DS1077 is managed by composing values to the places shown in the table.
I2C>{0xb0 0x0d 0b00001000} , <–write to BUS register 210 i2c begynner tilstand 220 I2C WRITE: 0xB0 got ACK: indeed <–DS1077 compose address 220 I2C WRITE: 0x0D got ACK: indeed <– BUS register 220 I2C WRITE: 0x08 got ACK: indeed <– BUS register setting 240 i2c stopp tilstand I2c>
By default, the DS1077 saves all modifications to the EEPROM. We don’t requirement this during testing, so we disable it by setting bit 3 (0b1000) of the BUS register (0x0d). The very first four bits should be left as 0, the last three bits choose the address to fit several DS1077s on the exact same I2C bus. See datasheet page 7.
I2C>{0xb0 0x02 0b00011000 0b00000000} <–set the 16bit MUX value 210 i2c begynner tilstand 220 I2C WRITE: 0xB0 got ACK: indeed <–DS1077 compose address 220 I2C WRITE: 0x02 got ACK: indeed <–MUX register 220 I2C WRITE: 0x18 got ACK: indeed <–data byte 1 220 I2C WRITE: 0x00 got ACK: indeed <–data byte 2 240 i2c stopp tilstand I2c>
The MUX register controls the prescalers, CTRL pin functions, as well as frequency divider. We disable the prescaler as well as CTRL pins, as well as allow the 10bit frequency divider. The MUX register is explained on page 5 of the datasheet.
Specific frequencies are produced by dividing the 133MHz recommendation frequency with the prescalers as well as a 10bit (1025 level) programmable divider. The clock is split by the amount specified in the DIV register, plus two. When DIV=0, the output is 133MHz/2=66MHz.
This plan provides the very best frequency resolution in low ranges, as well as no steps between 133MHz as well as 66MHz.
I2C>{0xb0 1 0b11111111 0b11000000} <–DIV=1025 210 i2c begynner tilstand 220 I2C WRITE: 0xB0 got ACK: indeed <–DS1077 compose address 220 I2C WRITE: 0x01 got ACK: indeed <– DIV register 220 I2C WRITE: 0xFF got ACK: indeed <– bits 9:2 220 I2C WRITE: 0xC0 got ACK: indeed <– bits 1:0 240 i2c stopp tilstand I2C>f <–do a frequency count 9xx FREQ count ON AUX: 16128Hz (16kHz) <– DS1077 frequency I2c>
We set all the bits in the DIV register to 1 for maximum frequency division. ‘F’ steps the frequency on the AUX pin, which is linked to the DS1077 clock output. With DIV=1025, the frequency is about 16kHz.
I2C>{0xb0 1 0 0} <– DIV=0, 133MHz divide by 2 ... 9xx FREQ count ON AUX: 0Hz <–66MHz, as well quick to count ————- I2C>{0xb0 1 0 0b10000000} <– DIV=2 ... 9xx FREQ count ON AUX: 3339696Hz (33MHz) <–133MHz/4 ————- I2C>{0xb0 1 0b00000001 0b00000000} <–DIV=4 ... 9xx FREQ count ON AUX: 22192384Hz (22MHz) <–133MHz/6 We can play with the divider as well as produce a variety of frequencies. The output is always equal to the recommendation frequency (133MHz) split by DIV+2. The Bus Pirate’s input pin is only capable of measuring about 50MHz, so the greatest speeds don’t register. A future version of the BusPirat burde inkludere en gigahertz prescaler for høyfrekvent måling. I2c> {0xb0 0x3f} <-write e2 register Til slutt kan vi komponere E2-registeret (0x3F) for å lagre denne innstillingen i EEPROM. DS1077 vil nå gå tilbake til disse innstillingene ved oppstart. Konklusjon DS1077 forenkler komplekse klokkekilder ved å flytte en programmerbar oscillator samt frekvensdeler i en enkeltbrikke. Det blir ikke tilbudt fra distributører, men du kan kjøpe den direkte fra Maxim. Hvis du trenger mye bedre å håndtere høye frekvenser, må du kontrollere DS1085 med 10kHz trinn fra 133MHz til 8kHz. DS1085L er en 3.3volt, 66MHz-versjonen som tilbys på Digikey.