|
stm32f107vct непонятки с CAN, ч.2 |
|
|
|
Mar 12 2011, 15:44
|
Группа: Новичок
Сообщений: 6
Регистрация: 6-01-11
Пользователь №: 62 053

|
Всем привет, проблема с CAN, кто сталкивался с проблемой подскажите. Модуль Barracuda на stm32f107vc от TerraElectronica. Среда Eclipse(gcc)+jLink. Пытаюсь запустить CAN. Скажу сразу для МК без ОС делаю, что то впервые. Поначалу всё шло успешно, код дернутый с их примера Web-сервера успешно передавал данные из порта в порт: CAN1->CAN2, CAN2->CAN1. Но вот дальше данные идтить отказываются! Поясню: подключаю IXXAT usb-to-can, ноль эмоций. Т.е. порты друг другу данные шлют ixxat их не видит. Сам ixxat данные послать не может. Со скоростью CAN разобрался, помогли примеры из IAR, кстати примеры из IAR также успешно пересылают данные и ixxat также их не видит. Если эту железку воткнуть в рабочую CAN сеть - вся сеть начинает глючить. Сам ixxat рабочий, пакеты от CAN-приводов и иных контроллеров ловит/передаёт изумительно. От barracuda отказывается. В terre ничего вразумительного не говорят. Сам не электронщик, и очень не хочется думать, что дело в проводах. Но если это так. подскажите как terru [CENSORED] схватить. Я думаю что примеры кода у всех одни и те-же, я их практически не правил, но если надо выложу.
Собственно help me!
Сообщение отредактировал IgorKossak - Mar 12 2011, 16:02
|
|
|
|
|
 |
Ответов
|
Mar 14 2011, 12:45
|
Группа: Новичок
Сообщений: 6
Регистрация: 6-01-11
Пользователь №: 62 053

|
to klen: собственно к вам претензий нет, я плату не у вас покупал, вам кстати за сборку тулсов для eclipse отдельное спасибо, без шуток. Вопрос к терре, на который они ответит не могут, никак, сделали железку как работает не знают, общается только сама с собой!.
> У вас скорее всего по другому настроена скорость Это то я осознал, дело действительно в частоте задания для CAN, частота не попадает ни в одну рабочую. Я уж перебор всех доступных частот CAN перебрал, IXXAT не фиксирует ничего.
Пока дозрели до перепайки кварца с 25 на 16 mhz - без толку, но мне об этом сложно говорить я совсем не железячник. Тут люди на my.st.com пишут: Carsten Schumann> With a APB of 36 MHZ you are out of the specs for the CAN controller which needs 8 MHz clock (or a multiple of that). Try using 32 MHz APB clock (= SystemClock 64MHz) and you will be fine. Кто можь подксажет как таку частоту сделать?
|
|
|
|
|
Mar 14 2011, 13:09
|
Частый гость
 
Группа: Свой
Сообщений: 85
Регистрация: 22-06-04
Из: Moscow
Пользователь №: 105

|
Кварц 8 мгц, настройки pll CODE void SysClk_Config(void) // RCC_Configuration { ErrorStatus HSEStartUpStatus; RCC_DeInit(); //set default // 1. Clocking the controller from internal HSI RC (8 MHz) RCC_HSICmd(ENABLE); while(RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESET); // wait until the HSI is ready RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
// 2. Enable ext. high frequency OSC RCC_HSEConfig(RCC_HSE_ON); // Enable HSE HSEStartUpStatus = RCC_WaitForHSEStartUp(); // Wait till HSE is ready if(HSEStartUpStatus == SUCCESS) { #ifdef VECT_TAB_FLASH // 5. Init Embedded Flash // Zero wait state, if 0 < HCLK 24 MHz // One wait state, if 24 MHz < HCLK 56 MHz // Two wait states, if 56 MHz < HCLK 72 MHz // Flash wait state FLASH_SetLatency(FLASH_Latency_2); // Flash 2 wait state FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable); //Enable Prefetch Buffer // FLASH_HalfCycleAccessCmd(FLASH_HalfCycleAccess_Disable); // Half cycle access #endif RCC_HCLKConfig(RCC_SYSCLK_Div1);// HCLK = SYSCLK = 64MHz RCC_PCLK2Config(RCC_HCLK_Div1); // PCLK2 = HCLK = 64MHz RCC_PCLK1Config(RCC_HCLK_Div4); // PCLK1 = HCLK/4 = 16MHz RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_8); // HCLK = PLLCLK = 8MHz * 8 = 64 MHz RCC_PLLCmd(ENABLE); // Enable PLL while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)// Wait till PLL is ready { } RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK); // Select PLL as system clock source while(RCC_GetSYSCLKSource() != 0x08) // Wait till PLL is used as system clock source { } } RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE); //Enable AFIO clock (PCLK2) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //Enable GPIOA clock (PCLK2) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //Enable GPIOB clock (PCLK2) RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); //Enable GPIOC clock (PCLK2) RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//Enable USART1 clock (PCLK2) RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); //Enable SPI1 clock (PCLK2)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE); //Enable USART3 clock (PCLK1) RCC_APB1PeriphClockCmd(RCC_APB1Periph_CAN, ENABLE); //Enable CAN clock (PCLK1) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); // TIM2 clock enable(PCLK1) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); // TIM3 clock enable(PCLK1) RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE); // TIM4 clock enable(PCLK1) } , настройка скорости кан выше
|
|
|
|
Сообщений в этой теме
kulpanov stm32f107vct непонятки с CAN, ч.2 Mar 12 2011, 15:44 KiLLD0WN Попробуйте CAN_H с CAN_L поменять местами... Встре... Mar 12 2011, 23:59 SasaVitebsk Работал с stm32f107 + IXXAT.
Плата самодельная. Вс... Mar 13 2011, 21:55 kulpanov Менял CAN_H и CAN_L. не то.
>Плата самодельная... Mar 14 2011, 06:02 klen 2_kulpanov
примеры для ТерраэЭлектрониковких Барра... Mar 14 2011, 07:10 garry_ У вас скорее всего по другому настроена скорость, ... Mar 14 2011, 10:02 Axel Если интересуют настрйки без использования ST-шных... Mar 14 2011, 19:12 SasaVitebsk Надёргал из проекта.
Писал на скорую руку - исполь... Mar 14 2011, 21:15 kulpanov Всем большое спасибо за помощь, в след. раз пригод... Mar 17 2011, 06:36 klen Цитата(kulpanov @ Mar 17 2011, 09:36) Все... Mar 17 2011, 07:33
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|