реклама на сайте
подробности

 
 
> STM32F4 ETHERNET + CAN, Не отправляет сообщения, однако, по строчкам кода отправки проходит
DmitryG
сообщение Feb 18 2017, 11:48
Сообщение #1





Группа: Участник
Сообщений: 7
Регистрация: 27-09-16
Пользователь №: 93 508



Здравствуйте!

Проект: Управление отправкой и приёмом CAN сообщений через Ethernet с помощью браузера.

Проблема: Не работает CAN, как на приём, так и на передачу сообщений.

Судя по флагам, микроконтроллер проходит по всем строчкам инициализации CAN, заходит в функцию отправки сообщений, однако, ничего не отправляет.
Коммутация рабочая.

Подскажите, пожалуйста, как чинить?

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

CODE
void CAN1_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;

/* CAN GPIOs configuration **************************************************/

/* Enable GPIO clock */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);

/* Connect CAN pins */
GPIO_PinAFConfig(GPIOB, GPIO_PinSource8, GPIO_AF_CAN1);
GPIO_PinAFConfig(GPIOB, GPIO_PinSource9, GPIO_AF_CAN1);

/* Configure CAN RX and TX pins */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOB, &GPIO_InitStructure);

/* CAN configuration ********************************************************/
/* Enable CAN clock */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN1, ENABLE);

/* CAN register init */
CAN_DeInit(CAN1);
CAN_StructInit(&CAN_InitStructure);

/* CAN cell init */
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;
CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;

/* CAN Baudrate = 1MBps (CAN clocked at 30 MHz) */
CAN_InitStructure.CAN_BS1 = CAN_BS1_6tq;
CAN_InitStructure.CAN_BS2 = CAN_BS2_8tq;
CAN_InitStructure.CAN_Prescaler = 2;
CAN_Init(CAN1, &CAN_InitStructure);

/* CAN filter init */
CAN_FilterInitStructure.CAN_FilterNumber = 0;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment = CAN_Filter_FIFO0;
CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;

CAN_FilterInitStructure.CAN_FilterIdHigh = 0;
CAN_FilterInitStructure.CAN_FilterIdLow = 0;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0;
CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0;

CAN_ITConfig(CAN1, CAN_IT_FMP0, ENABLE);
CAN_ITConfig(CAN1, CAN_IT_TME, ENABLE);

CAN_FilterInit(&CAN_FilterInitStructure);
}



void NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStructure;

NVIC_InitStructure.NVIC_IRQChannel = CAN1_RX0_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel = CAN1_TX_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
}

Функция отправки:

Код
void ASK_1(void)
{
  CanTxMsg TxMessage;

//     if (CAN_GetITStatus (CAN1, CAN_IT_TME))
//     {
//        CAN_ClearITPendingBit(CAN1,CAN_IT_TME);

        ASK1_DATA0='1';  

        TxMessage.StdId = 0x101;
        TxMessage.RTR = CAN_RTR_DATA;
        TxMessage.IDE = CAN_ID_STD;
        TxMessage.DLC = 1;
        TxMessage.Data[0] = ASK1_DATA0;  
        
        //CAN1->TSR&CAN_TSR_TXOK0;
        CAN_Transmit(CAN1,&TxMessage);
        
//     }
}

Функция приёма:

Код
void CAN1_RX0_IRQHandler(void)
{
    CanRxMsg RxMessage;
    
    if (CAN_GetITStatus (CAN1, CAN_IT_FMP0))
    {
        CAN_ClearITPendingBit(CAN1,CAN_IT_FMP0);

        CAN_Receive(CAN1,CAN_FIFO0, &RxMessage);
        CAN_FIFORelease (CAN1,CAN_FIFO0);
        
        READ_DATA0=RxMessage.Data[0];
        READ_DATA1=RxMessage.Data[1];
        READ_DATA2=RxMessage.Data[2];
        READ_DATA3=RxMessage.Data[3];
        
        Can1Flag = ENABLE;
    }
}


Сообщение отредактировал IgorKossak - Feb 19 2017, 17:31
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- DmitryG   STM32F4 ETHERNET + CAN   Feb 18 2017, 11:48
- - pitt   Не использую НИКОГДА CUBE, SPL или HAL и Вам не со...   Feb 18 2017, 15:58
|- - DmitryG   Цитата(pitt @ Feb 18 2017, 18:58) Не испо...   Feb 18 2017, 16:43
|- - Forger   Не слушаете коллегу, все правильно вы делаете - на...   Feb 19 2017, 08:17
|- - DmitryG   Цитата(Forger @ Feb 19 2017, 11:17) . П...   Feb 19 2017, 11:20
|- - pitt   Примеры - это хорошо. Открытый код - это замечател...   Feb 20 2017, 04:48
|- - Forger   Цитата(pitt @ Feb 20 2017, 07:48) Использ...   Feb 20 2017, 06:39
|- - pitt   Цитата(Forger @ Feb 20 2017, 01:39) Жела...   Feb 20 2017, 13:10
||- - Forger   Цитата(pitt @ Feb 20 2017, 16:10) об...   Feb 20 2017, 14:16
|- - jcxz   Цитата(Forger @ Feb 20 2017, 12:39) Значи...   Feb 20 2017, 17:48
|- - Forger   Цитата(jcxz @ Feb 20 2017, 20:48) Да, про...   Feb 20 2017, 18:00
|- - jcxz   Цитата(Forger @ Feb 21 2017, 00:00) Если ...   Feb 20 2017, 18:26
|- - Forger   Цитата(jcxz @ Feb 20 2017, 21:26) Это нап...   Feb 20 2017, 18:36
- - Neborak   Вроде еще нужно инициализировать тактирование альт...   Feb 20 2017, 09:59
- - AHTOXA   Цитата(Forger @ Feb 20 2017, 11:39) Значи...   Feb 20 2017, 15:42
- - Forger   Цитата(AHTOXA @ Feb 20 2017, 18:42) По кр...   Feb 20 2017, 17:34
- - jcxz   Цитата(Forger @ Feb 20 2017, 23:34) Может...   Feb 20 2017, 18:49
- - Forger   Цитата(jcxz @ Feb 20 2017, 21:49) Интерес...   Feb 20 2017, 18:59
- - jcxz   Цитата(Forger @ Feb 21 2017, 00:59) Бессм...   Feb 21 2017, 06:06
- - Forger   Цитата(jcxz @ Feb 21 2017, 09:06) Пока от...   Feb 21 2017, 06:29


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th August 2025 - 18:42
Рейтинг@Mail.ru


Страница сгенерированна за 0.01399 секунд с 7
ELECTRONIX ©2004-2016