Всем привет. Дошли руки до этой замечательной микросхемы. Но возникла проблема - не могу считать с неё состояние. Для обмена использую I2C. Не могу понять где загвоздка. Отсылка команды происходит так:
программу управления пишу в CodeVisionAVR... Как отлаживать - ума не приложу. Микросхемы приемника нету в протеусе. Кто нить пробовал работать с si47xx?
оказалось что в начале блока считывания надо подать адрес микросхемы si4735 увеличенный на 1. В моем случае это 0xC7. На это я убил 3 дня
Вообще микросхема хитрая...
Выбор типа интерфейса осуществляется с помощью вывода GPO1. Если в момент подачи питания (вернее сразу после сброса) на этом выводе будет 1 - режим обмена данных будет двухпроводной (i2c), а если в этот момент на ноге GPO1 будет 0 () - 3-х проводной.
При интерфейсе i2c, адрес устройства задается выводом SEN. Если там 1 - адрес 0xC6 - на передачу команд в микросхему и 0хС7 - на чтение состояния, а если там 0 - адрес 0х22 - на запись и 0х23 на чтение.
мой девайс для отладки :
Микроконтроллер atmega8... si4735 спаяна на переходнике из-за того что сильно мелкая... Программа на микроконтроллер пока очень сырая. Просто две кнопки +/- частота. Десятичную точку на пока индикатор не вывожу, потом придумаю как. Сейчас ФМ диапазон и частота настройки 102,5 МГц.
Вроде бы более менее заработало. Сделал "магнитную антенну" намотав 100 витков на край ферритового стержня. Амплитудную модуляцию возле компа и моей светодиодной лампы трудно ловить, все забивает помехами, а ФМ вполне прилично работает.
//запрет автоматического распределения регистров #pragma regalloc- #define t 50 //продолжительность импульса при передачи данных на жк индикатор #define radio_adr 0xC6
unsigned char lcd_buffer[13]={ //массив для вывода на индикатор 1, //будет видно только 10 цифр 2, 3, 4, 5, 6, 7, 8, 9, 0, 11, 12, 0 };
char read_key() { char k; if (key != 100){ if (PINB.0==0){ delay_ms(10); if (PINB.0==0){ k=1; } } if (PINB.1==0){ delay_ms(10); if (PINB.1==0){ k=2; } } if (PINB.2==0){ delay_ms(50); if (PINB.2==0){ k=3; } } } if ((PINB.0==1)&&(PINB.1==1)&&(PINB.2==1)){ k=0; }
return k; }
void lcd_clr(){ for (l=0; l<14; l++){ lcd_buffer[l]=11; //заполняем весь буферный массив нулями } }
if (pos>9) pos=9; for (s=pos; s<pos+5; s++) dot[s]=0; //убираем точки с видимой части экрана if (data>9999){ lcd_buffer[pos] = data/10000; lcd_buffer[pos+1]=(data/1000)%10; lcd_buffer[pos+2]=(data/100)%10; lcd_buffer[pos+3]=(data/10)%10; lcd_buffer[pos+4]=data%10; dot[pos+5-d]=1; //точка на d символов справа } if ((data>999)&&(data<10000)){ lcd_buffer[pos]= data/1000; lcd_buffer[pos+1]=(data/100)%10; lcd_buffer[pos+2]=(data/10)%10; lcd_buffer[pos+3]=data%10; lcd_buffer[pos+4]=11; dot[pos+4-d]=1; } if ((data>99)&&(data<1000)){ lcd_buffer[pos]= data/100; lcd_buffer[pos+1]=(data/10)%10; lcd_buffer[pos+2]=data%10; lcd_buffer[pos+3]=11; lcd_buffer[pos+4]=11; dot[pos+3-d]=1; } if ((data>9)&&(data<100)){ lcd_buffer[pos]=data/10; lcd_buffer[pos+1]=data%10; lcd_buffer[pos+2]=11; lcd_buffer[pos+3]=11; lcd_buffer[pos+4]=11; dot[pos+2-d]=1; } if (data<10){ lcd_buffer[pos]=data%10; } }
void lcd_write(){ //передача на ЖК индикатор NJU6432 //PORTC.0 - DN PORTC.1=0; //CL PORTC.2=1; //CE delay_us(10); seg=1; for (i=1; i<14; i++){ temp_lcd=lcd[lcd_buffer[i-1]]; //заносим код числа во временную переменную if (dot[i]==1)temp_lcd=temp_lcd|0b01000000; //если в массиве точек указан текущий разряд - ставим точку for (n=0; n<8; n++){ PORTC.0=temp_lcd&0b00000001; // выводим в порт крайний бит текущего числа delay_us(10); PORTC.1=1; //вколючаем синхроимпульс delay_us(t); PORTC.1=0; //выключаем синхроимпульс delay_us(10); PORTC.0=0; delay_us(t); temp_lcd=temp_lcd>>1; //сдвиг вправо на 1 разряд seg++; if (seg==53){ //первая служебная тетрада for (p=0; p<4; p++){ PORTC.0=0; delay_us(10); PORTC.1=1; //вколючаем синхроимпульс delay_us(t); PORTC.1=0; //выключаем синхроимпульс delay_us(10); PORTC.0=0; delay_us(t);
Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Возник вопрос по существу... А какую тактовую частоту микроконтроллера лучше выбрать что бы было меньше помех радиоприему. Сейчас работает на частоте 1 МГц и как раз посредине средневолнового диапазона хорошая такая несущая... Есть вариант без сложностей выбрать 1, 2, 4 и 8 МГц. Что посоветуете?
Интересный у Вас проект! Контроллер при приёме сигнала приемником должен быть погружен в сон с отключенным тактовым генератором. Чтобы уменьшить помехи радиоприему в короткое время работы МК следует продумать монтаж. Если соберете на печатке с короткими проводниками, в том числе и к ЖКИ, то будет лучше. Пока на мекетке в длинными проводами от помех приему на АМ избавиться будет сложно.
Карма: 10
Рейтинг сообщений: 127
Зарегистрирован: Пт дек 26, 2014 20:33:38 Сообщений: 593 Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Рейтинг сообщения:0
Посмотрел/послушал Ваш ролик, заметил - у Вас та же байда при перестройке частоты на УКВ (думаю что и на АМ тоже). Видимо что-то надо настроить в камне, чтобы этого не было, ведь в промышленных приемниках, сделанных на этой микросхеме, такого нет. Ковыряюсь с настройками AVC и SOFT_MUTE, пока безрезультатно.
_________________ О технике чего спорить-то, давайте попробуем.
Посмотрел/послушал Ваш ролик, заметил - у Вас та же байда при перестройке частоты на УКВ (думаю что и на АМ тоже). Видимо что-то надо настроить в камне, чтобы этого не было, ведь в промышленных приемниках, сделанных на этой микросхеме, такого нет. Ковыряюсь с настройками AVC и SOFT_MUTE, пока безрезультатно.
Да, на АМ очень сильно затихает в момент перестройки. На FM более менее нормально (станции слышно и во время перестройки). Не знаю как это побороть. На АМ вообще приходится ждать пока "выпиливает" усиление с после установки частоты. У вас ничего не получилось?
Карма: 10
Рейтинг сообщений: 127
Зарегистрирован: Пт дек 26, 2014 20:33:38 Сообщений: 593 Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Рейтинг сообщения:0
Я с весны не возвращался к макетику, но скоро займусь. Промышленные радиоприемники на этой схеме вроде бы не имеют такого свойства, видимо надо играться с настройками АРУ и шумоподавителя.
_________________ О технике чего спорить-то, давайте попробуем.
Извиняюсь, что поднимаю мертвую тему. Приобрел на Али модуль с микросхемой Si4730. При подаче команды Power Up возвращает татус 0х40, то бишь ошибка. Это еще полбеды. При установке частоты в режиме FM не устанавливается бит STCINT в регистре статуса. Если просто читать статус, выдает 0х80, то есть норма. Версию чипа так же читает. Где подвох?
Зарегистрирован: Пт сен 09, 2016 18:27:15 Сообщений: 5
Рейтинг сообщения:0
Странные ныне пошли разработчики . Код писать умеют , а обычные буквари читать не хотят . Совсем читать не хотят . Силабовский чип - это по сути ФАПЧ прямого преобразования . У любого ФАПЧа - будь он цифровой или аналоговый ВСЕГДА будет " хрюк " при перестройке - для этого и нужно блокировать выход приемника . А в режиме АМ нужно еще время , чтобы эту самую АРУ правильно выставить .
Кому не нравятся слова ФАПЧ или даже УКВ - можете смело заМЯУнять на PLL и FM.
Карма: 10
Рейтинг сообщений: 127
Зарегистрирован: Пт дек 26, 2014 20:33:38 Сообщений: 593 Откуда: Самая большая деревня. (По мнению Габриэля Гарсиа Маркеса)
Рейтинг сообщения:0
Т.е. величина Хрюка постоянная и не регулируемая и сделать его менее заметным никак нельзя? И все настройки, предоставляемые разработчиками микросхемы бесполезны в этом деле? Кстати, интересно, как идёт перестройка частоты при малых приращениях - неужели происходит огромное переколебание в контуре ФАПЧ при перестройке частоты скажем с 5000 кГц до 5001 кГц (именно так я шагаю по диапазону). Я считал, что это должен быть достаточно незаметный Хрюк и если придавить АРУ, можно будет добиться приемлемымых результатов, когда перепад уровней будет зависеть только от самого сигнала, а не от действия АРУ. Видимо я был не прав, не понимая сути работы этой микросхемы. Жаль, придётся отказаться от её применения.
_________________ О технике чего спорить-то, давайте попробуем.
si47xx_reset(); cmd[0] = POWER_UP; // The device is being powered up in FM RX mode. cmd[1] = POWER_UP_IN_CTSIEN|POWER_UP_IN_FUNC_FMRX|0x10 ; // The opmode needs to be set to analog mode cmd[2] = POWER_UP_IN_OPMODE_RX_ANALOG; // Powerup the device while(!si47xx_waitForCTS()); i2c_Restart(); i2c_SendByte(0xc6); if(i2c_ReadAcknowledge()) return; i2c_PutString(cmd,3); i2c_Stop(); while(!si47xx_waitForCTS());
// If the calling function would like to have results then read them.
DelayMs(POWERUP_TIME); // wait for si47xx to powerup DelayMs(200); DelayMs(200);
Короче, разобрался, дело было в параметре REFCLK_FREQ, вместо значения ещё раз передавался адрес REFCLK_FREQ. Записал значение по умолчанию, 0x8000, Прерывания появились. Да, команда fmTuneFreq(frequency) это команда 0x20
Силабовский чип - это по сути ФАПЧ прямого преобразования . У любого ФАПЧа - будь он цифровой или аналоговый ВСЕГДА будет " хрюк " при перестройке - для этого и нужно блокировать выход приемника
Чириканье прослушивается тогда, когда неправильно выбраны параметры ФНЧ в петле ФАПЧ. Правильно сконструированный синтезатор издает настолько короткое "чик-чирик", что ничего приглушать не нужно.
У меня вопрос к pooh007 и dadigor. Как ведет себя SI4735 при расстройке на 50-100 килогерц от частоты FM радиостанции, то есть при неточной настройке на частоту? Прослушивается ли громкий скрежет, хрипы, скрипы? Смакетировал я себе DSP приемник на китайской микросхеме схожей с SI4735, уж больной она скрипит когда настраиваешься, аж уши отваливаются. При точной настройке все нормально, а чуть в стороне по частоте жутко верещит.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 29
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения