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

 
 
> 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
 
Start new topic
Ответов
AHTOXA
сообщение Feb 20 2017, 15:42
Сообщение #2


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(Forger @ Feb 20 2017, 11:39) *
Значит, подавляющее большинство сидящих тут - "инженеры-электрики или хоббиисты", и лишь один - "профессиональный программер" ... sm.gif

Откуда у вас такая статистика? У меня обратное впечатление. По крайней мере, с кубом здесь пока вижу только сплошные страдания.

Цитата(Forger @ Feb 20 2017, 19:16) *
Я сам лично не пользуюсь кубом и пока не планирую, но и отговаривать от этого новичков не стану.
Пользуюсь HAL/SPL вперемешку с прямым обращением. Пока что этого мне достаточно.

Вот в этом-то и дело. Вы знаете, как оно там всё устроено внутри, поэтому вы можете и куб осилить. А новички, которые начинают сразу с куба, совершенно беспомощны при возникновении любой нештатной ситуации. Потому и вопросы тут про куб такие - "я нагенерил, а оно не работает, что мне делать?". Наверное, куб допилят в конце-то концов. Но думать он отучает, это его очень большой минус.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 20 2017, 17:34
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(AHTOXA @ Feb 20 2017, 18:42) *
По крайней мере, с кубом здесь пока вижу только сплошные страдания.

А вы полагаете, что здесь будут писать не о проблемах, а о успехах освоения куба или чего-бы то ни было?? smile3046.gif
Сюда пишут в случае возникновения трудностей, это нормально. Было бы очень странно видеть туть обратное.
А в данном случае, код вообще написан на архаичном SPL и скопирован лишь частично из существующих примеров.

Цитата
Вот в этом-то и дело. Вы знаете, как оно там всё устроено внутри,

Ничего подобного, просто, мне действительно до-лампочки какие регистры пишутся при инициализации.
Мне важен результат и читаемость кода.
Трудно спорить, что HAL/SPL читается легче, чем прямое обращение к регистрам.
К регистром я обращаюсь напрямую лишь в критичных к скорости работы кусках кода, это редко нужно.

Цитата
поэтому вы можете и куб осилить.

Нечего там осиливать - даже школьник сможет получить результат, если не будет выпендриваться и копаться в даташитах раньше времени!

Цитата
А новички, которые начинают сразу с куба, совершенно беспомощны при возникновении любой нештатной ситуации.

Т.е. по-вашему логично копать яму под фундамент лопатой, вместо того, чтобы воспользоваться экскаватором?
CUBE - это инструмент, и им тоже нужно учиться пользоваться.
С него хорошо начинать, но на нем нельзя зацикливаться. Равно как и нельзя зацикливаться на прямом обращении к регистрам.
КОМПРОМИСС, его нужно искать. Самостоятельно!

Цитата
Потому и вопросы тут про куб такие - "я нагенерил, а оно не работает, что мне делать?".

Бесит, пролистывай тему )))
Да, ленивых имбицилов нынче еще больше, чем раньше. Это, увы, неизбежно ((
Но это не означает, что имбицил поумнеет пытаясь писать насильно код зарывшись в даташит! Он с равным успехом будет тупить в кубе )))
Некоторым горе-"программерам" лучше воообще не влезать в эту область, а идти работать в гипермаркет на кассу или еще куда-нить по-проще
Нормальный адекватный программер, пройдя через КУБ или что-то подобное, волей неволей сам разберется, интернеты/ютубы нынче очень дешевые )))

Такие программисты пишут на форумах мало, редко (в основном читают), проблемы свои решают самостоятельно, и чаще с большей готовностью помогают другим.
Вполне возможно, что среди них есть те, кто пользует КУБ. Если мы о них не знаем, вовсе не означет, что их нет ))

Цитата
Но думать он отучает, это его очень большой минус.

КУБ приучает получать результат в первую очередь, а это, порой, важнее некой гипотетической идеальности кода -
нахимичить с прямым доступом в регистры еще проще, чем взять чужой готовый пример на хале/кубе и его чуток допилить (по необходимости).

В будущем процы станут еще толще и сложнее по периферии и "чистых" писателей на прямом обращении к регистрам останутся единицы, в итоге, они вымрут также как вымерли в свое время чистые ассемблерщики sm.gif
Может, останется один-два, которые до пены у рта будут доказывать свою уникальность, но их будут воспринимать как чудаков-вассерманов, и постепенно забудут про их существование ...


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 20 2017, 18:49
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Forger @ Feb 20 2017, 23:34) *
Может, останется один-два, которые до пены у рта будут доказывать свою уникальность, но их будут воспринимать как чудаков-вассерманов, и постепенно забудут про их существование ...

Интересно: а кто тогда в те благословенные времена писать будет все эти кубо-библиотеки, которыми будет пользоваться остальное стадо кубо-кодеров??? Или думаете в процы уже куб будут встраивать в виде карты соединения вентилей??? :biggrin:
Кто будет за всё остальное стадо читать и изучать даташиты? Да молиться будете на этих "один-два" чудаков! И платить им огромные гонорары за умения.
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 20 2017, 18:59
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Feb 20 2017, 21:49) *
Интересно: а кто тогда в те благословенные времена писать будет все эти кубо-библиотеки, которыми будет пользоваться остальное стадо кубо-кодеров??? Или думаете в процы уже куб будут встраивать в виде карты соединения вентилей??? biggrin.gif
Вот уж действительно нечем заняться, как думать кто и на чем там пишет библиотеки ...
"Ваш шашечки или ехать?"

Бессмысленно других приучать пользоваться везде лопатой лишь на том основании, что сам не фига умеешь пользоваться экскаватором! sm.gif

Цитата
Кто будет за всё остальное стадо читать и изучать даташиты?
Ну, да, в будущем же даташитов для простых смертных уже не будет и выдаваться они будут лишь избранным "гуру" после прохождения смертельных испытаний (скажем, по программировании регистров NVIC контроллера вслепую, без CMSIS)!
Интернеты будут доступны только для истинных Гуру, а те в свою очередь будут выдавать смертным Божественные Даташиты только после признаниями смертными истинной Божественности этих Гуру! ....
Ничего не напоминает? sm.gif


Цитата
Да молиться будете на этих "один-два" чудаков! И платить им огромные гонорары за умения.

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


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
Go to the top of the page
 
+Quote Post
jcxz
сообщение Feb 21 2017, 06:06
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 5 228
Регистрация: 3-07-08
Из: Омск
Пользователь №: 38 713



Цитата(Forger @ Feb 21 2017, 00:59) *
Бессмысленно других приучать пользоваться везде лопатой лишь на том основании, что сам не фига умеешь пользоваться экскаватором! sm.gif

Так может слезете со своего экскаватора и поможете наконец-то единоверцу-кубокодеру? Вместо того чтобы лить флейм экскаваторными ковшами.
Может сделаете что-то реально полезное вместо того, чтобы поносить других, кто пытался помочь, а сами ни слова по делу не сказали - один пустой трёп?
Пока от Вас во всех этих килобайтах пустого флейма не видно ни слова пользы, только пустое "обновите библиотеки". Видно "обновлять библиотеки" это всё что может кубо-кодер когда возникает проблема. laughing.gif
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 21 2017, 06:29
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 22-02-05
Пользователь №: 2 831



Цитата(jcxz @ Feb 21 2017, 09:06) *
Пока от Вас во всех этих килобайтах пустого флейма не видно ни слова пользы, только пустое "обновите библиотеки".

Вы увидели только то, что хотели увидеть или то, что вам удобно и выгодно видеть. Но это не повод сердиться!
Это вполне нормальное явление, молодежь всегда будет уделывать "стариков" по всем фронтам (кроме разве что сдержанности и жизненного опыта, но это уже к делу не относится) sm.gif
Объяснение тут простое - молодые думают шире и быстрее, у них еще нет зашоренности на привычном и ограниченном инструментарии (везде голый С, а то и АSМ, категоричное неприятие HAL/CUBE и т.п.).
Вот и топикстартер, судя по всему, понял суть дела и довольно быстро. А ведь он новичок ...

По делу: самый вероятный косяк в коде был указан в самой теме (пост #8), кратко и по делу.
А все остальное тут - самцовы игры "стариков", разве что от скуки wink.gif

ps. Я уже писал, что кубом не пользуюсь и не планирую далее. Хотя пробовал его разок, что греха таить )))
Уже давно проектирую проекты иначе, мне куб просто неудобен. А вот HAL/SPL пользовать не стесняюсь, и регистры напрямую юзаю, и SMSIS не грех потискасть wink.gif


--------------------
Кругозор некоторых людей - круг с нулевым радиусом. Они называют его "точкой зрения".
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


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

 


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


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