serg_vega писал(а): ↑15 июл 2021, 14:56
Вот я взял проект из папочки NIIET_Examples/can, заменил в нем ноги на B14 - CAN0_TX, B15 - CAN0_RX; F14 - CAN1_TX, F15 - CAN1_RX, добавил
NT_CAN->CAN_Node[0].NPCR=1<<CAN_NPCR_LBM_Pos; // Loop back mode
NT_CAN->CAN_Node[1].NPCR=1<<CAN_NPCR_LBM_Pos; // Loop back mode,
так как на плате вектора только один CAN, скомпилировал и.... не работает. Просто не входит в прерывания по CAN. Что я делаю не так?!!!
Ну да, LoolBack тоже надо включать было до
// CAN0, CAN1 is connected with the bus, node's interrupts are enable
Ну почему при отладке программ с CAN необходимо все время плясать танцы с бубном!!!! Самые популярные сообщения:
1. Could not stop кортекс-M device! Please check the JTAG cable!
2. Error: Flash download failed! Target DLL has been cancelled!
3. Cannot access target. Shutting down debug session.
Единственный возможный вариант для входа в отладку - Load со снятыми галками Reset and Run. И после этого Debug.
На вопрос почему не цепляется к камню Jet Link ответа до сих пор нет!!! Два месяца прошло!!!
С другого CAN просто передаем три сообщения по 8 байт поле данных. Я правильно понимаю: первое сообщение попадет 8 объект 7, второе в объект 8, третье в объект 9. В отладке же я вижу обратный порядок записи принятых сообщений: первое попадает в 9 объект, второе в 8-ой и третье - в 7-ой. Прерывание не возникает!!!! ЧТО НЕ ТАК?!!!!
С другого CAN просто передаем три сообщения по 8 байт поле данных. Я правильно понимаю: первое сообщение попадет 8 объект 7, второе в объект 8, третье в объект 9. В отладке же я вижу обратный порядок записи принятых сообщений: первое попадает в 9 объект, второе в 8-ой и третье - в 7-ой. Прерывание не возникает!!!! ЧТО НЕ ТАК?!!!!
А вот что не так... Все по Оруэллу, то есть наоборот. Для приема нужно разрешить прерывания 0x01 << CAN_MOIPR_TXINP_Pos, а не CAN_MOIPR_RXINP_Pos, странная терминология...
Ну вот я принял три пакета по CAN, вижу их в регистрах, а что нужно сделать дальше, чтобы принять следующие три пакета? Флаг NEWDAT я очистил, данные считал. И?
Очень бы хотелось увидеть эталонный пример от производителя для работы CAN с приемным FIFO. Например. Мне нужно принимать групповое сообщение, состоящее, допустим из N=3 CAN пакетов с общим ID. Задаю Базовым объект №6. Привязываю его к нулевому узлу CAN. Делаю объекты с 7 по 9 вспомогательными. MOFGPR[7].BOT=7; TOP=9; CUR=7; SEL=7. Прерывание - OVIE. Если смотреть в отладчике в таком режиме (по прерыванию OVIE), то пакеты приходят по три, только порядок их почему-то обратный, то есть пакет№1 оказывается в 9-ой ячейке, пакет №2 в 8-ой, а а №3 в седьмой. Ну и ладно. Но если поставить точку останова после передачи первого пакета, затем второго и т.п., то порядок в приемном ФИФО изменится. Первый пакет окажется в 7-ой ячейке, а №3 - в девятой. При отладке в регистре MOSTAT (было замечено при полном отсутствии повторного приема) возникают флаги RXPND и TXPND, NEWDAT, MSGVAL в 7-ом и 8-ом объектах, а в 9-ом возникают RXPND, TXPND - НЕ ВОЗНИКАЕТ, NEWDAT и MSGVAL - это понятно, но MSGLST и TXEN1 - ОТКУДА!!!!. Почему сбрасывается DIR?!!! Пробуем сбрасывать NEWDAT, как написано на стр 179 РП. И получаем ошибки. Опять же NEWDAT нужно сбросить где? (в базовом, во вспомогательных, во всех)? RXPND сбрасывать или нет?!! Единственное упоминание об этом на стр 274 РП - "Бит должен сбрасываться программно". Я его сбрасываю - в окне отладчика ноль эффекта. RXEN устанавливать или нет? Я его устанавливаю - в окне отладчика ноль эффекта. MSGVAL нужно устанавливать или нет? В каких объектах (базовом, вспомогательном)? Я устанавливаю....
Качество документации и примеров ниже плинтуса в подвальном помещении!!
Давно это было, как модуль работает сейчас подробностей не помню, но при тестировании МК на опытной партии сделали вот такой код.
Вроде пример стабильно работал. Может что-то полезное для себя увидите.
Пример делали для МК 035.
А прямо в первом же примере расчета скорости 1Мбит/сек нет случайно очередной "НЕТОЧНОСТИ"? Расчет ведется для Fin= 100МГц, откуда в финальной скорости берется 200МГц?
Чем дальше в лес, тем толще партизаны... Проверил "расчет" скорости для 256КБит/сек от НИИЭТ. Да какой первокурсник его делал?!!!
1/256000= 3.9 мкс, а не 4 мкс!!!! Скорость в примере будет 250КБит/сек а не заявленные 256!!! Сколько байт в одном КБайте: 1000 или 1024?