Требуется помощь в реализации CAN сети . TI LM3S9B96

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Требуется помощь в реализации CAN сети . TI LM3S9B96

Сообщение Chip115 »

Всем привет! Пытаюсь заставить работать CAN 0 , но пока все четно ((
Да и не совсем пока я разобрался с stellarisware. помогите осилить )
Как я понимаю, надо юзасть can.c и can.h из driverlib.
Вот такие ф-ции там есть

Код: Выделить всё

//*****************************************************************************
extern void CANBitTimingGet(unsigned long ulBase, tCANBitClkParms *pClkParms);
extern void CANBitTimingSet(unsigned long ulBase, tCANBitClkParms *pClkParms);
extern unsigned long CANBitRateSet(unsigned long ulBase,
                                   unsigned long ulSourceClock,
                                   unsigned long ulBitRate);
extern void CANDisable(unsigned long ulBase);
extern void CANEnable(unsigned long ulBase);
extern tBoolean CANErrCntrGet(unsigned long ulBase, unsigned long *pulRxCount,
                              unsigned long *pulTxCount);
extern void CANInit(unsigned long ulBase);
extern void CANIntClear(unsigned long ulBase, unsigned long ulIntClr);
extern void CANIntDisable(unsigned long ulBase, unsigned long ulIntFlags);
extern void CANIntEnable(unsigned long ulBase, unsigned long ulIntFlags);
extern void CANIntRegister(unsigned long ulBase, void (*pfnHandler)(void));
extern unsigned long CANIntStatus(unsigned long ulBase,
                                  tCANIntStsReg eIntStsReg);
extern void CANIntUnregister(unsigned long ulBase);
extern void CANMessageClear(unsigned long ulBase, unsigned long ulObjID);
extern void CANMessageGet(unsigned long ulBase, unsigned long ulObjID,
                          tCANMsgObject *pMsgObject, tBoolean bClrPendingInt);
extern void CANMessageSet(unsigned long ulBase, unsigned long ulObjID,
                          tCANMsgObject *pMsgObject, tMsgObjType eMsgType);
extern tBoolean CANRetryGet(unsigned long ulBase);
extern void CANRetrySet(unsigned long ulBase, tBoolean bAutoRetry);
extern unsigned long CANStatusGet(unsigned long ulBase, tCANStsReg eStatusReg);
Хочу просто передать сообщение не важнно какое и не важно с каким идентификатором. Просто для начала хочу понять как эта штука работает. А саму передачу буду наблюдать по осциллографу.
Я так думаю, что вначале юзаются эти функции

Код: Выделить всё

extern void CANEnable(unsigned long ulBase);
extern void CANInit(unsigned long ulBase);
А как быть с передачей сообщения? как понимаю, надо юзать эту функцию CANMessageSet, но что то до меня туго доходит
Помогите разобраться. Может у кого есть пример для этого МК?

Вот в файле на основании примера из IAR что то написал. Не работает (( Не могу понять что не так ((
Помогите разобраться ))
Вложения
CAN_Tmp.cpp
CAN_Tmp
(11.92 КБ) 186 скачиваний
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Реклама
Аватара пользователя
Chip115
Сверлит текстолит когтями
Сообщения: 1132
Зарегистрирован: Пт фев 16, 2007 14:18:20
Откуда: Новосибирск
Контактная информация:

Re: Требуется помощь в реализации CAN сети . TI LM3S9B96

Сообщение Chip115 »

Вот отсёк ненужные функции (уапп и прием CAN сообщения.)
Вроде бы раскурил пример для платы EK-LM3S8962. Вырезал то, что надо.
Не понимаю, почему не работает? Что я упустил? И до удаления ненужных функций не работала ((
Как я понял, пример был заточен на получение данных по CAN, потом данные изменялись и отправлялись в ответ. И так снова.
Как вообще работает машина? Посылка должна уйти при вызове функции CANMessageSet ? Не надо там как то пинать еще? Я не стал подключать прерывания. Может это как то повлияло?
Можете проверить, правильно ли я инициализировал CAN интерфейс?
Теория — это когда все известно, но ничего не работает. Практика — это когда все работает, но никто не знает почему. Мы же объединяем теорию и практику: ничего не работает… и никто не знает почему!
© Альберт Эйнштейн
Реклама
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»