Страница 1 из 1

Приёмник с PLL или мучения с LV23100

Добавлено: Пт май 10, 2013 22:15:33
*Trigger*
История: попал ко мне в руки (шаловливые и растущие из нужного места) модуль тюнера AXX7170. Мне тут помогли опознать микросхему ALP303, это оказалась LV23100. Даташит тут: http://pdf1.alldatasheet.com/datasheet- ... 3100V.html
Захотелось сделать приёмник с четырьмя диапазонами: FM, КВ 41м, ДВ, СВ. Ну я и сделал. Написал прошивку для МК, зашил - и ничего. Сначала решил отладить диапазон FM. Дело в том, что при установке бита DVS (см. даташит) в 1 приёмник не переключается на вход FMIN. Определил это так: при подтыкании антенны на вход AM появляется шум, на вход FM - тишина.
Как я понял, биты P0-P15 задают коэффициент деления PLL.
DVC, SNS - управление входом.
R0-R3 - опорная частота (шаг перестройки).
BO1, BO2 - управление выходными портами
IFSW - режим MUTE
BDSW - выбор AM/FM
STSW - включение стерео
SDC - понятия не имею, прошу разъяснить.
DOC0-DOC2 - управление ногой DO
UL0, UL1 - х. з. что значит.
Впрочем, как и DZ и DLC.
TEST - тестирование, трогать не надо.
Что выделил - непонятно, объясните, пожалуйста.
Так же не знаю, правильно ли я делаю передачу данных.
Передаю так: в даташите есть схемы с названиями битов, я начинаю передавать слева направо. Что IN1, что IN2.
Фрагмент кода:
Спойлер

Код: Выделить всё

void tuner_write(unsigned int divider,unsigned char control){
tmp=0b00101000;
for(i=0;i<8;i++){
DO=(tmp&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
CE=1;
delay_us(2);
for(i=0;i<16;i++){
DO=(divider&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
for(i=0;i<8;i++){
DO=(control&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
CE=0;
};
void tuner_init(unsigned char data0,unsigned char data1,unsigned char data2){
tmp=0b00101001;
for(i=0;i<8;i++){
DO=(tmp&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
CE=1;
delay_us(2);
for(i=0;i<8;i++){
DO=(data0&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
for(i=0;i<8;i++){
DO=(data1&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
for(i=0;i<8;i++){
DO=(data2&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
CE=0;
};

unsigned char tuner_read(void){
unsigned char data_out=0;
tmp=0b00101010;
for(i=0;i<8;i++){
DO=(tmp&(1<<i)>>i);
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
CE=1;
delay_us(2);
for(i=0;i<24;i++){
if(i<8) data_out|=(1<<i)&DI;
delay_us(2);
CLK=1;
delay_us(2);
CLK=0;
delay_us(2);
}
CE=0;
return data_out;
}
Тут tuner_write - запись в режиме IN1, а tuner_init - в режиме IN2. tuner_read - чтение, его пока не использовал.
Очень прошу описать все биты.

Re: Приёмник с PLL или мучения с LV23100

Добавлено: Сб май 11, 2013 10:11:55
radiokot__
Может не совсем аналог?

Re: Приёмник с PLL или мучения с LV23100

Добавлено: Сб май 11, 2013 17:01:17
*Trigger*
Спасибо за ответ! Нет, 99%, что аналог. Подключение совпадает (входы, выходы, питание, данные) да и по корпусу и ногам...

Re: Приёмник с PLL или мучения с LV23100

Добавлено: Сб май 11, 2013 20:47:39
*Trigger*
1% сработал. Четвёртая нога подключена к земле, а третья вообще простаивает свободная. Не знаю, что теперь делать.

Re: Приёмник с PLL или мучения с LV23100

Добавлено: Вс май 12, 2013 00:56:31
radiokot__
Не знаю, что теперь делать.


Видимо искать родной даташит.

Re: Приёмник с PLL или мучения с LV23100

Добавлено: Вс май 12, 2013 07:43:49
*Trigger*
На что и где?