Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 15.12.2015, 14:12  
Alex9797
Почётный гражданин KAZUS.RU
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,568
Сказал спасибо: 5,042
Сказали Спасибо 10,611 раз(а) в 3,604 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию Re: Кто-нибудь запустил CAN на STM32 ???

Сообщение от serb-radio Посмотреть сообщение
при старте программы TX что то отсылает, затем в цикле ничего не происходит
Скорее всего, ответ здесь:
Сообщение от mrKirill Посмотреть сообщение
Если на шине нет ни одного устройства, кроме Вашего, то в Normal Mode блок будет висеть в состоянии CAN_TxStatus_Pending.
Кану нужен хотя бы один собеседник
Реклама:
Alex9797 вне форума  
Эти 2 пользователя(ей) сказали Спасибо Alex9797 за это сообщение:
majorka65 (15.12.2015), serb-radio (15.12.2015)
Непрочитано 15.12.2015, 19:10  
serb-radio
Гражданин KAZUS.RU
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию Re: Кто-нибудь запустил CAN на STM32 ???

А если нет пока собеседника, я замкнул Rx на Tx, так ж можно, как УАРТ или неправильная аналогия?
сигнал пошел, но прерывания не работают по приему и отправке, причем даже если убрать отправку сообщения из главного цикла, все равно идет непрерывная его отправка, это нормально?
__________________
То, что нас не убивает - делает нас сильнее
serb-radio вне форума  
Непрочитано 15.12.2015, 19:23  
Alex9797
Почётный гражданин KAZUS.RU
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,568
Сказал спасибо: 5,042
Сказали Спасибо 10,611 раз(а) в 3,604 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию Re: Кто-нибудь запустил CAN на STM32 ???

Сообщение от serb-radio Посмотреть сообщение
я замкнул Rx на Tx, так ж можно, как УАРТ или неправильная аналогия?
Абсолютно неправильная.

Снова приведу чужую цитату, чтобы не повторяться:
Сообщение от mrKirill Посмотреть сообщение
Для тестирования "на столе" вполне сгодятся Loop mode, Silent mode и их комбинация.
В этих режимах наружу ничего не передается, сигнал св ыхода внутри попадает на вход. Таким образом можно отладить некоторые процедуры. Но я не люблю эти режимы, предпочитаю работать с полноценными двумя и более платами. Рекомендую.
Alex9797 вне форума  
Непрочитано 15.12.2015, 21:41  
serb-radio
Гражданин KAZUS.RU
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию Re: Кто-нибудь запустил CAN на STM32 ???

Т.е., просто, к примеру две идентичных платы одна слушает другая шлет?
__________________
То, что нас не убивает - делает нас сильнее
serb-radio вне форума  
Непрочитано 15.12.2015, 22:20  
Alex9797
Почётный гражданин KAZUS.RU
 
Аватар для Alex9797
 
Регистрация: 20.08.2010
Адрес: Днепр
Сообщений: 8,568
Сказал спасибо: 5,042
Сказали Спасибо 10,611 раз(а) в 3,604 сообщении(ях)
Alex9797 на пути к лучшему
По умолчанию Re: Кто-нибудь запустил CAN на STM32 ???

Сообщение от serb-radio Посмотреть сообщение
две идентичных платы
Ну, по поводу идентичности, платы могут быть какими угодно, лишь бы у обеих был CAN на борту.


Сообщение от serb-radio Посмотреть сообщение
одна слушает другая шлет?
Для начала, чтобы хотя бы одну отладить на передачу, второй плате не обязательно даже слушать. Вернее, ей не обязательно прислушиваться, что там ей пришло. Необходимо и достаточно выполнить следующие условия:
1. чтобы вторая плата была правильно подключена к линии связи (с соблюдением полярности)
2. чтобы на обеих платах были подключены параллельно линии терминаторы - резисторы по 120 Ом
3. Чтобы на обеих платах интерфейс CAN был настроен на одинаковую скорость.
Alex9797 вне форума  
Непрочитано 17.12.2015, 15:08  
serb-radio
Гражданин KAZUS.RU
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию Re: Кто-нибудь запустил CAN на STM32 ???

Выкладываю калькуляторы скорости и параметров регистров для конфига CAN. Может кому пригодится
Вложения:
Тип файла: rar CAN_calc.rar (302.2 Кб, 69 просмотров)
__________________
То, что нас не убивает - делает нас сильнее
serb-radio вне форума  
Сказали "Спасибо" serb-radio
Alex9797 (17.12.2015)
Непрочитано 26.01.2018, 15:12  
serb-radio
Гражданин KAZUS.RU
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию Re: Кто-нибудь запустил CAN на STM32 ???

Кто сталкивался в КАНе с J1939. Есть ли примеры для STM? Гуглил, не нашел.
Как я понял, там меняется просто формат сообщения, ID с 11 битного на 21 битный, так? дфнные как было 8 байт, так и есть.
__________________
То, что нас не убивает - делает нас сильнее

Последний раз редактировалось serb-radio; 26.01.2018 в 15:30.
serb-radio вне форума  
Непрочитано 26.01.2018, 16:29  
mike-y-k
Модератор
 
Регистрация: 04.08.2010
Адрес: Москва СЗАО
Сообщений: 11,246
Сказал спасибо: 11,165
Сказали Спасибо 3,854 раз(а) в 2,925 сообщении(ях)
mike-y-k на пути к лучшему
По умолчанию Re: Кто-нибудь запустил CAN на STM32 ???

serb-radio, для начала протокол проприетарный. А так только по имеющимся открытым описаниям и на основе анализа потока на шине. Это уже сильно больше софт для диагностики, а реализация его (к железу совсем не привязана) возможна из исходников на чем угодно. Только вот исходники опять проприетарные. Замкнутый круг однако.
Можно попробовать поискать на github, svn,… а дальше уже перетаскивать под себя.
__________________
rtfm forever должно быть основой для каждого. Альтернатива грустна, поскольку метод слепого щенка успешно работает при весьма малом числе вариантов…
mike-y-k вне форума  
Непрочитано 06.06.2018, 14:07  
serb-radio
Гражданин KAZUS.RU
 
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
serb-radio на пути к лучшему
По умолчанию Re: Кто-нибудь запустил CAN на STM32 ???

Доброго всем дня! Пытаюсь прерываться по приему CAN2. CAN1 отконфигурировал там прерывания нормально идут и на прием и на передачу. А вот с CAN2 проблема: прерывания по отправке работают, а по приему нет. Подскажите, что я делаю не так?
Конфиг:

void CAN2_TX_IRQHandler (void)
{
if (CAN_GetITStatus(CAN2,CAN_IT_TME))
{ // request completed mbx 0
CAN_ClearITPendingBit(CAN2,CAN_IT_TME);
led0_high;delay_ms(1);led0_low;delay_ms(1);
}
return;
}

void CAN2_RX0_IRQHandler (void)
{
led1_high;delay_ms(10);led1_low;delay_ms(10);

if (CAN_GetITStatus(CAN2,CAN_IT_FMP0))
{ // message pending
CAN_ClearITPendingBit(CAN2,CAN_IT_FF0);
CAN_Receive(CAN2,0,&can2RxMessage); // read the message

can1_transmit (can1RxMessage.StdId,can2RxMessage.DLC,can2RxMessa ge.Data );
}

return;
}

void CAN2_config(void)
{
CAN_InitTypeDef CAN_InitStructure;
CAN_FilterInitTypeDef CAN_FilterInitStructure;
GPIO_InitTypeDef GPIO_InitStructure;

//Tx
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13; //PB13=Tx;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; // Alt Function - Push Pull
GPIO_Init(GPIOB, &GPIO_InitStructure);
//Rx
GPIO_InitStructure.GPIO_Pin=GPIO_Pin_12; //PB12=Rx;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //
GPIO_Init(GPIOB, &GPIO_InitStructure);

/* CAN2 Periph clock enable */
RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN2, ENABLE);

// CAN_InitStructure.CAN_TTCM = DISABLE;
CAN_InitStructure.CAN_ABOM = ENABLE;
CAN_InitStructure.CAN_ABOM = DISABLE;
CAN_InitStructure.CAN_AWUM = DISABLE;
CAN_InitStructure.CAN_NART = DISABLE;
CAN_InitStructure.CAN_RFLM = DISABLE;
CAN_InitStructure.CAN_TXFP = DISABLE;
CAN_InitStructure.CAN_Mode = CAN_Mode_Normal;

// Fahb=24Mhz Baud=500kbit/s
CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;
CAN_InitStructure.CAN_BS1 = CAN_BS1_13tq;
CAN_InitStructure.CAN_BS2 = CAN_BS2_2tq;
CAN_InitStructure.CAN_Prescaler = 3;

CAN_Init(CAN2, &CAN_InitStructure);

CAN_FilterInitStructure.CAN_FilterNumber = 0;
CAN_FilterInitStructure.CAN_FilterMode = CAN_FilterMode_IdMask;
CAN_FilterInitStructure.CAN_FilterScale = CAN_FilterScale_32bit;
CAN_FilterInitStructure.CAN_FilterIdHigh = 0x0000;
CAN_FilterInitStructure.CAN_FilterIdLow = 0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdHigh = 0x0000;
CAN_FilterInitStructure.CAN_FilterMaskIdLow = 0x0000;
CAN_FilterInitStructure.CAN_FilterFIFOAssignment = 0;
CAN_FilterInitStructure.CAN_FilterActivation = ENABLE;
CAN_FilterInit(&CAN_FilterInitStructure);

can2TxMessage.StdId = 0x321;
can2TxMessage.ExtId = 0x00;
can2TxMessage.RTR = CAN_RTR_DATA;
can2TxMessage.IDE = CAN_ID_STD;
can2TxMessage.DLC = 8;

CAN_ITConfig(CAN2, CAN_IT_FMP0, ENABLE);
CAN_ITConfig(CAN2, CAN_IT_FMP1, ENABLE);
CAN_ITConfig(CAN2, CAN_IT_TME, ENABLE);

NVIC_EnableIRQ (CAN2_RX0_IRQn);
NVIC_SetPriority(CAN2_RX0_IRQn, 3);

NVIC_EnableIRQ (CAN2_RX1_IRQn);
NVIC_SetPriority(CAN2_RX1_IRQn, 4);


NVIC_EnableIRQ (CAN2_TX_IRQn);
NVIC_SetPriority(CAN2_TX_IRQn, 4);

return;
}
__________________
То, что нас не убивает - делает нас сильнее

Последний раз редактировалось serb-radio; 06.06.2018 в 14:22.
serb-radio вне форума  
Непрочитано 06.06.2018, 16:45  
eddy
Почётный гражданин KAZUS.RU
 
Аватар для eddy
 
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,581
Сказал спасибо: 115
Сказали Спасибо 806 раз(а) в 583 сообщении(ях)
eddy на пути к лучшему
По умолчанию Re: Кто-нибудь запустил CAN на STM32 ???

Сообщение от serb-radio Посмотреть сообщение
led0_high;delay_ms(1);led0_low;delay_ms(1);
Я надеюсь, это прикола ради добавлено?
Потому что целых 2миллисекунды сидеть в прерывании — это просто жесть какая-то!
// дальше не читал, т.к. без форматирования, да еще и не по-человечески, а на SPL, как-то в глазах рябит.

P.S. Блин, прерывание по Rx вообще 20мс сидит "само в себе"! Разве такое может вообще работать?
__________________
Смерть бандеровской мразоте!
eddy вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кто нибудь имеет описание, как обращаться к KEELOQовскому регистру в PIC12F635/PIC16F636? Make_Pic Микроконтроллеры, АЦП, память и т.д 1 07.05.2010 12:53
Кто - нибудь углубленно знаком с AVR309? graham Микроконтроллеры, АЦП, память и т.д 0 15.02.2006 19:24
Кто нибудь делал вольтметр на ПИК - откликнитесь AnB Измерительное оборудование 23 20.12.2005 22:49
Люди! Кто нибудь видел в России MAX 3353, и где? walrus Информация по радиокомпонентам 1 13.09.2004 22:00


Часовой пояс GMT +4, время: 17:02.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot