102 lines
6.5 KiB
C
102 lines
6.5 KiB
C
/*
|
|
* Copyright (C) 2017 C-SKY Microsystems Co., Ltd. All rights reserved.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
/******************************************************************************
|
|
* @file ck_pwm.h
|
|
* @brief header file for pwm driver
|
|
* @version V1.0
|
|
* @date 02. June 2017
|
|
******************************************************************************/
|
|
#ifndef __CK_PWM_H
|
|
#define __CK_PWM_H
|
|
#include <stdio.h>
|
|
#include "soc.h"
|
|
|
|
typedef enum {
|
|
CKENUM_PWM_CH0 = 0,
|
|
CKENUM_PWM_CH1 = 1,
|
|
CKENUM_PWM_CH2 = 2,
|
|
CKENUM_PWM_CH3 = 3,
|
|
CKENUM_PWM_CH4 = 4,
|
|
CKENUM_PWM_CH5 = 5,
|
|
CKENUM_PWM_CH6 = 6,
|
|
CKENUM_PWM_CH7 = 7,
|
|
CKENUM_PWM_CH8 = 8,
|
|
CKENUM_PWM_CH9 = 9,
|
|
CKENUM_PWM_CH10 = 10,
|
|
CKENUM_PWM_CH11 = 11
|
|
} CKENUM_PWM_CHANNEL;
|
|
|
|
typedef enum {
|
|
CKENUM_PWM_COUNT_UP = 0,
|
|
CKENUM_PWM_COUNT_UP_DOWN = 1
|
|
} CKENUM_PWM_COUNTER_MODE;
|
|
|
|
typedef struct {
|
|
__IOM uint32_t PWMCFG; /* Offset: 0x000 (R/W) PWM configure register */
|
|
__IOM uint32_t PWMINVERTTRIG; /* Offset: 0x004 (R/W) PWM signal is inverted register */
|
|
__IOM uint32_t PWM01TRIG; /* Offset: 0x008 (R/W) contain the trigger generate compare value */
|
|
__IOM uint32_t PWM23TRIG; /* Offset: 0x00C (R/W) contain the trigger generate compare value */
|
|
__IOM uint32_t PWM45TRIG; /* Offset: 0x010 (N/A) contain the trigger generate compare value */
|
|
__IOM uint32_t PWMINTEN1; /* Offset: 0x014 (R/W) interrupt enable */
|
|
__IM uint32_t PWMINTEN2; /* Offset: 0x018 (N/A) interrupt enable */
|
|
__IOM uint32_t PWMRIS1; /* Offset: 0x01C (R/ ) raw interrupt status */
|
|
__IOM uint32_t PWMRIS2; /* Offset: 0x020 (N/A) raw interrupt status */
|
|
__IOM uint32_t PWMIC1; /* Offset: 0x024 (R/W) interrupt clear */
|
|
__IOM uint32_t PWMIC2; /* Offset: 0x028 (R/W) interrupt clear */
|
|
__IOM uint32_t PWMIS1; /* Offset: 0x02C (R/W) interrupt status */
|
|
__IOM uint32_t PWMIS2; /* Offset: 0x030 (R/W) interrupt status */
|
|
__IOM uint32_t PWMCTL; /* Offset: 0x034 (R/W) configure the pwm generation blocks */
|
|
__IOM uint32_t PWM01LOAD; /* Offset: 0x038 (R/W) contain the load value of the PWM count */
|
|
__IOM uint32_t PWM23LOAD; /* Offset: 0x03C (R/W) contain the load value of the PWM count */
|
|
__IOM uint32_t PWM45LOAD; /* Offset: 0x040 (N/A) contain the load value of the PWM count */
|
|
__IM uint32_t PWM01COUNT; /* Offset: 0x044 (R/ ) contain the current value of the PWM count */
|
|
__IM uint32_t PWM23COUNT; /* Offset: 0x048 (R/ ) contain the current value of the PWM count */
|
|
__IOM uint32_t PWM45COUNT; /* Offset: 0x04C (N/A) contain the current value of the PWM count */
|
|
__IOM uint32_t PWM0CMP; /* Offset: 0x050 (R/W) contain a value to be compared against the counter */
|
|
__IOM uint32_t PWM1CMP; /* Offset: 0x054 (R/W) contain a value to be compared against the counter */
|
|
__IOM uint32_t PWM2CMP; /* Offset: 0x058 (R/W) contain a value to be compared against the counter */
|
|
__IOM uint32_t PWM3CMP; /* Offset: 0x05C (N/A) contain a value to be compared against the counter */
|
|
__IOM uint32_t PWM4CMP; /* Offset: 0x060 (N/A) contain a value to be compared against the counter */
|
|
__IOM uint32_t PWM5CMP; /* Offset: 0x064 (N/A) contain a value to be compared against the counter */
|
|
__IOM uint32_t PWM01DB; /* Offset: 0x068 (R/W) contain the number of clock ticks to delay */
|
|
__IOM uint32_t PWM23DB; /* Offset: 0x06C (R/W) contain the number of clock ticks to delayr */
|
|
__IOM uint32_t PWM45DB; /* Offset: 0x070 (N/A) contain the number of clock ticks to delay */
|
|
__IOM uint32_t CAPCTL; /* Offset: 0x074 (R/W) input capture control */
|
|
__IOM uint32_t CAPINTEN; /* Offset: 0x078 (R/W) input capture interrupt enable */
|
|
__IM uint32_t CAPRIS; /* Offset: 0x07C (R/ ) input capture raw interrupt status */
|
|
__IOM uint32_t CAPIC; /* Offset: 0x080 (R/W) input capture interrupt clear */
|
|
__IM uint32_t CAPIS; /* Offset: 0x084 (R/ ) input capture interrupt status */
|
|
__IM uint32_t CAP01T; /* Offset: 0x088 (R/ ) input capture count value */
|
|
__IM uint32_t CAP23T; /* Offset: 0x08C (R/ ) input capture count value */
|
|
__IOM uint32_t CAP45T; /* Offset: 0x090 (N/A) input capture count value */
|
|
__IOM uint32_t CAP01MATCH; /* Offset: 0x094 (R/W) input capture match value */
|
|
__IOM uint32_t CAP23MATCH; /* Offset: 0x098 (R/W) input capture match value */
|
|
__IOM uint32_t CAP45MATCH; /* Offset: 0x09C (N/A) input capture match value */
|
|
__IOM uint32_t TIMINTEN; /* Offset: 0x0A0 (R/W) time interrupt enable */
|
|
__IM uint32_t TIMRIS; /* Offset: 0x0A4 (R/ ) time raw interrupt stats */
|
|
__IOM uint32_t TIMIC; /* Offset: 0x0A8 (R/W) time interrupt clear */
|
|
__IM uint32_t TIMIS; /* Offset: 0x0AC (R/ ) time interrupt status */
|
|
__IOM uint32_t TIM01LOAD; /* Offset: 0x0B0 (R/W) time load value */
|
|
__IOM uint32_t TIM23LOAD; /* Offset: 0x0B4 (R/W) time load value */
|
|
__IOM uint32_t TIM45LOAD; /* Offset: 0x0B8 (N/A) time load value */
|
|
__IOM uint32_t TIM01COUNT; /* Offset: 0x0BC (R/W) time current count time */
|
|
__IOM uint32_t TIM23COUNT; /* Offset: 0x0C0 (R/W) time current count time */
|
|
__IOM uint32_t TIM45COUNT; /* Offset: 0x0C4 (R/W) time current count time */
|
|
} ck_pwm_reg_t;
|
|
|
|
#endif /* __CK_PWM_H */
|
|
|