Маугли

xprog подойдет ли?

1 post in this topic

Дали прошивку для приборки .  Надо найти теперь XPROG. 

Есть еще и вторая задача: изменить софт блока управления климатом на spc560d30l3. Для этого надо изучить в чем писать код для него(или заплатить чтоб написали) и загрузить новый код. я только изучаю эту тему и поэтому прошу опытных людей подсказать: могу ли я xprog`ом прошить spc560d30l3, чтобы так сказать не зря покупать xprog? или может подскажите чем ее бюджетно можно прошить.микропроцессор при этом нехотелось бы выпаивать с существующей платы

Edited by Маугли

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Similar Content

    • By megavolt3101
      Здравствуйте уважаемые форумчане. Пытаюсь связать два микроконтроллера по шине LIN. В качестве мастера выбрал контроллер STM8S103F3P6 (Его Usart умеет только LIN MASTER). В качестве ведомого выбрал STM8S208RBT6 (У него 2 Усарта, один из которых умеет быть ведомым LIN) Собрал на двух макетных платах. LIN трансивер TJA1020 Прием и передача работают нормально. Но как дошло дело до защиты от потери линии связи, тут возникли проблемы. После обрыва линии связи и ее восстановления связь возобновляется. Но вот после короткого замыкания шины LIN ведомое (SLAVE) устройство намертво виснет. Точнее виснет в обработчике прерывания от USART3. Я пытался принудительно очистить флаг приема по узарту (UART3_FLAG_RXNE) и флаг приема хедер байта (UART3_FLAG_LHDF). А также скидывал флаг брэйк байта (UART3_FLAG_LBDF). Ничего не помогает программа не возвращается из прерывания по приему от USART_3. Но зато если в этот момент с ведущего устройства снова подать команду, то работоспособность ведомого устройства восстанавливается. Тоже самое помогает, если в обработчике прерывания по USART_3 принудительно подать рандомную команду на передачу. То есть, так как линия одна, она сама свою же команду и принимает, получается. Вроде все нормально, но как то коробит такой колхозный способ защиты от короткого замыкания шины. Подскажите, может я забываю еще какой нибудь скинуть флаг при случае коротыша на линии LIN или есть еще каrой нибудь правильный способ обойти защиту от потери связи после кратковременного замыкания на шине. Надеюсь тут есть люди, которые что-то делали с шиной LIN ?

      Прилагаю инициализацию для мастер устройства 
      UART1_Init( 9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
      UART1_LINBreakDetectionConfig( UART1_LINBREAKDETECTIONLENGTH_11BITS);
      UART1_ITConfig( UART1_IT_RXNE_OR, ENABLE);
      UART1_LINCmd( ENABLE);
      enableInterrupts();

      И для Ведомого устройства
      UART3_Init( 9600, UART3_WORDLENGTH_8D, UART3_STOPBITS_1, UART3_PARITY_NO, UART3_MODE_TXRX_ENABLE);
      UART3_LINConfig( UART3_LIN_MODE_SLAVE, UART3_LIN_AUTOSYNC_ENABLE,UART3_LIN_DIVUP_LBRR1);
      UART3_LINBreakDetectionConfig( UART3_LINBREAKDETECTIONLENGTH_11BITS);
      UART3_ITConfig( UART3_IT_RXNE_OR, ENABLE);
      UART3_ITConfig( UART3_IT_LBDF, ENABLE);
      UART3_ITConfig( UART3_IT_LHDF, ENABLE);
      UART3_LINCmd( ENABLE);
      enableInterrupts();

      А также обработчик прерывания для ведомого устройства
      //Обработчик прерывания для UART3.
      INTERRUPT_HANDLER( UART3_RX_IRQHandler, 21)
      {
      if( UART3_GetFlagStatus( UART3_FLAG_LHDF)){recUART3_Header=UART3_ReceiveData8(); UART3_ClearFlag(UART3_FLAG_LHDF);}
      if( UART3_GetFlagStatus( UART3_FLAG_RXNE)){recUART3_Data=UART3_ReceiveData8(); UART3_ClearFlag(UART3_FLAG_RXNE);}
      if( UART3_GetFlagStatus( UART3_FLAG_LBDF)){ UART3_ClearFlag( UART3_FLAG_LBDF);}
      if( UART3_GetFlagStatus(UART3_FLAG_OR_LHE)){UART3_SendData8(0x00);UART3_ClearFlag(UART3_FLAG_OR_LHE);}// Отправляю пустую команду через USART_3
      }
    • By Kirill Lubinets
      Необходимо выводить на блок из 4 семисегментных индикаторов данные, управление лежит на двух сдвиговых регистрах:
      Первый хранит в себе число на вывод, второй адрес(адресует на конкретный разряд в блоке).
       
      Данные передаю через аппаратный SPI, настроенный в STM32CubeMX, но он у меня не работает.

      Мой алгоритм
      Задаю наборы для отображения на индикаторе и адресные наборы для перемещения по разрядам в блоке.
       uint8_t i,j = 0;
        uint8_t buff[8] = {1,2,3,4,5,6,7,8};
        uint8_t digit[10] = { 
            0xC0, // 0
            0xF9, // 1
            0xA4, // 2
            0xB0, // 3
            0x99, // 4
            0x92, // 5
            0x82, // 6
            0xF8, // 7
            0x80, // 8
            0x90, // 9 
        };
        uint8_t chr[4] = { 
            0x8,  
            0x4,  
            0x2,  
            0x1  
        };
      Строб необходим для начала записи данных в регистр хранения сдвигового регистра
      void strob(void){
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET);
      HAL_Delay(85);
      HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_SET);
      HAL_Delay(85);
      }
      Функция передачи данных с использованием HAL функции и строба.
      void spi_send(uint8_t *data, uint8_t it){
        strob();
       uint8_t *d = data;
        for(j = 0; j <=it; j++){
          d = &data[j];
        HAL_SPI_Transmit ( &hspi1, d, 8, 50); 
        }
        strob();
      }
      Отправляю смешение по элементам блока семисегментного индикатора.
        while (1)
        { i++;
          if(i<=4){
      spi_send(chr, i);
        } else i = 4;
        i = -1;
        
      s.7z
      Файлы с IAR проектом и CubeMX проектом инициализации.
      1dsfs.7z
      Пример работы индикатора
      video_2018-07-04_00-13-42.mp4
    • Guest самодельщик
      By Guest самодельщик
      Здравствуйте. Посоветуйте пожалуйста схемы программаторов для AVR и STM- универсальный не надеюсь.
      Имеется в наличии usbasp китайский-работает как гнилой еврей раз в неделю. Сделал PICKIT2 за 4 года ни одного отказа. usbasp может сегодня тупо отказываться работать на 3 компьютерах, на следующий день как часики прошивает 1-2 камня и опять отдыхает. Надоело. 
    • By Serge77
      Обязанности:
      · Разработка радиоэлектронных и GSM-устройств: разработка схем, программирование, разводка печатных плат, разработка документации.
      · Программирование микроконтроллеров STM, AVR, ARM, PIC на языке С/С++
       
      в личку или en@argument74.com
    • By melkiy93
      Доброго!
      Контроллер stm32f103c8t6. Пишу настройку таймера и его прерываний, но программа зависает через несколько тиков после выхода из самой функции настройки.
      По коду: в главной функции пишу сразу настройку таймера и далее бесконечный цикл, до которого дело не доходит.
      На рисунках скрины отладки в момент зависания.
      void TIM_ini(void) { TIM_TimeBaseInitTypeDef UserTimStruct; NVIC_InitTypeDef UserNVIC_Structure; TIM_DeInit(TIM3); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); UserTimStruct.TIM_ClockDivision = TIM_CKD_DIV4; UserTimStruct.TIM_CounterMode = TIM_CounterMode_Up; UserTimStruct.TIM_Period = 200; UserTimStruct.TIM_Prescaler = 700-1; TIM_TimeBaseInit(TIM3, &UserTimStruct); TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE); TIM_Cmd(TIM3, ENABLE); UserNVIC_Structure.NVIC_IRQChannel = TIM3_IRQn; UserNVIC_Structure.NVIC_IRQChannelCmd = ENABLE; UserNVIC_Structure.NVIC_IRQChannelPreemptionPriority = 1; UserNVIC_Structure.NVIC_IRQChannelSubPriority = 1; NVIC_Init(&UserNVIC_Structure); } ,