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

aneox

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

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

  • Посещение

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


  1. 3 hours ago, k155la3 said:

    @k155la3 errata первым делом глянул, ничего не углядел.
    Вот сейчас на второй плате проверил, тоже самое. Хотя чипы покупались в разных местах.
    буду искать косяк в либах, но пока ничего не нашел


  2. Помогите пожалуйста, заметил такой баг в самый последний момент, когда изделие нужно отдать.

    Использую stm32f303vct6, все его 4 ацп через ДМА и 32 входа(каждый отдельно).
    До тех пор пока не включаю защиту от чтения(хоть из программы, хоть через openocd), все работает хорошо.
    С активной защитой, вход №4 АЦП4, на ноге PB14 начинает показывать значения близкие к нулю(0-3 отсчета ацп)
    Видимо что-то подрубается к ноге или отрубается внутри чипа, но не могу найти информацию.

  3. что значит не выходит? То есть символы идут а прерывания нет? Или символы тоже не идут?

     

    Вряд ли процессор перестает работать, скорее всего вы что-то выключили и забыли включить. Что вы делаете для переинита системы?

    прерывание не срабатывает я имел ввиду, данные идут на линии, а прерывания нет. для переинита использую вот этот код

    kline_Serial_End();
                    vTaskDelay(100);
    
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 300);
                    GPIO_ResetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 200);
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 400);
                    GPIO_ResetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 400);
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 200);
                    GPIO_ResetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 600);
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 200);
    
                    kline_Serial_Start();

     

    mr_smit стесняюсь спросить, неужели не видно задержки тут ? vTaskDelayUntil(&xLastWakeTime, 300);

     

    в тех двух функциях и видны таймауты по 5сек, в первых постах есть ведь код

  4. отправку из прерывания убрал еще вчера, сегодня вот так пробую

      uint8_t data;
    
        if((UART4->SR & USART_SR_RXNE))
        {
            data = UART4->DR;
    
            klineRecieveBuffer[klineRecieveIndex] = data;
    
            if (!slowInit)
            {
                if (data == 0x8F)
                {
                    check_slow_init = 1;
                    klineRecieveIndex = 0;
                }
    
                if (data == 0xEC)
                {
                    slowInit = 1;
                    klineRecieveIndex = 0;
                }
                return;
            }
    
            if (!fastInit && slowInit)
            {
                if (data == 0xBF)
                {
                    fastInit = 1;
                    klineRecieveIndex = 0;
                }
                return;
            }
    
    ................

     

    и все как бы работает, но если эбу выключить и включить(типо обрыв), после 5ти таймаутов о не получении код начинается сначала и уже в прерывание уарт не входит после 5бод слоу инита, тут делаю ресет nvic reset и линк поднимается

     

    еслиб можно было без 5 бод слоу инита, я бы по вашему парился с ним?) тут только так у тойоты

     

    а на счет перемудрить с уартом, код перед вами ведь, довольно стандартный, как там перемудрить то можно

     

    а это

    if(USART_GetITStatus(UART4, USART_SR_ORE) == SET)

     

    проверка на прерывание переполнения аппаратного буфера и сброс флага

  5. так, ну проблема всетаки есть. обясню

     

    чтобы получить конект с эбу, нужно сначала софтово подергать ножки, потом уже аппаратно уартом. все это работает сейчас так

                    kline_Serial_End();
                    vTaskDelay(100);
    
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 300);
                    GPIO_ResetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 200);
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 400);
                    GPIO_ResetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 400);
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 200);
                    GPIO_ResetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 600);
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 200);
    
                    kline_Serial_Start();
    //после этого получаю данные в прерывании

     

    старт и енд описаны в первом посте. Все работает. Но иногда соединение рвется и нужно повторить софтовое дерганье, так вот на второй раз уже в рантайме после битбанга я в прерывание уарта не попадаю, не могу понять в чем причина. Работоспособность прерывания уарта восстанавливается только после ресета проца.

     

    при первом запуске даже так работает

    //                
                    kline_Serial_Start();
                    vTaskDelay(100);
                    kline_Serial_End();
                    vTaskDelay(100);
                    kline_Serial_Start(); // дважды переключаю, норм.
                    vTaskDelay(100);
                    kline_Serial_End();
                    vTaskDelay(100);
    //                kline_Serial_Start();  ///а трижды уже не срабатывает прерывание
    //                vTaskDelay(100);
    //                kline_Serial_End();
    //                vTaskDelay(100);
    
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 300);
                    GPIO_ResetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 200);
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 400);
                    GPIO_ResetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 400);
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 200);
                    GPIO_ResetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 600);
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 200);
    
                    kline_Serial_Start();
    
                    //после этого получаю данные в прерывании

  6. Спасибо за ответ) Просто опыта не хватает, первый раз со 105м работаю, он хотел кварц 25мгц а у мну 8, получилось что проц работал 115мгц и уарт глючил. Добавил дефайн "HSE_VALUE=8000000" и все заработало на 72мгц, сразу чето не дошло, старый код от 103 взял и все. Спасибо за внимание :blush:

  7. Для начала диалога с автомобильным эбу нужно передать 0х13 на скорости 5бод, на авр все реализовал и прекрано работает

     

    Serial1.end();
      pinMode(txPin, OUTPUT);
      
      digitalWrite(txPin, HIGH);  
      delay(300);                //W5          
      digitalWrite(txPin, LOW);  //start bit
      delay(200);              
      digitalWrite(txPin, HIGH); // 1 1
      delay(400);                  
      digitalWrite(txPin, LOW); // 0 0
      delay(400);                      
      digitalWrite(txPin, HIGH); // 1
      delay(200);                          
      digitalWrite(txPin, LOW); // 0 0 0
      delay(600);                              
      digitalWrite(txPin, HIGH);  
      delay(200);               //W1                                  
      Serial1.begin(9600);
    
    дальше все гуд

     

     

    терь задача сделать на 105м стме, сил моих больше нет

     

    void kline(void *pvParameters)
    {
        static TickType_t xLastWakeTime;
        UNUSED(pvParameters);
    
        xLastWakeTime = xTaskGetTickCount();
    
        for(;;)
        {
            if(!ecuInit)
            {
                if (!slowInit)
                {
                    kline_Serial_End();
                    vTaskDelay(10);
    
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 300);
                    GPIO_ResetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 200);
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 400);
                    GPIO_ResetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 400);
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 200);
                    GPIO_ResetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 600);
                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                    vTaskDelayUntil(&xLastWakeTime, 200);
    
                    kline_Serial_Start();
    
                    uint32_t timeout = 0;
                    while (!slowInit)
                    {
                        timeout++;
                        if (timeout >  10)//0xAfffff)
                            break;
                    }
                    if (!slowInit)
                    {
    //                    kline_Reset_Pin();
    //                    kline_Serial_End();
    //                    GPIO_SetBits(GPIOC, GPIO_Pin_10);
                        vTaskDelay(5000);
                        slowInit = 0;
    //                  пауза и пробуем снова
                    }
                }

     

    void kline_Serial_End(void)
    {
        GPIO_InitTypeDef GPIO_InitStructure;
    
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
    
        USART_DeInit(UART4);
        USART_Cmd(UART4, DISABLE);
        USART_ITConfig(UART4, USART_IT_RXNE, DISABLE);
    
        klineRecieveIndex = 0;
    
    
    }
    
    void kline_Serial_Start(void)
    {
        GPIO_InitTypeDef GPIO_InitStructure;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
    
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
    
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);//UART4
    
        USART_DeInit(UART4);
        USART_InitStructure.USART_BaudRate = 9600;
        USART_InitStructure.USART_WordLength = USART_WordLength_8b;
        USART_InitStructure.USART_StopBits = USART_StopBits_1;
        USART_InitStructure.USART_Parity = USART_Parity_No;
        USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
        USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
        USART_Init(UART4, &USART_InitStructure);
    
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        NVIC_InitStructure.NVIC_IRQChannel = UART4_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
    
        USART_Cmd(UART4, ENABLE);
        USART_ITConfig(UART4, USART_IT_RXNE, ENABLE);
    }

     

    void UART4_IRQHandler()
    {
        uint8_t data;
    //    portBASE_TYPE xStatus;
    
        if((UART4->SR & USART_SR_RXNE))
        {
    
          data = UART4->DR;
    
          klineRecieveBuffer[klineRecieveIndex] = data;
    
          if (klineRecieveIndex > 48)
              klineRecieveIndex = 0;
          else
              klineRecieveIndex++;
    
          if (!slowInit)
          {
              if (data == 0x8F)
              {
                  Usart_Send_symbol(0x70, KLINE_UART);
                  klineRecieveIndex = 0;
              }
    
              if (data == 0xEC)
              {
                  slowInit = 1;
                  klineRecieveIndex = 0;
              }
    
                      if(USART_GetITStatus(UART4, USART_SR_ORE) == SET)
                      {
                           USART_ReceiveData(UART4);
                       }
    }
    
          }

     

     

    Вообщем пару раз прилетает после первой попытки FF и все, при повторных молчок. Железка точно работает, на ноги стм тыкаю авку и она успешно коннектится к эбу. Трансивер стшный 9637

     

    в ответ на бит банг эбу должен отвечать 55 E9 8F , но приходит FF FF, полагаю что битбанг успешно отрабатывает, проблема в приеме

     

    возможно чтото с частотами напутал, мож тут косяк подскажите

    void SetSysClockTo72(void)
    {
      /* SYSCLK, HCLK, PCLK2 and PCLK1 configuration -----------------------*/
      /* RCC system reset(for debug purpose) */
      RCC_DeInit();
    
      /* Enable HSE */
      RCC_HSEConfig(RCC_HSE_ON);
    
      /* Wait till HSE is ready */
      if (RCC_WaitForHSEStartUp() == SUCCESS)
      {
    
        FLASH_SetLatency(FLASH_Latency_2);
        RCC_HCLKConfig(RCC_SYSCLK_Div1);
        RCC_PCLK2Config(RCC_HCLK_Div1);
        RCC_PCLK1Config(RCC_HCLK_Div2);
    
        RCC_PREDIV1Config(RCC_PREDIV1_Source_HSE, RCC_PREDIV1_Div1);
        RCC_PLLConfig(RCC_PLLSource_PREDIV1, RCC_PLLMul_9);
    
        RCC_PLLCmd(ENABLE);
    
        while (RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
        {
        }
    
        RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);
    
        while (RCC_GetSYSCLKSource() != 0x08)
        {
        }

  8. вру я, вру

    GPIO_Pin_12 и GPIO_PinSource12 оказывается разные вещи, а я почем знал) мне что автодополнение подсунуло в креаторе, то я и оставил) сейчас перепишу и попробую с кан

     

    :smile3046: ЗАРАБОТАЛО :1111493779:

    на трех форумах кипишь навел) никто не заметил) GPIO_Pin_12 и GPIO_PinSource12 :laughing:

     

    но этот форум самый отзывчивый оказался, спасибо всем за помощь :biggrin:

  9. на сколько я знаю в режиме лупбак наружу тх ногой должен дрыгать, а вот в режиме сайлентЛупбак полная изоляция.

     

    Вообщем выпаял трансивер, делаю так

    int main(void)
    {
    
      SystemInit();
    
      GPIO_InitTypeDef  GPIO_InitStructure;
      RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC, ENABLE );
      GPIO_InitStructure.GPIO_Pin = GPIO_PinSource12 | GPIO_PinSource11 | GPIO_PinSource10 | GPIO_PinSource15;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_Init(GPIOA, &GPIO_InitStructure);
    
      GPIO_InitStructure.GPIO_Pin = GPIO_PinSource3 | GPIO_PinSource8 | GPIO_PinSource9;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_Init(GPIOB, &GPIO_InitStructure);
    
      GPIO_InitStructure.GPIO_Pin = GPIO_PinSource15;
      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
      GPIO_Init(GPIOC, &GPIO_InitStructure);
    
      GPIO_SetBits(GPIOA, GPIO_PinSource12);
      GPIO_SetBits(GPIOA, GPIO_PinSource11);
      GPIO_SetBits(GPIOA, GPIO_PinSource10);
      GPIO_SetBits(GPIOA, GPIO_PinSource15);
    
      GPIO_SetBits(GPIOB, GPIO_PinSource3);
      GPIO_SetBits(GPIOB, GPIO_PinSource8);
      GPIO_SetBits(GPIOB, GPIO_PinSource9);
    
      GPIO_SetBits(GPIOC, GPIO_PinSource15);
    
    
      while (1)
      {
      }
    }

     

    ни на одной ноге не горит светодиод, что не так то или финит аля комедия?

  10. Когда успешно принимаете пакет, ACK от вас тоже не выставляется?

    если в режиме loopback то выставляется, tx status = ok

     

     

     

    кое что нащюпал, убрал питание с mcp2551 трансивера, ноги опустились, перевел в режим лупбак, отключил от авто, начал слать сам себе. Беру резистор 100ком, на кантх и к 3.3в, а нога то внизу, чето шлет думаю, беру резистор 4.7ком вместо сотки, и начинаю наблюдать какието импульсы на ноге, но в то же время импульсы появились и на canrx, хотя их там не должно быть. Куда копать дальше не знаю. mcp2551 питается от 5в, мож ей всетаки не хватает 3,3 импульса с стма?

     

    хотя встречал много примеров в сети использования такой связки( мож с процом чтото, нога померла или еще чего, пойду светодиод прикручу поморгаю ей

  11. Тактирование AFIO включили?

     

    сегодня проверил без ремапа, затактировал RCC_APB2Periph_AFIO, результат тот же, данные получаю, отправить не могу

     

    Уже не знаю куда смотреть. Переписать все на hal или грешить на железо. Есть в наличии такие же камни только в другом корпусе, травить плату для проверки, времени много отнимет(

     

    это вроде как признак что шина занята или нет?

     

    линия rx в промежутках между импульсами тоже вверху, думаю это свободное состояние

     

  12. Все тесты проводил с подключением к шине авто. Ноги смотрю лог анализатором на базе ардуины. На canrx отчетливо вижу импульсы. На счет того что авто не отдает ack подтверждение тоже думал. Но если всетаки пакет ушел, то должен придти ответ с данными, а его нет. Ноги никто больше не занимает. Беда прям какаято.

     

    Если бы были проблемы с шиной, getLastErrorCode давал бы 0x50 bitDominantError. Это я наблюдал в начале, потом выпаял все подтяжки на плате, там был распаян юсб, сейчас все проверено и getLastErrorCode говорит noError

  13. прошу помощи

    stm32f103 + mcp2551 подключены к автомобильной кан шине, пакеты получаю успешно в прерывании, а вот отправка ни в какую не работает, ножка PA12(CANTX) молчит, в верхем положении.

     

    Инициализация

    void CAN1_Config(void)
    {
    GPIO_InitTypeDef  GPIO_InitStructure;
    NVIC_InitTypeDef NVIC_InitStructure;
    CAN_InitTypeDef		CAN_InitStructure;
    CAN_FilterInitTypeDef  CAN_FilterInitStructure;
    
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);
    
    NVIC_InitStructure.NVIC_IRQChannel = USB_LP_CAN1_RX0_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x00;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
    
    
    
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE );
    
    //CAN_RX
    GPIO_InitStructure.GPIO_Pin = GPIO_PinSource11; //PA11
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    //CAN_TX
    GPIO_InitStructure.GPIO_Pin = GPIO_PinSource12; //PA12
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
    
    
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);
    CAN_DeInit(CAN1);
    
    CAN_InitStructure.CAN_TTCM = DISABLE;
    CAN_InitStructure.CAN_ABOM = DISABLE;
    CAN_InitStructure.CAN_AWUM = DISABLE;
    CAN_InitStructure.CAN_NART = DISABLE;
    CAN_InitStructure.CAN_RFLM = DISABLE;
    CAN_InitStructure.CAN_TXFP = DISABLE;
    CAN_InitStructure.CAN_Mode = CAN_Mode_Normal;
    
    //расчет на 500кб
    CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;
    CAN_InitStructure.CAN_BS1 = CAN_BS1_3tq;
    CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq;
    CAN_InitStructure.CAN_Prescaler = 12;
    CAN_Init(CAN1, &CAN_InitStructure);
    
    CAN_FilterInitStructure.CAN_FilterNumber = 0;
    CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
    CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
    CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000;
    CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000;
    CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000;
    CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000;
    CAN_FilterInitStructure.CAN_FilterFIFOAssignment = CAN_FIFO0;
    CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;
    CAN_FilterInit(&CAN_FilterInitStructure);
    
    
    TxMessage.StdId = 0x321;
    TxMessage.RTR = CAN_RTR_DATA;
    TxMessage.IDE = CAN_ID_STD;
    TxMessage.DLC = 8;
    
    CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);
    }

     

    Отправка

            TxMessage.StdId=PID_REQUEST;
            TxMessage.RTR = CAN_RTR_DATA;
            TxMessage.IDE = CAN_ID_STD;
            TxMessage.DLC = 8;
            TxMessage.Data[0] = 0x02;
            TxMessage.Data[1] = 0x01;
            TxMessage.Data[2] = ENGINE_COOLANT_TEMP;
            TxMessage.Data[3] = 0x00;
            TxMessage.Data[4] = 0x00;
            TxMessage.Data[5] = 0x00;
            TxMessage.Data[6] = 0x00;
            TxMessage.Data[7] = 0x00;
    
            do
            {
                transmit_mailbox = CAN_Transmit( CAN1, &TxMessage );
            }
            while( transmit_mailbox =! CAN_NO_MB );
    
            txStat1 = CAN_TransmitStatus(CAN1, 0); //0x02 CAN_TxStatus_Pending
            txStat2 = CAN_TransmitStatus(CAN1, 1); //0x02 CAN_TxStatus_Pending
            txStat3 = CAN_TransmitStatus(CAN1, 2); //0x02 CAN_TxStatus_Pending
    
            if (txStat1 == CANTXOK || txStat2 == CANTXOK || txStat3 == CANTXOK)
                ok = 1;

     

    Заполняет все мэил боксы и так и стоит. В режиме Loopback отправка работает, получаю свое же сообщение, но нога не дрыгается. В режиме нормал работает только получение пакетов с кан шины авто. Уже сил моих нет.

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