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

 
 
> Помогите разобраться с CANом в stm32
batisto4ka
сообщение May 7 2012, 08:13
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 89
Регистрация: 3-01-11
Пользователь №: 61 997



Помогите, опжалуйста, разобраться с CANом для stm32.

Постановка задачи следующая. Есть отладочная плата sk-mstm32f107 и самодельная плата на основе stm32f103vet. Роль первой платы - мастер, второй- слэйв. Пробую на основе исходников библиотеки StdPeriphLib написать программку, которая просто передаст хоть что-то на вторую платку. Не получается.
Согласно документации на отладочную плату на stm32f107:
CAN_TX1=GPIOD_1;
CAN_RX1=GPIOD_0;
Плата слэйва на stm32f103vet:
CAN_TX=GPIOA_12;
CAN_RX=GPIOA_11;
Прилагаю файлы 2 проектов с настройками CANов. Подскажите, что я не так делаю и почему не срабатывает прерывание у слэйва по получению данных.
P.S.(edited)
Внесла исправления. Добавила в функцию Init_GPIO_CAN проекта для мастера stm32f107 ремап:
Код
GPIO_PinRemapConfig(GPIO_Remap2_CAN1, ENABLE);

Но все равно прерывания по получению не срабатывают.

Сообщение отредактировал batisto4ka - May 7 2012, 10:30
Прикрепленные файлы
Прикрепленный файл  CAN_Testing.rar ( 49.4 килобайт ) Кол-во скачиваний: 65
 
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
lead_seller
сообщение May 7 2012, 12:16
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 27-10-08
Пользователь №: 41 225



CODE

void CAN_Initialization (uint16_t speed)
{
CAN_InitTypeDef CAN_InitStructure;
CAN_FilterInitTypeDef CAN_FilterInitStructure;



CAN_DBGFreeze(CAN1,DISABLE);
CAN_DBGFreeze(CAN2,DISABLE);

CAN_DeInit(CAN1);
CAN_DeInit(CAN2);

CAN_InitStructure.CAN_TTCM = DISABLE;
CAN_InitStructure.CAN_ABOM = ENABLE;
CAN_InitStructure.CAN_AWUM = DISABLE;
CAN_InitStructure.CAN_NART = DISABLE;
CAN_InitStructure.CAN_RFLM = DISABLE;
CAN_InitStructure.CAN_TXFP = ENABLE;
CAN_InitStructure.CAN_Mode = CAN_Mode_Normal;
CAN_InitStructure.CAN_SJW = CAN_SJW_1tq;
CAN_InitStructure.CAN_BS1 = CAN_BS1_16tq;
CAN_InitStructure.CAN_BS2 = CAN_BS2_8tq;

switch (speed)
{
case 1000: CAN_InitStructure.CAN_Prescaler =1; break; //1Mb
case 500: CAN_InitStructure.CAN_Prescaler =1; break; //500 kB
case 250: CAN_InitStructure.CAN_Prescaler =2; break; //250 kB
case 125: CAN_InitStructure.CAN_Prescaler =4; break; //125 kB
case 100: CAN_InitStructure.CAN_Prescaler =6; break; //100 kB
case 50: CAN_InitStructure.CAN_Prescaler =12; break; //50 kB
case 20: CAN_InitStructure.CAN_Prescaler =40; break; //20 kB
case 10: CAN_InitStructure.CAN_Prescaler =62; break; //10 kB
default: CAN_InitStructure.CAN_Prescaler =144; break;
}

CAN_DBGFreeze(CAN1,DISABLE);
CAN_DBGFreeze(CAN2,DISABLE);

CAN_Start(UP);
CAN_Start(DOWN);

CAN_Init(CAN1, &CAN_InitStructure);
CAN_Init(CAN2, &CAN_InitStructure);

//Ôèëüòð âåðõíåãî CAN
CAN_FilterInitStructure.CAN_FilterNumber = 1;
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);



//CAN_FilterInitStructure.CAN_FilterIdHigh =0x2460;
CAN_FilterInitStructure.CAN_FilterNumber = 15;
CAN_FilterInit(&CAN_FilterInitStructure);

}


Вот пример моей реализации настройки CAN для stm32f105. Естественно перед этим, модулю отданы соответствующие выводы, и сделаны необходимые ремапы
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- batisto4ka   Помогите разобраться с CANом в stm32   May 7 2012, 08:13
- - aba   Стандартной библиотекой не пользовался, сказать пр...   May 7 2012, 09:47
|- - batisto4ka   Цитата(aba @ May 7 2012, 13:47) Стандартн...   May 7 2012, 11:06
- - lead_seller   1. Неплохо было бы увидеть принципиальные схемы об...   May 7 2012, 11:55
|- - batisto4ka   Вопрос решен. Связь между платами утановлена. Проб...   May 7 2012, 12:44
|- - batisto4ka   Банальная невнимательность void USB_LP_CAN1_RX0_IR...   May 10 2012, 06:08
|- - batisto4ka   Подскажите, пожалуйста кто знает по фильтрам в CAN...   May 10 2012, 12:35
|- - vptr   Цитата(batisto4ka @ May 10 2012, 15:35) П...   May 11 2012, 09:18
|- - Danis   Здравствуйте, коллеги! На STM32F2 возникли за...   May 19 2012, 20:01
|- - PoReX   Да, кстати, если используется CAN2, то эти дефайны...   May 28 2012, 07:08
|- - Danis   Цитата(PoReX @ May 28 2012, 10:08) Да, кс...   May 28 2012, 07:51
|- - PoReX   Цитата(Danis @ May 28 2012, 11:51) Пример...   May 28 2012, 08:09
- - aba   это моя инициализация CANа, правда для STM32F2xx ...   May 7 2012, 11:56
- - PoReX   Цитата(Danis @ May 20 2012, 00:01) Соедин...   May 28 2012, 05:38
- - Danis   Цитата(PoReX @ May 28 2012, 08:38) Для на...   May 28 2012, 06:21


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

 


RSS Текстовая версия Сейчас: 30th July 2025 - 07:15
Рейтинг@Mail.ru


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