Easyelectronics.ru

Электроника для всех
Текущее время: 29 окт 2020, 22:18

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Поомгите разобраться с CAN в stm32
СообщениеДобавлено: 07 май 2012, 13:13 
Заглядывает иногда

Зарегистрирован: 22 апр 2012, 23:14
Сообщения: 53
Помогите, опжалуйста, разобраться с CANом для stm32.

Постановка задачи следующая. Есть отладочная плата sk-mstm32f107 и самодельная плата на основе stm32f103vet. Роль первой платы - мастер, второй- слэйв. Пробую на основе исходников библиотеки StdPeriphLib написать программку, которая просто передаст хоть что-то на вторую платку. Не получается.
Согласно документации на отладочную плату на stm32f107:
CAN_TX1=GPIOD_1;
CAN_RX1=GPIOD_0;
Плата слэйва на stm32f103vet:
CAN_TX=GPIOA_12;
CAN_RX=GPIOA_11;
Прилагаю файлы 2 проектов с настройками CANов. Подскажите, что я не так делаю и почему не срабатывает прерывание у слэйва по получению данных.


Вложения:
CAN_Testing.rar [49.4 Кб]
Скачиваний: 248
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поомгите разобраться с CAN в stm32
СообщениеДобавлено: 07 май 2012, 14:21 
Старожил
Аватара пользователя

Зарегистрирован: 14 фев 2010, 11:46
Сообщения: 299
а репам CAN зачем закоментирован?
GPIO_PinRemapConfig(GPIO_Remap2_CAN1 , ENABLE);

_________________
Американский форум: задал вопрос - получил ответ.
Израильский форум: задал вопрос - получил вопрос.
Русский форум: задал вопрос и потом долго выслушиваешь какой ты мyдак.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поомгите разобраться с CAN в stm32
СообщениеДобавлено: 07 май 2012, 15:32 
Заглядывает иногда

Зарегистрирован: 22 апр 2012, 23:14
Сообщения: 53
pkm писал(а):
а репам CAN зачем закоментирован?
GPIO_PinRemapConfig(GPIO_Remap2_CAN1 , ENABLE);

Внесла исправления. Добавила в функцию Init_GPIO_CAN проекта для мастера stm32f107 ремап:
Код:
GPIO_PinRemapConfig(GPIO_Remap2_CAN1, ENABLE);

Но все равно прерывания по получению не срабатывают.
Ноги Tx передатчика и Rx приемника дрыгаются. Может, обработчик прерывания неправильно описан или сами прерывания настроены неправильно, или нет тот флаг проверяется. Там этих флагов черт ногу сломит. Объясните, кому не лень, пожалуйста, помогите разобраться.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поомгите разобраться с CAN в stm32
СообщениеДобавлено: 07 май 2012, 20:12 
Старожил
Аватара пользователя

Зарегистрирован: 14 фев 2010, 11:46
Сообщения: 299
Если пишите
NVIC_InitStructure.NVIC_IRQChannel = CAN1_RX0_IRQn;

то и функция прерывания должна быть
void CAN1_RX0_IRQHandler(void)
{...}

не пишите все в одном файле, разместите прерывания в <камень>_it.c
Кстати посмотрите примеры к вашему мк, там так и должно быть описано все.

_________________
Американский форум: задал вопрос - получил ответ.
Израильский форум: задал вопрос - получил вопрос.
Русский форум: задал вопрос и потом долго выслушиваешь какой ты мyдак.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поомгите разобраться с CAN в stm32
СообщениеДобавлено: 08 май 2012, 00:01 
Заглядывает иногда

Зарегистрирован: 22 апр 2012, 23:14
Сообщения: 53
pkm писал(а):
Кстати посмотрите примеры к вашему мк, там так и должно быть описано все.

Буду благодарна, если подскажете, где они лежат


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поомгите разобраться с CAN в stm32
СообщениеДобавлено: 08 май 2012, 00:49 
Старожил
Аватара пользователя

Зарегистрирован: 14 фев 2010, 11:46
Сообщения: 299
http://www.st.com/internet/mcu/product/221020.jsp
раздел Design support
внизу Firmware
качаем STM32F10x standard peripheral library
и прочие, поможет для обучения.

_________________
Американский форум: задал вопрос - получил ответ.
Израильский форум: задал вопрос - получил вопрос.
Русский форум: задал вопрос и потом долго выслушиваешь какой ты мyдак.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поомгите разобраться с CAN в stm32
СообщениеДобавлено: 08 май 2012, 11:43 
Заглядывает иногда

Зарегистрирован: 22 апр 2012, 23:14
Сообщения: 53
Банальная невнимательность
void USB_LP_CAN1_RX0_IRQHandler (void)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поомгите разобраться с CAN в stm32
СообщениеДобавлено: 10 май 2012, 17:43 
Заглядывает иногда

Зарегистрирован: 22 апр 2012, 23:14
Сообщения: 53
Подскажите, пожалуйста кто знает по фильтрам в CAN.

Можно ли с помощью фильтров, отсечь определенный диапазон ID.
1.Допустим устройство поддерживает ID от 0 до 125. Можно ли как то настроить фильтры, чтобы устройство принимало только сообщения с идентификаторами от 0 до 125? Как это реализовать?
2.Можно ли настроить фильтры так, чтобы они принимали только определенные номера ID (не по порядку штук 1000 разных ID)? Если можно, то как это сделать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поомгите разобраться с CAN в stm32
СообщениеДобавлено: 19 июл 2012, 10:37 
Здравствуйте!

Зарегистрирован: 19 июл 2012, 09:50
Сообщения: 3
Здраствуйте!Извините, что задаю вопрос в чужой теме, постеснялся создавать новую с аналогичным названием. Мучаю CAN в STM32F4Diskovery. Скачал примеры и StdPeriph_Lib для F4 c cайта ST, там есть проекты для тестирования CAN в режиме LoopBack и для сетевого режима. Так вот, в режиме Loop пакет проходит, в режиме Normal - глухо, что для связи Tx(CAN2)-Rx(CAN2), что для Tx(CAN2)-Rx(CAN1). Соответствующие ноги соединяю просто перемычками. Цеплял параллельно еще ногу и настраивал на нее прерывание - получается, что Tx дергается во время посылки порядка 150 раз (2 байта данных, stdID), однако ф-ция CAN_TransmitStatus возвращает 2. т.е. CAN_TxStatus_Pending(ожидание). Получается, GPIO не так настроен, но сделано все по примеру, для F1xx аналогичные примеры смотрел, но там по-другому, ф-ции GPIO_PinRemapConfig, поля GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;(для Rx). и GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;(для Tx), а также включение RCC_APB2Periph_AFIO сбивают с толку, в F4 такого нет. Вообще складывается впечатление, что найти описание по регистрам конечного автомата CAN (как и другой периферии кроме GPIO для F1xx) нереально, даташит - чисто обзорный, в библиотеке тайный смысл их функций тоже объяснить не потрудились. В общем утираю слезу и шлю сообществу многострадальный main с верой в добрых профи.


Вложения:
main.c [13.2 Кб]
Скачиваний: 540
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Поомгите разобраться с CAN в stm32
СообщениеДобавлено: 25 июл 2012, 11:46 
Здравствуйте!

Зарегистрирован: 19 июл 2012, 09:50
Сообщения: 3
Спасибо за понимание, сочуствие и шквал умных профессиональных мнений, которые в ответы не вылились, скорее всего, по объективным причинам и моего блага ради. Нашел детальное описание регистров и модулей в целом, зовется STM32F4xx Reference Manual - это для новичков типа, которые после всяких AVRов тычутся в даташит, а там фига. После анализа ошибок, возвращаемых CAN модулем при различных раскладах, выявлена причина - необходимость полной связи (полным дуплексом это не назовешь), т.е. объединения Rx1 Tx1 Rx2 Tx2 в один провод (при переходе на реальную сеть это должно делаться через спец. ИМС типа SN65HVD230), а чтобы Tx1 и Tx2 не пожгли друг друга, настроил их на OD вместо PP. Тогда связь между CAN1 и CAN2 заработала. Вывод: CAN как USART не потестишь просто "эхом", лучше сразу собирать все по уму.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB