Радио модуль от телефона на микросхеме 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 КБ) 345 скачиваний
Ответить

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