32-разрядные микроконтроллеры разработки АО "НИИЭТ"
Модераторы: dav, bkolbov, Alis, pip, _sva_, dav, bkolbov, Alis, pip, _sva_, dav, bkolbov, Alis, pip, _sva_
-
porsche2492
- Сообщения: 69
- Зарегистрирован: 21 янв 2018, 00:42
- Предприятие: Авиаавтоматика
- Откуда: Курск
Сообщение
porsche2492 » 01 сен 2021, 13:11
Disona писал(а): ↑01 сен 2021, 12:36
porsche2492 писал(а): ↑31 авг 2021, 20:48
Конфигурация ножек:
Код: Выделить всё
//Конфигурация пинов для модуля CAN1
GPIOH->ALTFUNCNUM1_bit.PIN14 = 3; // CAN1_TX
GPIOH->ALTFUNCNUM1_bit.PIN15 = 3; // CAN1_RX
GPIOH->ALTFUNCSET =GPIO_PIN_14 | GPIO_PIN_15;
//Конфигурация пинов для модуля CAN0
GPIOС->ALTFUNCNUM1_bit.PIN12 = 1; // CAN0_TX
GPIOС->ALTFUNCNUM1_bit.PIN13 = 1; // CAN0_RX
GPIOС->ALTFUNCSET =GPIO_PIN_12 | GPIO_PIN_13;
Здравствуйте.
Пока не очень понимаем, в чём причина, но в приведённом коде кое-что не сходится.
Вроде как выходит, что неправильно натсроен именно CAN1:
для ножек C14 и C15 номер CAN-функции - это 1, а не 3.
А вот для CAN0, вроде, всё настроено верно.
Вы не могли в своём проекте выставить C14 и C15 в "1" и проверить, не заработал ли CAN0?
Может быть, какая-то путанница с нумерациями CAN-ов?
У нас в примере MotorControlDemo сделано так:
Код: Выделить всё
#ifdef CAN_1_ENABLE
// CAN0: C12 / C13
GPIOC->ALTFUNCNUM1_bit.PIN12 = 1; // CAN0_TX
GPIOC->ALTFUNCNUM1_bit.PIN13 = 1; // CAN0_RX
GPIOC->ALTFUNCSET = GPIO_PIN_12 | GPIO_PIN_13;
#endif
#ifdef CAN_2_ENABLE
// CAN1: C14 / C15
GPIOC->ALTFUNCNUM1_bit.PIN14 = 1; // CAN1_TX
GPIOC->ALTFUNCNUM1_bit.PIN15 = 1; // CAN1_RX
GPIOC->ALTFUNCSET = GPIO_PIN_14 | GPIO_PIN_15;
#endif
В проекте проинициализировано motorcontroldemo
Вот так
Код: Выделить всё
ifdef CAN_1_ENABLE
// CAN0: C12 / C13
GPIOC->ALTFUNCNUM1_bit.PIN12 = 1; // CAN0_TX
GPIOC->ALTFUNCNUM1_bit.PIN13 = 1; // CAN0_RX
GPIOC->ALTFUNCSET = GPIO_PIN_12 | GPIO_PIN_13;
#endif
#ifdef CAN_2_ENABLE
// CAN1: H14 / H15
GPIOH->ALTFUNCNUM1_bit.PIN14 = 3; // CAN1_TX
GPIOH->ALTFUNCNUM1_bit.PIN15 = 3; // CAN1_RX
GPIOH->ALTFUNCSET = GPIO_PIN_14 | GPIO_PIN_15;
#endif
У меня работает can0 и can1 видеться в программе Unicon. Но при своей инициализации не видиться can0.
-
porsche2492
- Сообщения: 69
- Зарегистрирован: 21 янв 2018, 00:42
- Предприятие: Авиаавтоматика
- Откуда: Курск
Сообщение
porsche2492 » 01 сен 2021, 13:25
Я проинициализировал порты все правильно и с нумерацией все верно. Но не могу понять почему CAN0 не работает и какие проблемы в инициализации самого CAN.
-
Лашкевич
- Сообщения: 314
- Зарегистрирован: 13 май 2015, 13:10
- Предприятие: ООО "НПФ Вектор"
- Откуда: Москва
-
Contact:
Сообщение
Лашкевич » 01 сен 2021, 13:28
Попробуйте встроить свою инициализацию в motorcontroldemo, запустить motorcontroldemo, чтобы работал, а потом переинициализировать CAN своей инициализацией, по команде какой-то (например, через юникон). И проверьте, будет после этого работать CAN или нет. Может быть, в вашей программе что-то забыто по сравнению с motorcontroldemo. Может, тактирование не включено где-то в GPIO или в CAN, может в коде ошибка, может ножки где-то в другом месте переопределяются как-то.
Если после вызова своей инициализации сломается, можно свои строки инициализации своей подкомменчивать и найти, от какой строки всё ломается.
Способ так себе, конечно, потому что кенопен драйвер motorcontroldemo тоже будет пытаться работать, но при желании после вызова своей инициализации можно остановить вызов co_1ms_calc, чтобы он не считался, и сделать свою функцию, отправляющую что-то в CAN.
-
porsche2492
- Сообщения: 69
- Зарегистрирован: 21 янв 2018, 00:42
- Предприятие: Авиаавтоматика
- Откуда: Курск
Сообщение
porsche2492 » 01 сен 2021, 14:55
Лашкевич писал(а): ↑01 сен 2021, 13:28
Попробуйте встроить свою инициализацию в motorcontroldemo, запустить motorcontroldemo, чтобы работал, а потом переинициализировать CAN своей инициализацией, по команде какой-то (например, через юникон). И проверьте, будет после этого работать CAN или нет. Может быть, в вашей программе что-то забыто по сравнению с motorcontroldemo. Может, тактирование не включено где-то в GPIO или в CAN, может в коде ошибка, может ножки где-то в другом месте переопределяются как-то.
Если после вызова своей инициализации сломается, можно свои строки инициализации своей подкомменчивать и найти, от какой строки всё ломается.
Способ так себе, конечно, потому что кенопен драйвер motorcontroldemo тоже будет пытаться работать, но при желании после вызова своей инициализации можно остановить вызов co_1ms_calc, чтобы он не считался, и сделать свою функцию, отправляющую что-то в CAN.
Инициализацию CAN я брал не с ПО motorControlDemo я там ее не нашел.
-
Лашкевич
- Сообщения: 314
- Зарегистрирован: 13 май 2015, 13:10
- Предприятие: ООО "НПФ Вектор"
- Откуда: Москва
-
Contact:
Сообщение
Лашкевич » 01 сен 2021, 15:15
Я не предложил взять из motorcontroldemo, там она внутри библиотеки, а предложил добавить вашу в код motorcontroldemo и вызвать её после того, как CAN заработает в motorcontroldemo.
-
porsche2492
- Сообщения: 69
- Зарегистрирован: 21 янв 2018, 00:42
- Предприятие: Авиаавтоматика
- Откуда: Курск
Сообщение
porsche2492 » 01 сен 2021, 16:41
Смотрю регистр NSR в поле LEC стоит код ошибки 001.
-
serg_vega
- Сообщения: 91
- Зарегистрирован: 20 июл 2020, 15:50
- Предприятие: АО "ВНИИ "Вега"
Сообщение
serg_vega » 18 ноя 2021, 11:13
Рисуем схему на МК 1924ВК028. Самое начало. Так я и не понял про последовательность подачи питания. Стр 39 : "Необходимо соблюдать следующий порядок подачи напряжения питания: сначала подаются напряжения питания UCC1, UCC3, UCC4, затем напряжение UCC2, а затем входные напряжения низкого уровня UIL и высокого уровня UIH. "
При этом из схемы примера (1921VK028_typical_sch.pdf) скачанного здесь же эта последовательность не прослеживается!!! То есть все стабилизаторы включены без использования каких-либо ENABLE, то есть все питания подаются примерно одновременно, гарантированного порядка подачи напряжений не соблюдается. Это, получается, допустимо?
-
SanekV
- Специалист
- Сообщения: 17
- Зарегистрирован: 01 ноя 2013, 09:38
Сообщение
SanekV » 18 ноя 2021, 11:31
По ТУ:
допускается возможность одновременной подачи и снятия напряжений питания и напряжений входных сигналов.
-
serg_vega
- Сообщения: 91
- Зарегистрирован: 20 июл 2020, 15:50
- Предприятие: АО "ВНИИ "Вега"
Сообщение
serg_vega » 18 ноя 2021, 11:37
SanekV писал(а): ↑18 ноя 2021, 11:31
По ТУ:
допускается возможность одновременной подачи и снятия напряжений питания и напряжений входных сигналов.
Где взять ТУ? В РП про это ничего не сказано. Во всяком случае, поиск по ключевому слову "допускается" ничего не дал.
-
_sva_
- Специалист
- Сообщения: 208
- Зарегистрирован: 12 ноя 2009, 17:42
- Откуда: Воронеж
-
Contact:
Сообщение
_sva_ » 22 ноя 2021, 10:53
serg_vega писал(а): ↑18 ноя 2021, 11:37
SanekV писал(а): ↑18 ноя 2021, 11:31
По ТУ:
допускается возможность одновременной подачи и снятия напряжений питания и напряжений входных сигналов.
Где взять ТУ? В РП про это ничего не сказано. Во всяком случае, поиск по ключевому слову "допускается" ничего не дал.
Для получения ТУ направьте официальный запрос в наш адрес.
Пользователи онлайн
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость