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

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> 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
pitt
сообщение Feb 18 2017, 15:58
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



Не использую НИКОГДА CUBE, SPL или HAL и Вам не советую.
Попробуйте сначала программную заглушку потом аппаратную и пусть поговорит сам с собой.


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post
DmitryG
сообщение Feb 18 2017, 16:43
Сообщение #3





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



Цитата(pitt @ Feb 18 2017, 18:58) *
Не использую НИКОГДА CUBE, SPL или HAL и Вам не советую.
Попробуйте сначала программную заглушку потом аппаратную и пусть поговорит сам с собой.


Если вас не затруднит, не могли бы вы разъяснить начинающему, что такое CUBE, SPL или HAL?

Я раньше опирался на примеры уже готовых программ, а они были написаны в подобной форме. Что я делаю не так, и где нужно почитать, чтобы делать правильно?

Спасибо
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 19 2017, 08:17
Сообщение #4


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

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



Не слушаете коллегу, все правильно вы делаете - начинаете работу с чужих примеров и решений.
Переход на прямое обращение к регистрам, это уж скорее от безделья или от скуки sm.gif
Но справедливости ради стоить отметить, что в в критичных к скорости работы участках кода ситуациях это имеет смысл (прерывания, программные интерфейсы через ногодрыгание).

Цитата
что такое CUBE, SPL или HAL?

CUBE, SPL или HAL - это готовые библиотеки от ST.
Ваш код выше написан на SPL - Std Periph Lib.
HAL пришел на смену SPL, новый проекты лучше начинать на HAL.

Цитата
Я раньше опирался на примеры уже готовых программ, а они были написаны в подобной форме.

Все верно вы делаете - нет ничего постыдного или зазорного в использовании чужого открытого кода
Делать наиболее простым и привычным способом - это разумно.

Цитата
Что я делаю не так, и где нужно почитать, чтобы делать правильно?

Скачивайте свежие библиотеки с сайта ST, внутри есть примеры для работы с разной периферией.
HAL есть внутри CUBE, поэтому ищите свежий CUBE.
Возможно, у вас аппаратно снаружи МК что-то не так подключено. Поищите в том направлении.
В гуглях полно информации по этой теме.


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





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



Цитата(Forger @ Feb 19 2017, 11:17) *
.



Понял Вас.
Большое Спасибо за помощь.

Сообщение отредактировал IgorKossak - Feb 19 2017, 17:31
Причина редактирования: бездумное цитирование
Go to the top of the page
 
+Quote Post
pitt
сообщение Feb 20 2017, 04:48
Сообщение #6


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



Примеры - это хорошо. Открытый код - это замечательно. Использовать CUBE, HAL, SPL можно только чтобы понимать что происходит в регистрах. Использовать ЭТО вслепую очень легко и ... самоубийственно. Конечно, что-то получится и даже заработает, но потом, почему-то перестанет, а знаний нет. Но это уже дело вкуса и требований к качеству. Если для инженера-электрика или хоббииста это простительно, но для профессионального программера - приговор. Как пелось в старой популярной песне:"думайте сами, решайте сами..."


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 20 2017, 06:39
Сообщение #7


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

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



Цитата(pitt @ Feb 20 2017, 07:48) *
Использовать CUBE, HAL, SPL можно только чтобы понимать что происходит в регистрах.

Вот уж точно заняться нечем, как изучать, что там и где пишется в регистры, особенно новичку sm.gif

Цитата
Использовать ЭТО вслепую очень легко и ... самоубийственно.

Если у вас не получается ЭТО использовать успешно и эффективно, то это вовсе не означает, что у других это тоже не получается ))

Цитата
Конечно, что-то получится и даже заработает, но потом, почему-то перестанет, а знаний нет.

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

Цитата
Но это уже дело вкуса и требований к качеству.

Дело вкуса - это в ресторане. Тут же все как правило упирается в некий компромисс: надежность кода/время.
Если через HAL/CUBE задача решается быстрее и эффективнее, то именно так ее и следует решать.
Но коли страх перед чужим пусть и бесплатным кодом сильнее, чем следует, то, разумеется, использовать чужой код категорически запрещается! sm.gif

Цитата
Если для инженера-электрика или хоббииста это простительно, но для профессионального программера - приговор.

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


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


Участник
*

Группа: Участник
Сообщений: 33
Регистрация: 13-04-09
Пользователь №: 47 609



Вроде еще нужно инициализировать тактирование альтернативных функций портов.
Go to the top of the page
 
+Quote Post
pitt
сообщение Feb 20 2017, 13:10
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 328
Регистрация: 1-06-06
Из: USA
Пользователь №: 17 672



Цитата(Forger @ Feb 20 2017, 01:39) *

Желаю всяческих успехов: об'яснять слепому от рождения, что такое белый цвет я не буду.


--------------------
Прокричал немой глухому:"...Спасибо за внимание!"
http://www.youtube.com/watch?v=3Nnj4ky4Z_g
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 20 2017, 14:16
Сообщение #10


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

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



Цитата(pitt @ Feb 20 2017, 16:10) *
об'яснять слепому от рождения, что такое белый цвет я не буду.

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

зы. При приеме на работу в большинстве крупных контор умение работать в CUBE (или подобных инструментах) крайне желательно, а в некоторых даже обязательно!
Уверен, что считать деньги и время они умеют ...

Я сам лично не пользуюсь кубом и пока не планирую, но и отговаривать от этого новичков не стану.
Пользуюсь HAL/SPL вперемешку с прямым обращением. Пока что этого мне достаточно.
Нисколько не навязываю, просто, делюсь своим опытом wink.gif


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


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

Группа: Свой
Сообщений: 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
Сообщение #12


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

Группа: Свой
Сообщений: 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, 17:48
Сообщение #13


Гуру
******

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



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

Да, профессионалов единицы. Это в любом деле так. Подавляющее большинство - любители, в массе своей способные только копировать чужое, не понимая.
Для них и придуманы все эти кало-кубы.

PS: блин - ещё один "эффективный" "программист".... :crying:
Go to the top of the page
 
+Quote Post
Forger
сообщение Feb 20 2017, 18:00
Сообщение #14


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

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



Цитата(jcxz @ Feb 20 2017, 20:48) *
Да, профессионалов единицы. Это в любом деле так. Подавляющее большинство - любители, в массе своей способные только копировать чужое, не понимая.

"Профессионала" легко отличить от новичка - он во всем пытается продемонстрировать свою уникальность и приближенность к богу (читай, к регистрам проца),
никогда не признается, что не прав, и будет до посинения доказывать свою уникальность в умении видеть то, что новичок не видит.

А действительно настоящие профессионалы вырастают из тех самых новичков, которые в свое время прошли весь этот путь самостоятельно, и вовсе не застряли на каком-то этапе.
Чтобы новичок вырос разносторонне развитым и действительно профессионалом, ему нужно давать инструменты, разные инструменты, но учиться пользоваться ими он должен по максимуму самостоятельно.

Если просит новичок помощи в проблеме - покажи ему примерное направление поиска, но не давай ему готовое решение, иначе никакого проку не будет ))


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


Гуру
******

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



Цитата(Forger @ Feb 21 2017, 00:00) *
Если просит новичок помощи в проблеме - покажи ему примерное направление поиска, но не давай ему готовое решение, иначе никакого проку не будет ))

Это направление ему дали ещё в первом посте - прочитать даташит. Если он последует этому совету - это и будет первый шаг по пути в профессионалы из чайников.
Go to the top of the page
 
+Quote Post

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

 


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


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