Радио модуль от телефона на микросхеме TB31262F

Обсуждаем приемники, передатчики, радиомикрофоны, жучки, генераторы, ВЧ-усилители, антенны и прочее радиохозяйство
Ответить
Аватара пользователя
Stalkerk750
Родился
Сообщения: 10
Зарегистрирован: Вт мар 16, 2010 20:40:23
Откуда: Украина

Радио модуль от телефона на микросхеме TB31262F

Сообщение Stalkerk750 »

Всем Привет! :)

Помогите пожалуйста мне с радиомодулем, который в отрез не хочет работать как написано в даташите.
Например, если в доке написанно, что если дать команду 0x04, то звук должен убавиться, а он наоборот на всю катушку, и так со всеми регистрами управления.
Может быть, я что-то делаю не так?

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

void init_radio_mod(void)
{
	DDRB_RF  |= (1 << STB_PIN) | (1 << DATA_PIN) | (1 << CLK_PIN); // Инициализация портов
}
 
void send_com_rf(unsigned char data_hi, unsigned char data_mid, unsigned char data_low)
{
	unsigned char bit;
	
	CLR(PORT_RF, STB_PIN);				// STB_PIN  - Low
	CLR(PORT_RF, CLK_PIN);				// CLK_PIN  - Low
	CLR(PORT_RF, DATA_PIN);				// CLK_PIN  - Low
	
	for (bit = 0; bit < 8; bit++)
	{
		if(data_hi & 0x80)
			SET(PORT_RF, DATA_PIN);     // DATA_PIN  - High
		else
			CLR(PORT_RF, DATA_PIN);		// DATA_PIN  - Low
		data_hi <<= 1;					// Сдвинуть data_hi на 1 позицию в лево	
		_delay_us(2);
		SET(PORT_RF, CLK_PIN);          // CLK_PIN  - High
		_delay_us(2);
		CLR(PORT_RF, CLK_PIN);			// CLK_PIN  - Low
		_delay_us(3);
	}
	
	for (bit = 0; bit < 8; bit++)
	{
		if(data_mid & 0x80)
			SET(PORT_RF, DATA_PIN);     // DATA_PIN  - High
		else
			CLR(PORT_RF, DATA_PIN);		// DATA_PIN  - Low
		data_mid <<= 1;					// Сдвинуть data_mid на 1 позицию в лево	
		_delay_us(2);
		SET(PORT_RF, CLK_PIN);          // CLK_PIN  - High
		_delay_us(2);
		CLR(PORT_RF, CLK_PIN);			// CLK_PIN  - Low
		_delay_us(3);
	}
	
	for (bit = 0; bit < 2; bit++)
	{
		if(data_low & 0x02)
			SET(PORT_RF, DATA_PIN);		// DATA_PIN  - High
		else
			CLR(PORT_RF, DATA_PIN);		// DATA_PIN  - Low
		data_low <<= 1;					// Сдвинуть data_low на 1 позицию в лево	
		_delay_us(2);
		SET(PORT_RF, CLK_PIN);          // CLK_PIN  - High	
		_delay_us(2);
		if(bit < 1)
		{
			CLR(PORT_RF, CLK_PIN);      // CLK_PIN  - Low
			_delay_us(3);
		}
	}
	
	CLR(PORT_RF, DATA_PIN);				// DATA_PIN  - Low
	_delay_us(2);
	SET(PORT_RF, STB_PIN);              // STB_PIN  - High
	_delay_us(2);
	CLR(PORT_RF, STB_PIN);              // STB_PIN  - Low
	_delay_us(2);
	CLR(PORT_RF, CLK_PIN);				// CLK_PIN  - Low
}

void send_com_ref(unsigned char data_hi, unsigned char data_low)
{
	unsigned char bit;
	
	CLR(PORT_RF, STB_PIN);				// STB_PIN  - Low
	CLR(PORT_RF, CLK_PIN);				// CLK_PIN  - Low
	CLR(PORT_RF, DATA_PIN);				// CLK_PIN  - Low
		
	for (bit = 0; bit < 8; bit++)
	{
		if(data_hi & 0x80)
			SET(PORT_RF, DATA_PIN);     // DATA_PIN  - High
		else
			CLR(PORT_RF, DATA_PIN);		// DATA_PIN  - Low
		_delay_us(2);
		SET(PORT_RF, CLK_PIN);          // CLK_PIN  - High
		data_hi <<= 1;					// Сдвинуть data_hi на 1 позицию в лево
		_delay_us(2);
		CLR(PORT_RF, CLK_PIN);			// CLK_PIN  - Low	
		_delay_us(3);
	}
		
	for (bit = 0; bit < 4; bit++)
	{
		if(data_low & 0x08)
			SET(PORT_RF, DATA_PIN);		// DATA_PIN  - High
		else
			CLR(PORT_RF, DATA_PIN);		// DATA_PIN  - Low
		_delay_us(2);
		SET(PORT_RF, CLK_PIN);          // CLK_PIN  - High
		data_low <<= 1;					// Сдвинуть data_low на 1 позицию в лево
		_delay_us(2);
		if(bit < 3)
		{
			CLR(PORT_RF, CLK_PIN);      // CLK_PIN  - Low
			_delay_us(3);
		}
	}

	CLR(PORT_RF, DATA_PIN);				// DATA_PIN  - Low
	_delay_us(2);
	SET(PORT_RF, STB_PIN);              // STB_PIN  - High
	_delay_us(2);
	CLR(PORT_RF, STB_PIN);              // STB_PIN  - Low
	_delay_us(2);
	CLR(PORT_RF, CLK_PIN);				// CLK_PIN  - Low
}

void send_com_vol(unsigned char data)
{
	unsigned char bit;
	
	CLR(PORT_RF, STB_PIN);				// STB_PIN  - Low
	CLR(PORT_RF, DATA_PIN);				// CLK_PIN  - Low
	CLR(PORT_RF, CLK_PIN);				// STB_PIN  - Low
	
	for(bit = 0; bit < 8; bit++)
	{
		if(data & 0x80)
			SET(PORT_RF, DATA_PIN);     // DATA_PIN  - High
		else
			CLR(PORT_RF, DATA_PIN);     // DATA_PIN  - Low
		data <<= 1;						// Сдвинуть data на 1 позицию в лево	
		_delay_us(2);
		SET(PORT_RF, CLK_PIN);          // CLK_PIN  - High
		_delay_us(2);
		if(bit < 7)
		{
			CLR(PORT_RF, CLK_PIN);      // CLK_PIN  - Low
			_delay_us(3);
		}
	}
	
	_delay_us(2);
	SET(PORT_RF, STB_PIN);              // STB_PIN  - High
	_delay_us(2);
	CLR(PORT_RF, STB_PIN);              // STB_PIN  - Low
	_delay_us(2);
	CLR(PORT_RF, CLK_PIN);				// CLK_PIN  - Low
}
Вложения
tb31262f.pdf
Datasheet
(273.58 КБ) 346 скачиваний
Реклама
Ответить

Вернуться в «Радиотехника: приемники, передатчики, антенны»