Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Пример использования библиотечных функций






Ниже приведен текст настройки модуля eCAN без использования расширенного режима, пояснения помещены в комментарий, а для удобства зрительного восприятия имена функций выделены.

 

#include " Common.h" // Общий файл заголовков проекта, в котором

// включается в проект eCANLib.h.

 

//##########################################################################

 

eCAN_params_REG eCAN_params; // регистры управления

extern union CANResult_REG CANResult; // регистр результата

 

//##########################################################################

// функция инициализации и перенастроек модуля CAN

 

void CanInit( void )

{

 

// регистры управления настройкой модуля eCANA и eCANB

 

eCAN_params.CANACtrlReg.all = 0x0; //сброс настроек A-подмодулЯ

eCAN_params.CANACtrlReg.bit.Ena = 1; //включить A-подмодуль

eCAN_params.CANACtrlReg.bit.IOSel = 0x0; //выбор пинов (GPIO30, 31)

eCAN_params.CANACtrlReg.bit.ID = 0x0D; //номер устройства в сети

eCAN_params.CANACtrlReg.bit.BaudRate = 0x2; //2= 500 kbps

eCAN_params.CANACtrlReg.bit.DBO = 0x0; //порЯдок передачи: 0=LSB 1st

eCAN_params.CANACtrlReg.bit.SCB = 0x0; //режим работы модулЯ 0=стандартный

eCAN_params.CANACtrlReg.bit.CPU = 0x0; //тип МК: 0=TMS320f2808

 

eCAN_params.CANBCtrlReg.all = 0x0; //сброс настроек B-подмодулЯ

 

eCAN_Init( & eCAN_params ); //инициализациЯ по умолчанию

 

// изменение номера устройства в сети

 

eCAN_params.CANACtrlReg.bit.ID = 0x0A; //номер устройства в сети

 

eCAN_ID( & eCAN_params );

 

// изменение скорости передачи данных

eCAN_params.CANACtrlReg.bit.BaudRate = 0x0; //0= 1 Mbps

 

eCAN_BaudRate( & eCAN_params );

 

// перенастройка буферов сообщений

 

//настройка PDO1: прием и передача

eCAN_params.CANMsgCtrl.bit.eCANSel = 0; //выбор подмодулЯ: 0=eCANA

eCAN_params.CANMsgCtrl.bit.MBNum = 13; //номер настраиваемого буфера

eCAN_params.CANMsgCtrl.bit.MBDir = 0; //направление работы: 0=прием

eCAN_params.CANMsgCtrl.bit.MBEn = 0; //0=активизациЯ

eCAN_params.CANMsgCtrl.bit.DLC = 8; //длина полЯ данных: 0-8 байт

eCAN_params.CANMsgCtrl.bit.RTR = 0; //удаленный запрос: 0=не требуетсЯ

 

eCAN_params.CANMsgID.bit.NodeID = 0x0A; //номер устройства в сети CAN

eCAN_params.CANMsgID.bit.FuncID = 0x04; //номер функции, 0x4 = PDO1_Rx

eCAN_params.CANMsgID.bit.AAM = 0; //режим автоответа: 0=нет ответа

eCAN_MB( & eCAN_params ); //перенастройка одного буфера

 

eCAN_params.CANMsgCtrl.bit.eCANSel = 0; //выбор подмодулЯ: 0=eCANA

eCAN_params.CANMsgCtrl.bit.MBNum = 12; //номер настраиваемого буфера

eCAN_params.CANMsgCtrl.bit.MBDir = 1; //направление работы: 1=передача

eCAN_params.CANMsgCtrl.bit.MBEn = 0; //0=активизациЯ после настройки

eCAN_params.CANMsgCtrl.bit.DLC = 8; //длина полЯ данных: 0-8 байт

eCAN_params.CANMsgCtrl.bit.RTR = 0; //удаленный запрос: 0=не требуетсЯ

 

eCAN_params.CANMsgID.bit.NodeID = 0x0A; //номер устройства в сети CAN

eCAN_params.CANMsgID.bit.FuncID = 0x03; //номер функции, 0x3 = PDO1_Tx

eCAN_params.CANMsgID.bit.AAM = 1; //режим автоответа: 0=нет ответа

 

eCAN_MB( & eCAN_params ); //перенастройка одного буфера

 

 

//настройка SDO: прием и передача

eCAN_params.CANMsgCtrl.bit.eCANSel = 0; //выбор подмодулЯ: 0=eCANA

eCAN_params.CANMsgCtrl.bit.MBNum = 5; //номер настраиваемого буфера

eCAN_params.CANMsgCtrl.bit.MBDir = 0; //направление работы: 0=прием

eCAN_params.CANMsgCtrl.bit.MBEn = 0; //0=активизациЯ после настройки

eCAN_params.CANMsgCtrl.bit.DLC = 8; //длина полЯ данных: 0-8 байт

eCAN_params.CANMsgCtrl.bit.RTR = 0; //удаленный запрос: 0=не требуетсЯ

 

eCAN_params.CANMsgID.bit.NodeID = 0x0A; //номер устройства в сети CAN

eCAN_params.CANMsgID.bit.FuncID = 0x0C; //номер функции, 0xC = SDO1_Rx

eCAN_params.CANMsgID.bit.AAM = 0; //режим автоответа: 0=нет ответа

 

eCAN_MB( & eCAN_params ); //перенастройка одного буфера

 

eCAN_params.CANMsgCtrl.bit.eCANSel = 0; //выбор подмодулЯ: 0=eCANA

eCAN_params.CANMsgCtrl.bit.MBNum = 4; //номер настраиваемого буфера

eCAN_params.CANMsgCtrl.bit.MBDir = 1; //направление работы: 0=прием

eCAN_params.CANMsgCtrl.bit.MBEn = 0; //0=активизациЯ после настройки

eCAN_params.CANMsgCtrl.bit.DLC = 8; //длина полЯ данных: 0-8 байт

eCAN_params.CANMsgCtrl.bit.RTR = 0; //удаленный запрос: 0=не требуетсЯ

 

eCAN_params.CANMsgID.bit.NodeID = 0x0A; //номер устройства в сети CAN

eCAN_params.CANMsgID.bit.FuncID = 0x0B; //номер функции, 0xB = SDO1_Tx

eCAN_params.CANMsgID.bit.AAM = 0; //режим автоответа: 0=нет ответа

 

eCAN_MB( & eCAN_params ); //перенастройка одного буфера

 

}

 






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.