реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> CAN для LPC23xx, Не слишком понятна настройка тайминга
Polaris
сообщение Dec 28 2009, 15:39
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Добрый день!

Хотел бы использовать аппаратный CAN у LPC2368. Возникнет также необходимость эскплуатировать его в одной сети с MCP2515. Но при изучении документации возникла непонятная ситуация с настройкой тайминга. В стандарте CAN и у MCP2515 в бите упоминается четыре сегмента - Synchronization Segment, Propagation Segment, Phase Segment 1, Phase Segment 2. В документации же к LPC23xx Propagation Segment отсутствует, что создает неоднозначность в тактировании. Как быть?

Заранее спасибо
Go to the top of the page
 
+Quote Post
KRS
сообщение Dec 28 2009, 21:34
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(Polaris @ Dec 28 2009, 18:39) *
В стандарте CAN и у MCP2515 в бите упоминается четыре сегмента - Synchronization Segment, Propagation Segment, Phase Segment 1, Phase Segment 2. В документации же к LPC23xx Propagation Segment отсутствует, что создает неоднозначность в тактировании. Как быть?

Sync - он не настраивается и равен 1
а вот у LPC TSEG1 = Prop + Phase seg 1, TSEG2 = Phase Seg2
Т.е. у LPC Samling point находится Sync(=1) + TSEG1
Go to the top of the page
 
+Quote Post
Polaris
сообщение Dec 28 2009, 22:52
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Цитата(KRS @ Dec 28 2009, 23:34) *
Sync - он не настраивается и равен 1
а вот у LPC TSEG1 = Prop + Phase seg 1, TSEG2 = Phase Seg2
Т.е. у LPC Samling point находится Sync(=1) + TSEG1

Спасибо за ответ! После вдумчивого чтения документации (не только по LPC), чего-то подобного я и ожидал. Выделились smile.gif
Go to the top of the page
 
+Quote Post
KRS
сообщение Dec 29 2009, 22:34
Сообщение #4


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(Polaris @ Dec 29 2009, 01:52) *
Выделились smile.gif

Это не только у LPC такая настройка таймингов.
Кстати она логичнее - потому что настройка и phase1 и phase2 избыточна.
Go to the top of the page
 
+Quote Post
yarunt
сообщение Jan 7 2010, 17:07
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 215
Регистрация: 13-12-06
Из: fghgfh
Пользователь №: 23 476



Дабы не плодить темы ,напишу сюда. LPC2368 пытаюсь запусть прерывание на RX CAN2 не выходит, передаю пакет CAN1. Может нужно еще какие-то регистры установить?




Код
void CAN_Init( DWORD can_btr )
{
  CAN1RxDone = CAN2RxDone = FALSE;

  PCONP |= (1 << 13) | (1 << 14);    // Enable clock to the peripheral

  PINSEL0 &= ~0x00000F0F;
  PINSEL0 |= 0x0000A05;    // port0.0~1, function 0x01, port0.4~5, function 0x10

  CAN1MOD = CAN2MOD = 1;    // Reset CAN
  CAN1IER = CAN2IER = 0;    // Disable Receive Interrupt
  CAN1GSR = CAN2GSR = 0;    // Reset error counter when CANxMOD is in reset

  CAN1BTR = CAN2BTR = can_btr;
  CAN1MOD = CAN2MOD = 0;    // CAN in normal operation mode

  CAN_AFMR    =    0x00000001;    
  CAN1IER =0; CAN2IER = 0x1;

  VICIntEnClr = 0xFFFFFFFF; // Disable all Ints
  VICVectAddr23 = (unsigned long)CAN_Handler;
  VICVectCntl23 = 1;      
  VICIntEnable  = 1 << 23;  
}


--------------------
Нельзя впихнуть,невпихуемое?МОЙ БЛОГ
Go to the top of the page
 
+Quote Post
Polaris
сообщение Jan 12 2010, 18:53
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Цитата(yarunt @ Jan 7 2010, 19:07) *
Дабы не плодить темы ,напишу сюда. LPC2368 пытаюсь запусть прерывание на RX CAN2 не выходит, передаю пакет CAN1. Может нужно еще какие-то регистры установить?

У меня все заработало, завтра посмотрю и отпишу работающую конфигурацию.
Go to the top of the page
 
+Quote Post
yarunt
сообщение Jan 13 2010, 13:34
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 215
Регистрация: 13-12-06
Из: fghgfh
Пользователь №: 23 476



Цитата(Polaris @ Jan 12 2010, 21:53) *
У меня все заработало, завтра посмотрю и отпишу работающую конфигурацию.

Очень нужно, досих пор не разобрался. Уже накидал монитор регистров для правки на на этом же кристале .Кан1 передает пакет кан 2 принимает договариваясь между собой ,а вот прерывания от кан2 нет.Если просто смотреть регистры А и В то ошибок нет.


--------------------
Нельзя впихнуть,невпихуемое?МОЙ БЛОГ
Go to the top of the page
 
+Quote Post
Polaris
сообщение Jan 14 2010, 15:58
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 266
Регистрация: 8-12-05
Пользователь №: 11 964



Вот такой процесс инициализации я использую, нашел в исходниках кайла, что-то менял, но что - не особо помню уже.
void CAN_setup (uint32_t ctrl) {
CAN_TypeDef *pCAN = (ctrl == 1) ? CAN1 : CAN2; /* select CAN controller */

if (ctrl == 1) {
PCONP |= 1 << 13; /* Enable clock for CAN1 */
PINSEL0 &= 0xFFFFFFF0; /* Reset CAN1 bits */
PINSEL0 |= 0x00000005; /* Set CAN1 bits to b0101 */

*(&VICVectAddr23) = (unsigned long) CAN_ISR; /* Set interrupt vector for CAN */
*(&VICVectCntl23) = 1;

VICIntEnable = (1 << 23); /* Enable CAN Interrupt */
} else {
PCONP |= 1 << 14; /* Enable clock for CAN2 */
PINSEL0 &= 0xFFFFF0FF; /* Reset CAN2 bits */
PINSEL0 |= 0x00000A00; /* Set CAN2 bits to b1010 */

*(&VICVectAddr23) = (unsigned long) CAN_ISR; /* Set interrupt vector for CAN */
*(&VICVectCntl23) = 1;

VICIntEnable = (1 << 23); /* Enable CAN Interrupt */
}

CANAF->AFMR = 2; /* By default filter is not used */
pCAN->MOD = 1; /* Enter reset mode */
pCAN->IER = 0; /* Disable all interrupts */
pCAN->GSR = 0; /* Clear status register */
CAN_cfgBaudrate(ctrl, 250000); /* Set bit timing */
pCAN->IER = 0x0003; /* Enable Tx and Rx interrupt */
}
Go to the top of the page
 
+Quote Post
yarunt
сообщение Jan 20 2010, 09:39
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 215
Регистрация: 13-12-06
Из: fghgfh
Пользователь №: 23 476



Спасибо ,все дело было в инициализации фильтра, строка CAN2AFMR =0x00000002 исправила ситуацию.


--------------------
Нельзя впихнуть,невпихуемое?МОЙ БЛОГ
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th June 2025 - 22:18
Рейтинг@Mail.ru


Страница сгенерированна за 0.01577 секунд с 7
ELECTRONIX ©2004-2016