ESP32 Radio spielt manchmal

OP #5570742
Lesenswert?

Ich habe mir ein TEA5767 Radiomodul gekauft 
(https://www.amazon.de/Thingnovation-Tea5767-Programable-Potencia-m%C3%B3dulo/dp/B01FW24WXG/ref=sr_1_8?ie=UTF8&qid=1538141946&sr=8-8&keywords=tea5767).

Ich habe dieses mit einem ESP32 
(https://www.amazon.de/AZDelivery-NodeMCU-Development-Nachfolgermodell-ESP8266/dp/B071P98VTG/ref=sr_1_1_sspa?ie=UTF8&qid=1538142122&sr=8-1-spons&keywords=esp32&psc=1) 
verbunden:

TEA5767---------ESP32

GND-------------GND
VCC-------------3.3V
SDA-------------PIN 21
SCL-------------PIN 22
BUSMODE---------GND



ANTENNE---------HAUSANTENNE
L---------------VERSTÄRKER
R---------------VERSTÄRKER
GND-------------VERSTÄRKER

R/W-------------N.C.
MPXO------------N.C.


Ich habe mehrere Bibliotheken getestet:

https://github.com/mathertel/Radio
https://github.com/andykarpov/TEA5767
https://github.com/big12boy/TEA5767
https://github.com/mroger/TEA5767

Bei allen habe ich das Problem, dass das Radio nicht vernünftig spielt.
Wenn ich einen Testsketch mit der Arduino ide 1.8.6 auf den ESP32 
hochlade, funktioniert er einmal
für ca. 10 Sekunden.
Dann hört das Radio auf zu spielen und rauscht nur noch.
Wenn ich dann den Strom aus und dann wieder einschalte, kommt kein Ton 
(auch kein Rauschen) aus dem Verstärker (am Verstärker liegt es nicht; 
Andere Audioqwellen gehen). Wenn ich das Radio eine Stunde aus lasse, 
geht es wieder für 10 Sekunden.

Meine Lötstellen Habe ich schon kontrolliert.
#5571348
Lesenswert?

Hallo,

ok, 2,2k klingt gut. Viel fällt mir gerade nicht mehr ein. Ich hatte 
bisher am ESP32 am I2C nur mal Display, die liefen aber ohne Probleme.

Ich habe gerade versucht, herauszufinden, ob I2C am ESP32 auch mit 
100kHz gestartet wird, falls nicht schon drin pack mal ein
Wire.setClock(100000);
rein.

Ich hatte hier nur mal ein RDA5807 Modul an einem ATTiny als 
Puppenstubenradio, da war die Initialisierung im Beipiel im Netz 
fehlerhft und er entwicklete auch ein ziemliches Eigenleben bis es ging.

Das er den Sender verliert könnte daran liegen, daß er vom Takt an der 
Grenze der PLL liegt und die ausrastet. Warum er dann nach PowerOn nicht 
mehr startet? Keine Ahnung, vielleicht initialisiert der Treiber den 
Chip doch nicht 100% richtig.

Oder das Modul ist defekt...

Wenn Du einen AVR zur Hand hast, häng ihn doch mal daran.

Gruß aus Berlin
Michael
OP #5571559
Lesenswert?

Du hattest recht.
Es ist besser geworden, als ich selber die Ansteuerung geschriben habe.
Leider funktioniert mein Code auch nicht komplett richtig. wenn ich die 
Frequenz auf 106,70MHz einstelle, empfange ich eien Sender, der Normal 
auf 106.2MHz liegt.
Das ist die funktion, die ich zum Einstellen benutze:
1
 Serial.begin(115200);
2
 Wire.begin(21, 22, 100000);
3

4

5
unsigned int frequencyB = 4 * (106.70* 1000000 - 225000) / 32768; 
6
byte frequencyH = frequencyB >> 8;
7
byte frequencyL = frequencyB & 0XFF;
8
Wire.beginTransmission(_address); 
9
Wire.write(frequencyH);
10
Wire.write(frequencyL);
11
Wire.write(0xB0);
12
Wire.write(0x10);
13
Wire.write(0x00);
14
Serial.println(Wire.endTransmission());
15
delay(100);

Jetzt kommt nach dem Neustarten der Sender wider.
#5571590
Lesenswert?

Hallo,

hmmm, ich biete
  unsigned int frequencyB = 4 * (newF * 10000L + FILTER) / QUARTZ;
also + 225000 statt -

Frequenz war hier in kHz übergeben, deshalb nur * 10000
Könnte Deine rund 500kHz Ablage erklären.

https://github.com/mathertel/Radio

Die hatte ich damal für den RDA5807, da ist der TEA5767 auch drin.
Ist aber wie oben schon erwähnt auch nicht unbedingt fehlerfrei...

Gruß aus Berlin
Michael
OP #5571614
Lesenswert?

Flo S. schrieb:
> Du hattest recht.
> Es ist besser geworden, als ich selber die Ansteuerung geschriben habe.
> Leider funktioniert mein Code auch nicht komplett richtig. wenn ich die
> Frequenz auf 106,70MHz einstelle, empfange ich eien Sender, der Normal
> auf 106.2MHz liegt.
> Das ist die funktion, die ich zum Einstellen benutze:
>
>  Serial.begin(115200);
>  Wire.begin(21, 22, 100000);
>
> unsigned int frequencyB = 4 * (106.70* 1000000 - 225000) / 32768;
> byte frequencyH = frequencyB >> 8;
> byte frequencyL = frequencyB & 0XFF;
> Wire.beginTransmission(_address);
> Wire.write(frequencyH);
> Wire.write(frequencyL);
> Wire.write(0xB0);
> Wire.write(0x10);
> Wire.write(0x00);
> Serial.println(Wire.endTransmission());
> delay(100);
>
> Jetzt kommt nach dem Neustarten der Sender wider.


?
Das war wohl nur Zufall.
Jetztgeht es wieder nicht...
#5571616
Lesenswert?

Hallo,

Flo S. schrieb:
> Jetzt spielen beide Sender gleichzeitig und ziemlich verrauscht.

kann eben jeder seins hören. ;)
Naja, war ja nur ein Schnellschuß aus der Radio-Lib.

ok, das hängt offenbar von Bit 4 im dritten Byte abm Hiside/LowSide 
Injection.
Da schickst Du ja 0, also LowSide, dann dürften das + richtig sein.

Gruß aus Berlin
Michael

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren