ECAT_Slave_in_ПЧ2П_c402  0.8
Реализация EtherCAT Slave для CM TMS320F28388D
Файл sysctl.h
#include <stdint.h>
#include <stdbool.h>
#include "inc/hw_memmap.h"
#include "inc/hw_nmi.h"
#include "inc/hw_sysctl.h"
#include "inc/hw_types.h"
#include "inc/hw_wwd.h"
#include "debug.h"
#include "cpu.h"
Граф включаемых заголовочных файлов для sysctl.h:
Граф файлов, в которые включается этот файл:

См. исходные тексты.

Макросы

#define SYSCTL_WD_CHKBITS   0x0028U
 
#define SYSCTL_WD_ENRSTKEY   0x0055U
 
#define SYSCTL_WD_RSTKEY   0x00AAU
 
#define SYSCTL_PERIPH_REG_M   0x001FU
 
#define SYSCTL_PERIPH_REG_S   0x0000U
 
#define SYSCTL_PERIPH_BIT_M   0x1F00U
 
#define SYSCTL_PERIPH_BIT_S   0x0008U
 
#define SYSCTL_CMNMIFLGCLR_KEY   0x5674U
 
#define SYSCTL_CMNMIFLGFRC_KEY   0x2732U
 
#define SYSCTL_CMNMICFG_KEY   0x6789U
 
#define SYSCTL_CMNMIWDPRD_KEY   0x9238U
 
#define SYSCTL_CMSYSCTL_KEY   0x5634U
 
#define SYSCTL_WWD_KEY   0x1234U
 
#define SYSCTL_ETHERCAT_I2C_LOOPBACK   0x1U
 
#define SYSCTL_NMI_GLOBAL   0x1U
 
#define SYSCTL_NMI_NMIINT   0x0001U
 Non-maskable interrupt. Подробнее...
 
#define SYSCTL_NMI_CLOCKFAIL   0x0002U
 Clock Failure. Подробнее...
 
#define SYSCTL_NMI_MEMUNCERR   0x0004U
 RAM/ROM Uncorrectable error. Подробнее...
 
#define SYSCTL_NMI_FLUNCERR   0x0008U
 Uncorrectable Flash error. Подробнее...
 
#define SYSCTL_NMI_MCANUNCERR   0x0010U
 MCAN Uncorrectable Error. Подробнее...
 
#define SYSCTL_NMI_WWDNMI   0x0020U
 CM Windowed Watchdog. Подробнее...
 
#define SYSCTL_NMI_ECATNMI   0x0040U
 EtherCAT reset out. Подробнее...
 
#define SYSCTL_CAUSE_PORESETN   0x00000001U
 Power-on reset. Подробнее...
 
#define SYSCTL_CAUSE_XRSN   0x00000002U
 External reset pin. Подробнее...
 
#define SYSCTL_CAUSE_CPU1WDRSN   0x00000004U
 CPU1 Watchdog reset. Подробнее...
 
#define SYSCTL_CAUSE_CPU1NMIWDRSN   0x00000008U
 CPU1 NMI WD reset. Подробнее...
 
#define SYSCTL_CAUSE_CPU1SYSRSN   0x00000010U
 CPU1 System reset. Подробнее...
 
#define SYSCTL_CAUSE_CPU1SCCRESETN   0x00000020U
 CPU1 SCCRESETn reset. Подробнее...
 
#define SYSCTL_CAUSE_ECAT_RESET_OUT   0x00000040U
 ECAT Reset. Подробнее...
 
#define SYSCTL_CAUSE_CPU1SIMRESET_CPURSN   0x00000080U
 SIMRESET_CPURSn-CPU1. Подробнее...
 
#define SYSCTL_CAUSE_CMRSTCTLRESETREQ   0x00000100U
 Reset req from CM. Подробнее...
 
#define SYSCTL_CAUSE_CMVECTRESETN   0x00010000U
 CM Vector Reset. Подробнее...
 
#define SYSCTL_CAUSE_CMSYSRESETREQ   0x00020000U
 CM System reset. Подробнее...
 
#define SYSCTL_CAUSE_CMNMIWDRSTN   0x00040000U
 CM NMI WD Reset. Подробнее...
 
#define SYSCTL_CAUSE_CMEOLRESETN   0x00080000U
 Logic reset. Подробнее...
 
#define SYSCTL_CMECATCTL_LOCK   0x1U
 block writes to CM-Ethercat control Reg Подробнее...
 
#define CM_CLK_FREQ   125000000U
 
#define SYSCTL_DELAY
 

Перечисления

enum  SysCtl_PeripheralPCLOCKCR {
  SYSCTL_PERIPH_CLK_UART0 = 0x0000U , SYSCTL_PERIPH_CLK_SSI0 = 0x0400U , SYSCTL_PERIPH_CLK_I2C0 = 0x0800U , SYSCTL_PERIPH_CLK_USB = 0x0C00U ,
  SYSCTL_PERIPH_CLK_ENET = 0x0001U , SYSCTL_PERIPH_CLK_ECAT = 0x0201U , SYSCTL_PERIPH_CLK_CAN_A = 0x0401U , SYSCTL_PERIPH_CLK_CAN_B = 0x0501U ,
  SYSCTL_PERIPH_CLK_MCAN_A = 0x0801U , SYSCTL_PERIPH_CLK_TIMER0 = 0x0002U , SYSCTL_PERIPH_CLK_TIMER1 = 0x0102U , SYSCTL_PERIPH_CLK_TIMER2 = 0x0202U ,
  SYSCTL_PERIPH_CLK_UDMA = 0x0402U , SYSCTL_PERIPH_CLK_AESIP = 0x0602U , SYSCTL_PERIPH_CLK_GCRC = 0x0802U
}
 
enum  SysCtl_PeripheralSOFTPRES {
  SYSCTL_PERIPH_RES_UART0 = 0x0000U , SYSCTL_PERIPH_RES_SSI0 = 0x0400U , SYSCTL_PERIPH_RES_I2C0 = 0x0800U , SYSCTL_PERIPH_RES_USB = 0x0C00U ,
  SYSCTL_PERIPH_RES_ENET = 0x0001U , SYSCTL_PERIPH_RES_ECAT = 0x0201U , SYSCTL_PERIPH_RES_CAN_A = 0x0401U , SYSCTL_PERIPH_RES_CAN_B = 0x0501U ,
  SYSCTL_PERIPH_RES_MCAN_A = 0x0801U , SYSCTL_PERIPH_RES_AESIP = 0x0602U , SYSCTL_PERIPH_RES_GCRC = 0x0802U
}
 
enum  SysCtl_PeripheralCMCLKSTOPACK { SYSCTL_PERIPH_ACK_MCAN_A = 0x0800U }
 
enum  SysCtl_PeripheralCMCLKSTOPREQ { SYSCTL_PERIPH_REQ_MCAN_A = 0x0801U }
 
enum  SysCtl_WDPredivider {
  SYSCTL_WD_PREDIV_2 = 0x800U , SYSCTL_WD_PREDIV_4 = 0x900U , SYSCTL_WD_PREDIV_8 = 0xA00U , SYSCTL_WD_PREDIV_16 = 0xB00U ,
  SYSCTL_WD_PREDIV_32 = 0xC00U , SYSCTL_WD_PREDIV_64 = 0xD00U , SYSCTL_WD_PREDIV_128 = 0xE00U , SYSCTL_WD_PREDIV_256 = 0xF00U ,
  SYSCTL_WD_PREDIV_512 = 0x000U , SYSCTL_WD_PREDIV_1024 = 0x100U , SYSCTL_WD_PREDIV_2048 = 0x200U , SYSCTL_WD_PREDIV_4096 = 0x300U
}
 
enum  SysCtl_WDPrescaler {
  SYSCTL_WD_PRESCALE_1 = 1U , SYSCTL_WD_PRESCALE_2 = 2U , SYSCTL_WD_PRESCALE_4 = 3U , SYSCTL_WD_PRESCALE_8 = 4U ,
  SYSCTL_WD_PRESCALE_16 = 5U , SYSCTL_WD_PRESCALE_32 = 6U , SYSCTL_WD_PRESCALE_64 = 7U
}
 

Функции

static uint32_t SysCtl_getResetCause (void)
 
static void SysCtl_clearResetCause (uint32_t rstCauses)
 
static void SysCtl_disableWatchdog (void)
 
static void SysCtl_enableWatchdog (void)
 
static void SysCtl_serviceWatchdog (void)
 
static void SysCtl_setWatchdogPredivider (SysCtl_WDPredivider predivider)
 
static void SysCtl_setWatchdogPrescaler (SysCtl_WDPrescaler prescaler)
 
static uint16_t SysCtl_getWatchdogCounterValue (void)
 
static bool SysCtl_getWatchdogStatus (void)
 
static void SysCtl_clearWatchdogStatus (void)
 
static void SysCtl_setWatchdogWindowValue (uint16_t value)
 
static bool SysCtl_getNMIStatus (void)
 
static uint16_t SysCtl_getNMIFlagStatus (void)
 
static bool SysCtl_isNMIFlagSet (uint32_t nmiFlags)
 
static void SysCtl_clearNMIStatus (uint32_t nmiFlags)
 
static void SysCtl_clearAllNMIFlags (void)
 
static void SysCtl_forceNMIFlags (uint32_t nmiFlags)
 
static uint16_t SysCtl_getNMIWatchdogCounter (void)
 
static void SysCtl_setNMIWatchdogPeriod (uint16_t wdPeriod)
 
static uint16_t SysCtl_getNMIWatchdogPeriod (void)
 
static uint16_t SysCtl_getNMIShadowFlagStatus (void)
 
static bool SysCtl_isNMIShadowFlagSet (uint32_t nmiFlags)
 
static void SysCtl_lockAccessControlRegs (uint16_t controlreg)
 
static void SysCtl_sleep (void)
 
static void SysCtl_enableGlobalNMI (void)
 
static bool SysCtl_isWatchdogFirstKeyDetectFlagset (void)
 
static bool SysCtl_isMCANWakeStatusSet (void)
 
static void SysCtl_clearMCANWakeStatus (void)
 
void SysCtl_delay (uint32_t count)
 
void SysCtl_resetPeripheral (SysCtl_PeripheralSOFTPRES peripheral)
 
void SysCtl_enablePeripheral (SysCtl_PeripheralPCLOCKCR peripheral)
 
void SysCtl_disablePeripheral (SysCtl_PeripheralPCLOCKCR peripheral)
 
void SysCtl_requestPeripheralClockStop (SysCtl_PeripheralCMCLKSTOPREQ peripheral, uint16_t enable)
 
bool SysCtl_isPeripheralClockStopAcked (SysCtl_PeripheralCMCLKSTOPACK peripheral)
 
uint16_t SysCtl_getPeripheralClockStop (SysCtl_PeripheralCMCLKSTOPREQ peripheral)