Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

TEA5767 noise problem

Status
Not open for further replies.

trivolty

Newbie level 3
Joined
Aug 26, 2011
Messages
4
Helped
1
Reputation
2
Reaction score
1
Trophy points
1,283
Location
Banska Bystrica, Slovakia
Activity points
1,368
Hello,

I recently bought radio receiver module with IC TEA5767. It works fine, cooperates well with TDA7330 RDS decoder, but there is one tricky issue with this circuit. Every write/read operation is audible in the reception and it demonstrates as a strong *****. The software includes timed routine to update singal strength/mono-stereo reception status (display "refresh"). The event occurs approximately every 6 seconds (it is a deal between the response to buttons and status update). Therefore, I can hear a disturbing ***** every 6 seconds. Is there a way of PCB layout (for 10-pin module, not the circuit itself), filter, shielding, etc. to eliminate this noise? Did anyone had to deal with this and succeed? Thank you for your replies.

P.S. I am using a breakout board with bread connectors, fitted in a classical IC socket to bring signals to my PCB design.

---------- Post added at 11:48 ---------- Previous post was at 11:45 ----------

The word behind the stars is c.r.a.c.k. (short peak noise, not an illegal thing)
 

Hi. I see you have noticed the same thing. I think I have the same module as you. I have had it working for several weeks and was only using it as fm audio receiver. I have been trying to get the level detector running because I want to mute the audio if signal is too low. I am using the i2c interface. I have it mounted directly on a single sided pcb. I now noticed the same problem as you. I think it may be mask by some tricky writes. They mention something about incomplete write "packets". I think it also requires a bit of timing to permit the a-d converter to work properly. I had some erroneous level data returning. I stumbled across your post only by accident. I tried emailing Philips and they said the product is now by STEriccson. I am using freescale
hc908qb8 and hc908qy4 to drive it.
Julian
 

Hi,

I must say that I almost gave up all hope. As far as I went through the datasheet (for the IC, not the module) and appnote as well, I found something about shortened write. That's a tricky thing, because if I want the IF counter to refresh signal level, I have to do a full write and a read afterwards. I'd like the signal level/stereo indicator to update the status continuously. I'll go through that again, maybe there is something I did miss. I had no errors during write/read so far and it seems that the A/D converter with IF counter updates OK (it reacts on antenna position change, or disconnection - the indicator is implemented as a 8-asterisk bar. The level is divided by 2 and the value is represented by stars. Remaining level (higher than measured), is indicated with dash sign). Concerning product support, it's very poor. And it's not a good idea to mention pre-soldered modules (I don't have the equipment to solder TEA5767 directly, its pins are too small and hidden). So we are on our own I guess (with available documentation). I just wanted to know if there is a kind of circuit related solution, e.g. ground planes, capacitors, anything of the "hard" ways...
 

What is purpose of IF counter which we receive in read bytes

i m working on TEA5767 aprox. i have tunned ait because read and write operation are doing correctly ,i have audio problem audio is not comming out
,i m usiong Dual audio amplifier TDA2822m
in datasheet oif TDA2822m stero circuit

i think i have problem of wrint 3rd ,4rth and 5th data bytes of write operation
guid me about it audio
 

Ad 1:

IF counter (and mainly its reading) is very useful when performing autotuning, both built in TEA5767 and semi-automatic from the micro. I am currently using the micro because it is the only way you can see actual frequency currently being checked. Complete and detailed information concerning the tuning process and calculation is explained in appnote: AN10133.

Ad 2:

You have to reset 3 (three) MUTE bits and the STANDBY bit manually. It is necessary to do, although it's quite confusing. There is one MUTE bit for audio as is and two another for each channel separately. I don't know exactly which byte contains which bits, you have to find it in the datasheet.

Concerning communication on the bus:

Are you using 3-wire or I2C bus?

Possible hardware issues:

If using 3-wire bus, be sure to attach 4k7 or 10k pull-up at each wire. As far as I remember, it helped to reduce noise I was talking about very significantly. Watch waveforms on an oscilloscope. Watch ALL of them, i.e. clock and both data lines. Little fillets at the leading edges are not necessarily bad - they are caused by limitations of switching circuitry. However, every additional peak going higher then the high level or lower than the low level is BAD - it can cause misinterpretation by the receiver as it was an actual data bit. You have to get rid of such peaks. Sqaure wave should be really square most of its halfperiods. If the wave appears more like triangle or any other shape, something is really wrong.

If using I2C bus, be sure to attach all denoise filter components, as defined in I2C standard for application when there is a near RF noise. They are not included on the module board. I had to attach them to SAA6588T RDS preprocessor. I saw significant deformation of waveforms when I omitted these components.

Possible software issues:

I don't know which type of bus you use, but if it's software-driven (no SFRs in the micro for selected bus type, everything YOUR code), be sure to include software delay after each bit, such as an empty "for" loop, counting from zero to some parameter you define. The parameter can be unsigned char for faster communication or unsigned int for slower communication, if you want higher values (I am using AT89C51ED2 micro without I2C, but utilising software libraries for 3-wire and I2C bus). I don't know anything about your micro, so you have to play around with such delay to tune the communication to your needs. I recommend watching waveforms with every change of the delay.
 

thanks


i m using PIC 18f452
i m using i2c protocol
is this IC works in Pakistan , may be some modulation/demodulation scheme difference
i m posting my code please guide about its audio because it is necessary in university projects





Code:
#include<18F452.h>
#include <stdlib.h>
#fuses NOWDT,NOPROTECT,NOLVP,HS

#use delay(clock = 8000000)
#use i2c(MASTER, SDA=PIN_C4, SCL=PIN_C3, address=0x60)
#use rs232(baud=1200, xmit=PIN_C6,rcv=PIN_C7)

float tuned_frequency;
long frequencyH,frequencyL;

void radioInit(void); 
void radioStatus(void); 


void main() 
{ 

	int j;
	long pll;
	float  freq_available;
	delay_ms(1000);
	output_a(0x03);
	//printf("Enter the Frequency in Mhz:(87.5~108)Mhz");
	//input_frequency=getc();
	//tuned_frequency=atof(input_frequency);

//	printf("FreqRequested,FreqReceived,RSSLevel\r\n");
	for(tuned_frequency=87.51;tuned_frequency<=108.00;tuned_frequency=tuned_frequency+0.1)
	{ 
		pll=(long)( (4.0*(tuned_frequency*1000.0+225.0))/32.768 );
		//printf("pll=%ld",pll);
		frequencyL= pll & 0xFF; // lower 8-bit
		frequencyH= (pll>>8) & 0xFF; // higher 6-bit

		//printf(" \n\rdata1=%04X ",frequencyH);
		//printf(" \n\rdata1=%04X ",frequencyL);
		freq_available=((((((frequencyH&0x3F)<<8)|frequencyL)*32.768)/4)-225)/1000;
	//	printf("\n\r%f",freq_available);
		delay_ms(5);

		 //printf("Tunning\n\r"); 
		 radioInit(); 

		for( j=0;j<1;j++)
		{  
			radioStatus();
			delay_ms(5);
		} 
	}

	while(TRUE) // inifinte loop after FM scan complete
	{
		delay_ms(5);
	}
} 

void radioInit() 
{   
	i2c_start();    // Start condition 
	//printf("\n\rstart");  
	while(i2c_write(0xC0));// Device writing address 
	//printf("\n\r address"); 
	while(i2c_write(frequencyH)); 
	//printf("\n\r byte1:%X",frequencyH); 
	while(i2c_write(frequencyL)); 
	//printf("\n\r byte2:%X",frequencyL); 
	while(i2c_write(0x00)); 
	//printf("\n\r byte3"); 
	while(i2c_write(0x10)); 
	//printf("\n\r byte4"); 
	while(i2c_write(0x00)); 
	//printf("\n\r byte5"); 
	i2c_stop();     // Stop condition 
} 

void radioStatus() 
{ 
	int i;
	long data[5];
	int level;
	float  freq_available;
	
	//printf("\n\rReading"); 
	
	i2c_start();    // Start condition 
	i2c_write(0xC1);// Device address 
	
	data[0] = i2c_read();
	data[1] = i2c_read(); 
	data[2] = i2c_read(); 
	data[3] = i2c_read();  
	data[4] = i2c_read(); 
	
	i2c_stop();     // Stop condition 
	
	for( i=0;i<5;i++)
	{
		//printf("\r\n%X", data[i]); 
	}
	
	freq_available=((((((data[0]&0x3F)<<8)|data[1])*32.768)/4)-225)/1000;
	printf(",%f",freq_available);	
    level=data[3]>>4;
	printf("\n\r%d",level);


//	if(level>=8){
	//	delay_ms(4000);
	//}

}


post.jpg


post2.jpg


post3.jpg



Guide me i can provide u all information about m y project


mateeb4u@gmail.com







**broken link removed**


**broken link removed**



**broken link removed**
 

Hi,

I went through your code and the drawings. Firstly, I assume the PCB corresponds with the schematic, I'm not going to check that.

The code:

It seems that the micro performs a scan of FM band and lists availabel frequencies while it should end at 108.0 MHz. My question is: Is there any station on this frequency, or otherwise, should you ever hear something if not?
I also went thorugh the data bytes you are sending to the module and they seem almost OK, but I still don't know, if the first byte is sent all right. You should send frequencyH & 0x3F or frequencyH & 0x7F to make sure at least MUTE is disabled (0x7F), or optionally also SEARCH MODE with MUTE are disabled (0x3F). I see the calculation of available frequency using this mask at the line:

freq_available=((((((frequencyH&0x3F)<<8)|frequencyL)*32.768)/4)-225)/1000;

but that's "reading", not "writing" to the device. As you can see in the datasheet, the first data byte (not address) has following format:

MUTE, SM, PLL13, PLL12, PLL11, PLL10, PLL9, PLL8

In order to hear any sound from the device, you have to manually write the highest bit of this byte to 0, i.e. 0x7F when search mode is desired to be enabled or 0x3F when search mode is desired to be disabled. I cannot see if there is any change in calculated frequencyH value before sending it to the port to meet these requirements. Maybe it is, but it's not quite directly visible from the code.
If you are trying to rely on the calculation (that puts 00b at most significant bits), just print the number in hexadecimal or binary form somewhere (I found LCD display to be very useful for this task, I see you are using RS232 with hyperterminal or something like that), just to make sure it's ok.

The schematic:

I don't see any serious problem, but I still think the best would be to see the waveforms of the communication on the bus. I see there are two 4k7 pull-ups at SDA and SCL line, but I think this module (TEA5767) should be treated more strongly, as we are dealing with RF interference. For more information, see the datasheet of SAA6588T here: http://www.datasheetcatalog.org/datasheet/philips/SAA6588.pdf . Focus on I2C connection components. There are more of them, including capacitors. I found that removing any of them would cause total communication fail and deformed signals. Just find the time to go through this. I can also recommend the I2C standard for this task. Good oscilloscope would help also.

This is all I can recommend. I can't help you further without any progress, so feel free to play with the circuit, measure everything you can just to push you forward. I could send you my source code, but it's rather complex - it includes complete clock and calendar including DST operations, Slovak namedays, preset memory management, RDS implementation, menu system, radio alarm, etc. and you could find it way too complicated. But if you still want it, just let me know. I have only one bad habit - all comments are in Slovak.

I hope I helped you a bit.
 
Thanks for your detail

i check all my code again and troubleshoot again it
if you can post your code than it is helpfull for me
 

Hello

I also have problem with noise peaks when i try write TEA5767 via i2c. I also need data from RF level updated continously so i must every few second write and read to have actual RF level - unfortunetly it causing noise peaks . now i try second PCB design and still the same problem. if anyone has found a way to read continuously RF level without audio distortion ?

Regards
Robert
 

one option is to have filter in tea5767 in power pins.
first have a 0,01uf ceramic in between Vcc and Gnd of 5767. solder directly to the pins and not anywhere else.

have one 3u3 or 10u tantalum cap for Vcc and Gnd. this tantalum can be nearby or in parallel with 0.1uf in the power and gnd pins.

if it is a pwr disturbance , then you may see a reduction in noise.
 

RadioFM can you post your Code
i m working on it and audio is not coming out please post it
i really need it
i think you combine the r-audio and l-audio and use a single amplifier do not use separate amplifier to r-audio and l-audio
 

i am also having the same noise problem. i am getting very very faint reception and more over no matter what PLL value (14bit) I put on I2C line I always get 104Mhz station.
for antenna i am using 15ft coaxial wire. i am giving 5v power supply to module. can any one tell me how can i improve reception? and how to select different station.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top