На 20 MHz ? Если и будет, то надежность сильно под вопросом. Лучше все же соблюдать требования производителя (как по частоте, так и по уровням).
На 20 MHz ? Если и будет, то надежность сильно под вопросом. Лучше все же соблюдать требования производителя (как по частоте, так и по уровням).
Почему на 20 ? Ну на 20 не пробовал, 16 и 8 нормально. По мне это как то нормальней, чем питать si5351 повышенным.
В упомянутом трансивере qcx - тактовая 20 MHz. По норме при трехвольтовом питании тактовая не должна превышать 8-10 MHz (в зависимости от конкретного типа контроллера, может и 10 MHz при 2.7V). Если больше - питание должно быть от 4.5V. Весьма вероятно, что работоспособность сохранится и при повышенной тактовой, но это выход за спецификации. Как, разумеется, и питание SI5351 повышенным напряжением (но до 3.6 для нее будет вполне нормой). Уровни на I2C определяются тем, куда подключены подтягивающие резисторы, но есть и ограничение на минимальный уровень "1" (0.7 от питания, для AVR), что при пятивольтовом питании больше, чем типичные 3.3 для низковольтной периферии. Транслятор I2C на паре полевиков проблему снимает, и этот вариант рекомендован основоположником I2C, Philips/NXP.
А подскажите библиотеки для avr, я нашел одну, но дажее ее фрагмент по инициализации i2c заставляет avrstudio4, которой я пользуюсь, глючить - она не может выполнить Build проект, зависает. вот фрагмент, там какие-то конструкции, которыми я не пользовался, вот эта uint8_t i2c_status(void) без void вначале. Что это?
/*i2c*/
#include <util/twi.h>
#include <avr/power.h>
#include <avr/sfr_defs.h>
#include "i2c.h"
void i2c_init(void)
{
power_twi_enable();
//set SCL to ~100 kHz for 8 MHz CPU clock
TWSR = 0; /* Prescale /1 */
TWBR = 0x25;
//enable I2C
TWCR = _BV(TWEN);}
void i2c_start(void)
{
TWCR = _BV(TWINT) | _BV(TWSTA) | _BV(TWEN);
while (!(TWCR & _BV(TWINT)));}
void i2c_stop(void)
{TWCR = _BV(TWINT) | _BV(TWSTO) | _BV(TWEN);}
void i2c_write(uint8_t data)
{
TWDR = data;
TWCR = _BV(TWINT) | _BV(TWEN);
while (!(TWCR & _BV(TWINT)));}
uint8_t i2c_read_ack(void)
{
TWCR = _BV(TWINT) | _BV(TWEN) | _BV(TWEA);
while (!(TWCR & _BV(TWINT)));
return TWDR;}
uint8_t i2c_read_nack(void)
{
TWCR = _BV(TWINT) | _BV(TWEN);
while (!(TWCR & _BV(TWINT)));
return TWDR;}
uint8_t i2c_status(void)
{ return TW_STATUS;}
/*i2c end*/
Нашел библиотеку, немного исправил ее - студия требует чтобы все переменные были объявлены вначале, вопрос возник такой - использую кварц 27 мгц и после начала работы генерация на частоте наблюдается, а требуемой частоты на выходе нет, что это означает? Инициализация Si5351 прошла правильно, если опорник заработал, или он включается при подаче питания или там наличия свободной линии i2c?
Частота меняется если менять ? При инициализации указывается какой частоты опорник ?
Что означает- неизвестно. Если сами программируете синтезатор- то включите режим bypass для одного из выходов- в этом режиме частота кварца на прямую идет на выход минуя синтезатор. Так можно проверить что синтезатор понимает команды.
После включения питания поведение синтезатора зависит от его предистории. Микросхема содержит OTP EEPROM которая могла быть прописана на заводе какими то установками режима синтезатора. А могла остаться пустая. Память эта однократная, переписать нельзя.
Спасибо от paguo-76M2fet
Нет, частота не меняется, при инициализации частота опорника указывается, библиотека вот отсюда https://github.com/NT7S/Si5351
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)