Перейти к содержанию
    

Ave

Участник
  • Постов

    31
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Ave


  1. Добрый день

    Есть СС2541 Mini Development Kit.

    Кто может подсказать как в правильно сконфигурировать HID USB для передачи блоков данных до 512 байт.

    В примерах приведено для клавиатуры и мыши. Хочется чтобы определялось как простое устройство ввода.

     

     

  2. Спасибо за ответы.

    Не обязательно что калькуляторы ошибочные.

    Был сайт с калькулятором где можно было задать частоту и необходимую скорость обмена все работало.

    Сейчас не могу вспомнить где он был.

    Взял программу по расчету скорости UART. Настроил UART до скорости 480600 частота 24МГц.

    Но 921600 никак не хочет синхронизироваться.

     

  3. Добрый день

     

    Спасибо за ответ. Пробывал передать управление в область BSL виснет процессор.

    Смотрю в отладчике значение памяти 0x3fff. Возникает сомнение в наличие там кода.

    Чем можно записать BSL область или как правильно передать управление.

     

  4. Наверно вы правы. Устройство не имеет светодиодов для экономии электроэнергии и потребителю всеравно почему не работает.

    Иногда нет времени все проверять заработало "значит правильно".

    Да в примерах нет функции включающей питание при установки кварца 24МГц намучался пока понял причину.

    Спасибо за обяснение попробую исправить.

     

  5. Спасибо за подсказку про баг обязательно посмотрю.

    Уже полгода как работает устройство с такой инициализацией и нет проблем.

    Устройство постояно включается выключается.

    Используется кварц в программе и если он не запустится то смысла дальнейшей работы нет.

    В примерах TI инициализация кварца на XT2 приводится так.

     

  6. A на какую частотный канал (ACLK/MCLK/SMCLK) хотите кварц подключить? и какой кварц?

     

    Если еще интересно инициализация кварца для MSP430F5528 на XT2 выполняется так

    void SetVcoreUp (unsigned int level)
    {
    #ifdef MSP
      // Open PMM registers for write
      PMMCTL0_H = PMMPW_H;              
      // Set SVS/SVM high side new level SVMHE = 1, SVSMHRRL
      SVSMHCTL = SVSHE + SVSHRVL0 * level + SVMHE + SVSMHRRL0 * level;
      // Set SVM low side to new level
      SVSMLCTL = SVSLE + SVMLE + SVSMLRRL0 * level;
      // Wait till SVM is settled
      while ((PMMIFG & SVSMLDLYIFG) == 0);
      // Clear already set flags
      PMMIFG &= ~(SVMLVLRIFG + SVMLIFG);
      // Set VCore to new level
      PMMCTL0_L = PMMCOREV0 * level;
      // Wait till new level reached
      if ((PMMIFG & SVMLIFG))
        while ((PMMIFG & SVMLVLRIFG) == 0);
      // Set SVS/SVM low side to new level
      SVSMLCTL = SVSLE + SVSLRVL0 * level + SVMLE + SVSMLRRL0 * level;
      // Lock PMM registers for write access
      PMMCTL0_H = 0x00;
    #endif
    }
    
    void SetupFreq(void)
    {
      P5SEL |= BIT2+BIT3;                       // Port select XT2
    
      SetVcoreUp (0x03);
      UCSCTL6 &= ~XT2OFF;                       // Enable XT2 
      UCSCTL3 |= SELREF_2;                      // FLLref = REFO
                                                // Since LFXT1 is not used,
                                                // sourcing FLL with LFXT1 can cause
                                                // XT1OFFG flag to set
      UCSCTL4 |= SELA_2;                        // ACLK=REFO,SMCLK=DCO,MCLK=DCO
      UCSCTL6 &= ~XT2DRIVE_3;                   // Clear XT2drive field
      // Loop until XT1,XT2 & DCO stabilizes - in this case loop until XT2 settles
      do
      {
        UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG_L + DCOFFG);
                                                // Clear XT2,XT1,DCO fault flags
        SFRIFG1 &= ~OFIFG;                      // Clear fault flags
      } while (SFRIFG1 & OFIFG);                // Test oscillator fault flag
    
      UCSCTL6 &= ~XT2DRIVE0;                    // Decrease XT2 Drive according to
                                                // expected frequency
      UCSCTL6 |= XTS;                           // 
      UCSCTL6 |= XT2DRIVE_3;                    // Set requested value
      UCSCTL4 &= ~(SELS_7 + SELM_7);
      UCSCTL4 |= SELS_5 + SELM_5;                // SMCLK=MCLK=XT2
    }

     

    Функция SetVcoreUp (0х03) необходимо задавать при частоте кварца больше 16 МГц

     

  7. Используется MSP430F5528. У него 128кБ flash.

     

    На строку в программе

    char * Flash_ptr = (char *) 0x10000;

    Компилятор выдает предупреждение

    cast or assignment from 'long int' to 'unsigned char *' is compiler dependent

     

    В примерах на IAR используется данная конструкция. Не хочется переходить на IAR.

     

  8. Пытаюсь подключить TIC149 к MSP.

    Инициализация проходит. После на экране отображаются только две строки по 8 бит.

    Такое впечатление что не срабатывает установка Bias system и Multiplex rate.

    Может важен порядок установки.

  9. Сходу еще ни у кого не получалось. Если с нуля начинаете, только язык. Тем более если рядом никто железом не занимался. Для синтеза лучше verilog (проще для понимания) Скачайте с сайта Xilinx xst.pdf (синтезабельное описание библиотечных элементов). Но Вы должны понимать, что хотите сделать.

     

    module formir_intervala

    (

    input            clk_8mhz,

    input            zapusk,    // интервал строба больше периода clk_8mhz

    input      [3:0]  in_data,

    output reg [3:0]  out_data

    );

     

    reg        [1:0]  shift_left_rg;

    reg        [15:0] ct;

    reg              enable_ct;

     

    wire              enable_zapusk;

     

     

    always @ (posedge clk_8mhz)

      begin

      shift_left_rg <= {shift_left_rg[0], zapusk};

      end

     

    assign enable_zapusk = shift_left_rg[0] & ~shift_left_rg[1];

     

    always @ (posedge clk_8mhz)

      begin

        if (enable_zapusk)

            ct <= 16'd39999;

        else if (enable_ct)

      ct <= ct - 1'b1;

      end

     

    always @ (posedge clk_8mhz)

      begin 

        if (enable_zapusk)

            enable_ct <= 1'b1;

        else if (ct == 16'd0)

        enable_ct <= 1'b0;

        end

     

    always @ (posedge clk_8mhz)

      begin 

        if (ct == 16'd0)

    out_data <= in_data;

        end

     

    endmodule

     

    Спасибо за подсказку.

×
×
  • Создать...