Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: CANopen, CANFestival
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Ekka
Привет всем, засели за такую штуку как CAN. Пока ничего не понятно, к сожалению, но, может, кто-то знает,
как в CubeMX настроить работу CAN с готовым стеком и протоколом, это вообще возможно ? Посоветуйте, что почитать по этому поводу?
Хочу использовать stm32f105R8Tx+CAN(CANopen+CANfestival) О_О"

Есть еще какое-то ПО для этого случая... canopen object dictionary editor вроде..
Что это все и где взять и куда вообще начать копать?
Forger
Цитата(Ekka @ Nov 1 2017, 14:16) *
Привет всем, засели за такую штуку как CAN. Пока ничего не понятно, к сожалению, но, может, кто-то знает,

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



зы. Если серьезно: как только у вас будут появляться конкретные вопросы, ответы на которые не дают интернеты и книги, то можно смело писать сюда, тогда помогут. wink.gif
x893
Более того сайты со словами CAN блокируются Роскомнадзором.
Здесь конечно люди, которые тщательно скрывают свои знания, но часть тайны смогут приоткрыть.
*Leks*
Эх, старый добрый российский интернет.
_3m
Цитата(Forger @ Nov 1 2017, 15:50) *
CAN - закрытая секретная информация, по ней в интернете все удалено со всех серверов, все книги и даташиты по CAN под жесточайшим запретом.
Даже обсуждение CAN в открытом доступе попадает по статью ...
CAN - это не шутки!

Не смешно.
Информация на https://www.can-cia.org открытого доступа к ней нет.
Чтобы получить доступ надо стать CiA Member и уплачивать ежегодные взносы. На торрентах материалов из CiA нет.
Для работы нужен софт (анализаторы протоколов). С этим беда-печаль: ixaat за невменяемое количество денег а у остальных анализаторы протоколов либо отсутствуют как класс либо рудиментарные.

ТС: подумайте как следует еще раз так ли уж нужен вам CAN ?
Не можете ли вы обойтись чем нибудь открытым и стандартным эзернетом например ?

gosha-z
Цитата(_3m @ Nov 2 2017, 09:47) *
Информация на https://www.can-cia.org открытого доступа к ней нет.
Чтобы получить доступ надо стать CiA Member и уплачивать ежегодные взносы.

Цитата отсюда:
Technical documents in public status can be downloaded free of charge by CiA-members and non-members after registration
Forger
Цитата(_3m @ Nov 2 2017, 09:47) *
Для работы нужен софт (анализаторы протоколов). С этим беда-печаль: ixaat за невменяемое количество денег а у остальных анализаторы протоколов либо отсутствуют как класс либо рудиментарные.

Странно, как же тогда мне удалось все это скачать бесплатно и даже часть на русском? ... Может, у меня какой-то другой интернет, выходящий в параллельную вселенную?

Бюджетное железо (USB-CAN) брал тут: http://can.marathon.ru, софт в довесок у них бесплатный (под их железки).
В свое время мне этого вполне хватило самостоятельно написать даже свой CANopen slave, не говоря уже о прикручивании готовых стеков.
leocat
Н-да... сейчас понапишут...
Если по работе с CAN на чипах серии STM32F10x, в частности 103, то описание работы с этим "добром" очень хорошо сделал https://www.smartmode.info. Правда с использованием SPL.
Если интересно использовать микрочиповские чипы, то это есть у меня https://github.com/leocat3/open-plc/tree/ma...source/can_gate, тоже SPL
Не знаю, какова необходимость в "стандарте" CANOpen, но почитамши буквари, пришел к выводу, что мне этого не надо. Через чур усложнили. Все можно сделать намного проще, напр.: http://open-plc.blogspot.ru/2017/05/explor...f100-board.html
От CANOpen взял только стандарт на скорости да количество точек выборки / процент попадания.
Литературы и по CANopen и по CANfestival в открытом доступе - немеряно. Начните с того же Beremiz.
Для анализа физического уровня вроде тоже - трудностей не заметил. Взять тот же китайский клон Saleae.
_3m
Цитата(leocat @ Nov 2 2017, 10:17) *
Не знаю, какова необходимость в "стандарте" CANOpen, но почитамши буквари, пришел к выводу, что мне этого не надо. Через чур усложнили.
...
Литературы и по CANopen и по CANfestival в открытом доступе - немеряно. Начните с того же Beremiz.

Немеряно букварей. Когда начнете выяснять почему не работает ваша реализация lss fast scan или еще что-то из глубин стандарта обнаружите что букварей недостаточно.
CANopen протокол обширный и весьма непростой. Я и пишу - оно ТС надо ?

Цитата
Для анализа физического уровня вроде тоже - трудностей не заметил. Взять тот же китайский клон Saleae.

Нет проблем с физическим уровнем. Есть проблемы с анализом стандартных протоколов.



Цитата(Forger @ Nov 2 2017, 10:07) *
Странно, как же тогда мне удалось все это скачать бесплатно и даже часть на русском? ... Может, у меня какой-то другой интернет, выходящий в параллельную вселенную?

Наверно у меня интернет неправильный.
Скачайте-ка из "параллельной вселенной" бесплатно и на русском:
CiA 302 все части
CiA 309 все части (особенно интересует 309-2)
CiA 310
CiA 312
CiA 315
CiA 445
CiA 603
Forger
Цитата(_3m @ Nov 2 2017, 11:58) *
Нет проблем с физическим уровнем. Есть проблемы с анализом стандартных протоколов.

Чуть выше я давал ссылку на железку от отеч. производителя. У них есть бесплатный анализатор протоколов CANopen, я такой использовал в свое время. Называется CANwise или типа того.
Конечно, он не дотягивает до "крутых", но мне его вполне хватило спроектировать свой CANopen slave.
А уж для прикручивания готового стека его за глаза.

Цитата
Наверно у меня интернет неправильный.
Полагаю, что дело тут не в интернете вовсе ... biggrin.gif
На местном FTP есть много литературы по CAN, как получить туда доступ, есть соотв. тема.

Цитата
Скачайте-ка из "параллельной вселенной" бесплатно и на русском:

Существование базовых описаний на русском лишь немного упрощают вхождение в тему, но работать все равно придется с оригинально документацией - на английском.

Поэтому дело тут не "отсутствии документации", а в том, кому она нужна в таком избыточном объеме.

С другой стороны, когда делаете коммерческое изделие с CANopen, его все равно нужно сертифицировать, проходя соотв. тесты.
А это требует полной документации, чтобы не платить за процедуру сертификации по много раз.
Поэтому придется регистрироваться в CAN CiA и платить членские взносы, чтобы получить нужную документацию (кстати, это не так уж и дорого).

Ну а для "колхозников", которые городят CANopen железяки на коленках для себя или таких же "колхозных" организаций вполне хватает и того, что можно скачать в открытом доступе.




зы. вспомните известную пословицу: "И рыпку съесть и на %$# сесть" ...
Ekka
После чтения всего того, что тут понаписали и понапугали... Ну ладно( Пытаюсь просто сейчас с помощью HAL и Куба настроить КАН в режиме LoopBack,
чтобы КАН слушал сам себя. (Поправьте, если ерунда: это же значит, что на КАН получит на прием то, что сам же и отправил, так?)
Но после моей корявой настройки в прерывание упорно не заходит. Просто не заходит в прерывания, ни по приему, ни по передаче.
Не бейте, пожалуйста, за --говнокод--, только учусь. Настройка кана Кубовская. Фильтры взяты с интернета и вообще убраны. В цикле отправляю посылку.
Настройка кана:
Код
static void MX_CAN1_Init(void)
{

  hcan1.Instance = CAN1;
  hcan1.Init.Prescaler = 12;
  hcan1.Init.Mode = CAN_MODE_LOOPBACK;
  hcan1.Init.SJW = CAN_SJW_1TQ;
  hcan1.Init.BS1 = CAN_BS1_4TQ;
  hcan1.Init.BS2 = CAN_BS2_3TQ;
  hcan1.Init.TTCM = DISABLE;
  hcan1.Init.ABOM = DISABLE;
  hcan1.Init.AWUM = DISABLE;
  hcan1.Init.NART = ENABLE;
  hcan1.Init.RFLM = DISABLE;
  hcan1.Init.TXFP = DISABLE;
  if (HAL_CAN_Init(&hcan1) != HAL_OK)
  {
    Error_Handler();
  }
}


Функция отправки:
Код
void CAN_Transmit(void)
{
    hcan1.pTxMsg->StdId = 0x130;
    hcan1.pTxMsg->DLC = 8;
    hcan1.pTxMsg->Data[0] = 1;
    hcan1.pTxMsg->Data[1] = 2;
    hcan1.pTxMsg->Data[2] = 3;
    hcan1.pTxMsg->Data[3] = 4;
    hcan1.pTxMsg->Data[4] = 5;
    hcan1.pTxMsg->Data[5] = 6;
    hcan1.pTxMsg->Data[6] = 7;
    hcan1.pTxMsg->Data[7] = 8;
    HAL_CAN_Transmit(&hcan1, 10);
}


функция по приему: (надо ли вообще)
Код
void HAL_CAN_RxCpltCallback(CAN_HandleTypeDef* canHandle)
{
    CAN_ID = canHandle->pRxMsg->StdId;
    CAN_DLC = canHandle->pRxMsg->DLC;
    DATA[0] = canHandle->pRxMsg->Data[0];
    DATA[1] = canHandle->pRxMsg->Data[1];
    DATA[2] = canHandle->pRxMsg->Data[2];
    DATA[3] = canHandle->pRxMsg->Data[3];
    DATA[4] = canHandle->pRxMsg->Data[4];
    DATA[5] = canHandle->pRxMsg->Data[5];
    DATA[6] = canHandle->pRxMsg->Data[6];
    DATA[7] = canHandle->pRxMsg->Data[7];
    HAL_CAN_Receive_IT(&hcan1, CAN_FIFO0);
}


мэйн:
Код
int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_CAN1_Init();
  hcan1.pTxMsg = &canTxMessage;
  hcan1.pRxMsg = &canRxMessage;
  /*CAN_FilterConfTypeDef canFilterConfig;
  canFilterConfig.FilterNumber = 0;
  canFilterConfig.FilterMode = CAN_FILTERMODE_IDLIST;
  canFilterConfig.FilterScale = CAN_FILTERSCALE_16BIT;
  canFilterConfig.FilterIdHigh = 0x53A<<5;
  canFilterConfig.FilterIdLow = 0x53D<<5;
  canFilterConfig.FilterMaskIdHigh = 0x54D<<5;
  canFilterConfig.FilterMaskIdLow = 0x54F<<5;
  canFilterConfig.FilterFIFOAssignment = 0;
  canFilterConfig.FilterActivation = ENABLE;
  canFilterConfig.BankNumber = 1;
  HAL_CAN_ConfigFilter(&hcan1, &canFilterConfig);
  canFilterConfig.FilterNumber = 1;
  canFilterConfig.FilterIdHigh = 0xA<<5;
  canFilterConfig.FilterIdLow = 0x33<<5;
  canFilterConfig.FilterMaskIdHigh = 0x44<<5;
  canFilterConfig.FilterMaskIdLow = 0x55<<5;
  HAL_CAN_ConfigFilter(&hcan1, &canFilterConfig);*/
  HAL_CAN_Receive_IT(&hcan1, CAN_FIFO0);
  while (1)
  {
     CAN_Transmit();
     HAL_Delay(200);
   }
}


Почему может в прерывания не заходить? (void CAN1_TX_IRQHandler(void) и void CAN1_RX0_IRQHandler(void))
x893
Ох мамулька дорогая !
А почему надо сразу что то строчить и генерить, а не посмотреть любой из 100500 открытых проектов (с исходниками Карл !) ?

Цитата
Привет всем, засели за такую штуку как CAN.

То есть коллектив ?
Ekka
Как раз смотрю
Forger
Цитата(Ekka @ Nov 2 2017, 14:37) *
Почему может в прерывания не заходить?

Потому что соотв. прерывания не были разрешены или/и не реализованы соотв. векторы прерываний.


Цитата(x893 @ Nov 2 2017, 15:07) *
То есть коллектив ?

Типа того: smile3046.gif smile3046.gif smile3046.gif smile3046.gif smile3046.gif
biggrin.gif
Ekka
Цитата(Forger @ Nov 2 2017, 12:49) *
Потому что соотв. прерывания не были разрешены или/и не реализованы соотв. векторы прерываний.



Типа того: smile3046.gif smile3046.gif smile3046.gif smile3046.gif smile3046.gif
biggrin.gif


нет... скорее ТАК crying.gif /I am Alone/
разрешены прерывания сейчас по приему и передаче. Все нормально, входит в прерывание по приему и передаче, НО!!!
ЕдИнОжДы... хотя отправляю в цикле же... висит в состоянии готовности.
Forger
Цитата(Ekka @ Nov 2 2017, 17:08) *
висит в состоянии готовности.

Подобные примитивные и не единожды обсосанные вопросы лучше постите вот тут, эффективнее будет.
А в этом разделе все принято обсуждать более серьезные вещи, нежели чужие ясельные костыли в HAL-о коде.
Ekka
Хорошо, перенесите тему)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.