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

 
 
> stm32f107vct непонятки с CAN, ч.2
kulpanov
сообщение Mar 12 2011, 15:44
Сообщение #1





Группа: Новичок
Сообщений: 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
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
garry_
сообщение Mar 14 2011, 10:02
Сообщение #2


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

Группа: Свой
Сообщений: 85
Регистрация: 22-06-04
Из: Moscow
Пользователь №: 105



У вас скорее всего по другому настроена скорость, так сам на себя работае а на другие адаптеры нет
вот рабочий вариант
CODE
/*
*  predefined baud rates (recommended by CiA)
*  16Mhz CAN clock for STM32F103xx (ARM Cortex M3 core)
*
*   Tbit = (TS1 + TS2 +3)(BRP +1)/Fcan
*   TS1, TS2, BRP - corresponding fields of CAN_BTR register
*/
#define BCI_1M_bt0    0x01
#define BCI_1M_bt1    0x14

#define BCI_800K_bt0  0x01
#define BCI_800K_bt1  0x16

#define BCI_500K_bt0  0x01
#define BCI_500K_bt1  0x1c

#define BCI_250K_bt0  0x03
#define BCI_250K_bt1  0x1c

#define BCI_125K_bt0  0x07
#define BCI_125K_bt1  0x1c

#define BCI_50K_bt0   0x13
#define BCI_50K_bt1   0x1c

#define BCI_20K_bt0   0x31
#define BCI_20K_bt1   0x1c

#define BCI_10K_bt0   0x63
#define BCI_10K_bt1   0x1c

void CANSetBaud( unsigned char bt0, _unsigned char bt1)
{    
      CAN->BTR = (u32) ( ((_u32) bt1 << 16) | ((u32) bt0) );
}


Собственно help me!
[/quote]
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 11:08
Рейтинг@Mail.ru


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