Перейти к содержанию
    

Привет всем, засели за такую штуку как CAN. Пока ничего не понятно, к сожалению, но, может, кто-то знает,

как в CubeMX настроить работу CAN с готовым стеком и протоколом, это вообще возможно ? Посоветуйте, что почитать по этому поводу?

Хочу использовать stm32f105R8Tx+CAN(CANopen+CANfestival) О_О"

 

Есть еще какое-то ПО для этого случая... canopen object dictionary editor вроде..

Что это все и где взять и куда вообще начать копать?

Изменено пользователем Ekka

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Привет всем, засели за такую штуку как CAN. Пока ничего не понятно, к сожалению, но, может, кто-то знает,

CAN - закрытая секретная информация, по ней в интернете все удалено со всех серверов, все книги и даташиты по CAN под жесточайшим запретом.

Даже обсуждение CAN в открытом доступе попадает по статью ... Осторожнее с запрещенной литературой !!!

CAN - это не шутки!

 

 

 

зы. Если серьезно: как только у вас будут появляться конкретные вопросы, ответы на которые не дают интернеты и книги, то можно смело писать сюда, тогда помогут. ;)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Более того сайты со словами CAN блокируются Роскомнадзором.

Здесь конечно люди, которые тщательно скрывают свои знания, но часть тайны смогут приоткрыть.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

CAN - закрытая секретная информация, по ней в интернете все удалено со всех серверов, все книги и даташиты по CAN под жесточайшим запретом.

Даже обсуждение CAN в открытом доступе попадает по статью ...

CAN - это не шутки!

Не смешно.

Информация на https://www.can-cia.org открытого доступа к ней нет.

Чтобы получить доступ надо стать CiA Member и уплачивать ежегодные взносы. На торрентах материалов из CiA нет.

Для работы нужен софт (анализаторы протоколов). С этим беда-печаль: ixaat за невменяемое количество денег а у остальных анализаторы протоколов либо отсутствуют как класс либо рудиментарные.

 

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

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Информация на 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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для работы нужен софт (анализаторы протоколов). С этим беда-печаль: ixaat за невменяемое количество денег а у остальных анализаторы протоколов либо отсутствуют как класс либо рудиментарные.

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

 

Бюджетное железо (USB-CAN) брал тут: http://can.marathon.ru, софт в довесок у них бесплатный (под их железки).

В свое время мне этого вполне хватило самостоятельно написать даже свой CANopen slave, не говоря уже о прикручивании готовых стеков.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Н-да... сейчас понапишут...

Если по работе с 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не знаю, какова необходимость в "стандарте" CANOpen, но почитамши буквари, пришел к выводу, что мне этого не надо. Через чур усложнили.

...

Литературы и по CANopen и по CANfestival в открытом доступе - немеряно. Начните с того же Beremiz.

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

CANopen протокол обширный и весьма непростой. Я и пишу - оно ТС надо ?

 

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

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

 

 

 

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

Наверно у меня интернет неправильный.

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

CiA 302 все части

CiA 309 все части (особенно интересует 309-2)

CiA 310

CiA 312

CiA 315

CiA 445

CiA 603

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Конечно, он не дотягивает до "крутых", но мне его вполне хватило спроектировать свой CANopen slave.

А уж для прикручивания готового стека его за глаза.

 

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

На местном FTP есть много литературы по CAN, как получить туда доступ, есть соотв. тема.

 

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

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

 

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

 

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

А это требует полной документации, чтобы не платить за процедуру сертификации по много раз.

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

 

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

 

 

 

 

зы. вспомните известную пословицу: "И рыпку съесть и на %$# сесть" ...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

После чтения всего того, что тут понаписали и понапугали... Ну ладно( Пытаюсь просто сейчас с помощью 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))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ох мамулька дорогая !

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

 

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

То есть коллектив ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему может в прерывания не заходить?

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

 

 

То есть коллектив ?

Типа того: :smile3046: :smile3046: :smile3046: :smile3046: :smile3046:

:biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

 

 

Типа того: :smile3046: :smile3046: :smile3046: :smile3046: :smile3046:

:biggrin:

 

нет... скорее ТАК :crying: /I am Alone/

разрешены прерывания сейчас по приему и передаче. Все нормально, входит в прерывание по приему и передаче, НО!!!

ЕдИнОжДы... хотя отправляю в цикле же... висит в состоянии готовности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...