PARTS: 133MHZ-16.2KHZ PROGRAMMABLE OSCILLATOR (DS1077)

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

버스 해적
DS1077 (pin)

SCL.
SCL (8)

SDA.
SDA(7)

AUX
OUT1 (1)

+ 5 volts.
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.

인터페이싱

주소
목적

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 시작 조건 220 I2C WRITE: 0xB0 got ACK: indeed <– got ACK 240 I2C 정지 조건 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.

주소
바이트
등록하다

0x01.
2
10 bit clock divider, n+2 (DIV)

0x02
2
Prescaler, CTRL pin functions. (MUX)

0x0D
1
Address select, EEPROM compose control. (버스)

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 시작 조건 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 정지 조건 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 시작 조건 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 정지 조건 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 시작 조건 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 정지 조건 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 Bus해적은 고주파수 측정을위한 Gigahertz Prescaler를 포함해야합니다. I2C> {0xB0 0x3F} <-write E2 레지스터 마지막으로 EEPROM에서 이러한 설정을 저장하기 위해 E2 레지스터 (0x3F)를 구성 할 수 있습니다. DS1077은 이제 전원 켜기에서 이러한 설정으로 돌아갑니다. 결론 DS1077은 프로그래밍 가능한 발진기와 주파수 분배기를 단일 칩으로 이동하여 복잡한 클럭 소스를 단순화합니다. 유통 업체에서 제공하지는 못한 경우 그러나 Maxim에서 직접 구입할 수 있습니다. 고주파수를 훨씬 잘 관리하는 경우, 133MHz에서 8KHz까지의 10kHz 단계로 DS1085를 검사하십시오. DS1085L은 DigiKey에서 제공되는 3.3Volt, 66MHz 버전입니다.