Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Пример использования библиотечных функций
Ниже приведен текст настройки модуля 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 ); //перенастройка одного буфера
}
|