Страница 1 из 1

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

Добавлено: Ср авг 14, 2013 14:47:53
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
}