TEA5767 стерео FM супергетеродин

TEA5767 GNT-100SСборка приёмника задумывалась как источник аудиосигнаа для подмеса к местному инфоканалу. Но перерыв инет не нашёл распиновки на свой модуль FM-приёмника TEA5767 (GNT-100S). Т.е. как бы выводы ну совсем не соответствовали тому  что встретил в инете. Пришлось «вызванивать»… Под катом скетч по управлению им через ардуинку (A4 = SDA, A5 = SCL).

Модуль управляется по протоколу I2C, поэтому подключаем встроенную библиотеку Wire.h. Для того, чтобы установить частоту 91.2 MHz необходимо подать вот такую посылку:

tea5767_config

TEA5767_GNT-100S

#include <Wire.h>
#include <TEA5767Radio.h>

TEA5767Radio radio = TEA5767Radio();

float ff = 91.2;
float fff = 107.8;
float f;
int a = 0;

void setup(){
  Wire.begin();
  pinMode(LED_BUILTIN, OUTPUT);
  pinMode(2, INPUT);
  pinMode(3, INPUT);
  pinMode(4, INPUT);
  f = ff;
  radio.setFrequency(f);
}

void loop(){    
  digitalWrite(LED_BUILTIN, HIGH);
  delay(50);
  digitalWrite(LED_BUILTIN, LOW);
  delay(50);
  if(digitalRead(2)==0){
    f = f + 0.1;
    radio.setFrequency(f);
    delay(100);
  }else if(digitalRead(3)==0){
    if(a>7){
      f = fff;
      radio.setFrequency(f);
      delay(500);
      a=0;
    }else{
      f = ff;
      radio.setFrequency(f);
    }
    a++;
  }else if(digitalRead(4)==0){
    f = f - 0.1;
    radio.setFrequency(f);
    delay(100);
  }

  if(f<87.5){ f = 108; }else if(f>108){
    f = 87.5;
  }
  
}

Часть 2. Порой есть задача настроить приёмник на одну стабильную частоту. Использовать для этого ардуино как-то не по «феншую». И тут можно использовать нашего любимого малыша STC15W201.

TEA5767_STC15W201

#include "reg51.h"
#include "intrins.h"
#include <i2c.h>
#define FREQ 91.2


void main(){
		int i;
	  unsigned long f = (FREQ*1000000+225000) * 4 / 32768;
	  PM_INIT();
		P3 = 0xFF;
    while (1){
			Delay1000ms(); // delay for start
			// init i2c
			SDA = 0; Delay(); 
			SCL = 0; Delay();
			i2c_send_byte(0xC0);
			i2c_send_byte(f >> 8); // High half
			i2c_send_byte(f & 0xFF); // Low half
			i2c_send_byte(0xB0);
			i2c_send_byte(0x10);
			i2c_send_byte(0x00);
                        SCL = 1; // deinit i2c
			
			// wait 5 min
			for(i=0; i<300; i++){
				Delay1000ms();
			}
		}
}

Проект для Keil-а здесь. Файл HEX для частоты 91.2 MHz здесь. Как прошивать STC15 я рассказывал здесь. Кстати, пару лет назад я купил себе фирмовый программатор для STC. Называется U8W. Удобная штуковина.

U8W_programmer Но вернёмся к конструкции. Запрограммированый чип размещаем на обратной стороне модуля приёмника, перевернув его на спину. Откусываем неиспользуемые выводы (1, 3, 5, 6) и запаиваем к контактам. Я снял видео работы устройства. Для детального изучения ставьте на паузу. В последствии чип можно залить эпоклеем.

Запись опубликована в рубрике C++, Программирование, Разное, Телевидение с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий