120 lines
4.1 KiB
C
120 lines
4.1 KiB
C
/*
|
||
* /file Motor.c
|
||
* /project EFC_Application
|
||
* Created on: 8 апр. 2024 г.
|
||
* Author: seklyuts
|
||
*
|
||
* Инициализация параметров, относящихся к CPU2 на CPU1 (моторчик)
|
||
*/
|
||
|
||
#include "pwm_init.h"
|
||
#include "sdfm.h"
|
||
#include "gpio_init.h"
|
||
#include "f2838x_sdfm_drivers.h"
|
||
#include "gpio.h"
|
||
#include <sysctl.h>
|
||
#include "frm_uart.h"
|
||
|
||
/*
|
||
* Инициализция GPIO на CPU2
|
||
*/
|
||
void GPIOMoveCpu2(void)
|
||
{
|
||
/** Перенос найденных GPIO на CPU2 */
|
||
// GPIO_setControllerCore( 21, GPIO_CORE_CPU2); ///< UART
|
||
// GPIO_setControllerCore( 57, GPIO_CORE_CPU2); ///< BISS-C_PWR_EN
|
||
GPIO_setControllerCore( 64, GPIO_CORE_CPU2); ///< Fault PWM
|
||
// GPIO_setControllerCore( 83, GPIO_CORE_CPU2); ///< RS-485
|
||
GPIO_setControllerCore( 87, GPIO_CORE_CPU2); ///<
|
||
GPIO_setControllerCore( 95, GPIO_CORE_CPU2); ///< реле силовое
|
||
// GPIO_setControllerCore( 96, GPIO_CORE_CPU2); ///< BISS-C
|
||
GPIO_setControllerCore( 97, GPIO_CORE_CPU2); ///<
|
||
// GPIO_setControllerCore(103, GPIO_CORE_CPU2); ///< BISS-C_PWR_12V/5V
|
||
|
||
/** LED's GPIO */
|
||
GPIO_setControllerCore( 6, GPIO_CORE_CPU2); ///<
|
||
GPIO_setControllerCore( 7, GPIO_CORE_CPU2); ///<
|
||
GPIO_setControllerCore(10, GPIO_CORE_CPU2); ///< цветной??
|
||
|
||
/** ???? */
|
||
GPIO_setControllerCore(55, GPIO_CORE_CPU2); ///<
|
||
GPIO_setControllerCore(56, GPIO_CORE_CPU2); ///<
|
||
GPIO_setControllerCore(57, GPIO_CORE_CPU2); ///<
|
||
}
|
||
|
||
|
||
/*
|
||
* Конфигурация пинов на CPU2
|
||
*/
|
||
void Reconnect2CPU2()
|
||
{
|
||
/**
|
||
* Перетаскиваем и все остальное ??
|
||
* ДОБАВИЛ ВСЁ!!
|
||
*/
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL0_EPWM, 1, SYSCTL_CPUSEL_CPU2 );
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL0_EPWM, 2, SYSCTL_CPUSEL_CPU2 );
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL0_EPWM, 3, SYSCTL_CPUSEL_CPU2 );
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL0_EPWM, 4, SYSCTL_CPUSEL_CPU2 );
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL0_EPWM, 5, SYSCTL_CPUSEL_CPU2 );
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL0_EPWM, 6, SYSCTL_CPUSEL_CPU2 );
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL0_EPWM, 7, SYSCTL_CPUSEL_CPU2 );
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL0_EPWM, 8, SYSCTL_CPUSEL_CPU2 );
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL0_EPWM, 9, SYSCTL_CPUSEL_CPU2 );
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL0_EPWM,10, SYSCTL_CPUSEL_CPU2 );
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL0_EPWM,11, SYSCTL_CPUSEL_CPU2 );
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL0_EPWM,12, SYSCTL_CPUSEL_CPU2 );
|
||
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL4_SD, 1, SYSCTL_CPUSEL_CPU2 );
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL4_SD, 2, SYSCTL_CPUSEL_CPU2 );
|
||
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL11_ADC, 1, SYSCTL_CPUSEL_CPU2 );
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL11_ADC, 2, SYSCTL_CPUSEL_CPU2 );
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL11_ADC, 3, SYSCTL_CPUSEL_CPU2 );
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL11_ADC, 4, SYSCTL_CPUSEL_CPU2 );
|
||
|
||
SysCtl_selectCPUForPeripheral(SYSCTL_CPUSEL5_SCI, 1, SYSCTL_CPUSEL_CPU2);
|
||
|
||
EINT; // Enable Global interrupt INTM
|
||
ERTM; // Enable Global realtime interrupt DBGM
|
||
}
|
||
|
||
/*==================================
|
||
* Инициализция MOTOR на CPU2
|
||
*=================================*/
|
||
void InitMotor(void)
|
||
{
|
||
|
||
|
||
EALLOW;
|
||
ClkCfgRegs.LOSPCP.bit.LSPCLKDIV = 2;
|
||
EDIS;
|
||
|
||
InitSysCtrl(); ///< Initialization of system resources. НЕ_МЕНЯТЬ
|
||
|
||
GpioInit();
|
||
GpioDiodInit();
|
||
SdfmGpioInit();
|
||
SdfmTypeInit();
|
||
PWMGpioInit();
|
||
FRMGPIOInit();
|
||
|
||
Reconnect2CPU2();
|
||
|
||
//
|
||
// Bring CPU2 out of reset. Wait for CPU2 to go out of reset.
|
||
//
|
||
//SysCtl_controlCPU2Reset(SYSCTL_CORE_DEACTIVE);
|
||
//while(SysCtl_isCPU2Reset() == 0x1U);
|
||
Cpu1toCpu2IpcRegs.CPU1TOCPU2IPCBOOTMODE = 0x5A00C803; //str 716
|
||
Cpu1toCpu2IpcRegs.CPU1TOCPU2IPCSET.bit.IPC0 = 1;
|
||
|
||
EALLOW;
|
||
DevCfgRegs.CPU2RESCTL.all = 0xA5A50000;
|
||
EDIS;
|
||
|
||
while(DevCfgRegs.RSTSTAT.bit.CPU2RES == 0);
|
||
|
||
|
||
}
|