Обновление

This commit is contained in:
cfif 2025-10-14 13:46:12 +03:00
parent cea297a899
commit babf93dad6
2 changed files with 28 additions and 6 deletions

View File

@ -20,15 +20,26 @@ typedef struct {
} tPwmFlagchip; } tPwmFlagchip;
tPwmFlagchip PWM_Initial(
uint32_t PeriodTime,
uint32_t ActiveTime,
uint8_t TPU_PWM_CHANNEL,
uint8 TPU0_CH_PRIORITY,
TPU_EventCallbackType Bsp_Tpu_PwmCallback,
TPU_TCR1OverflowCallbackType Bsp_Tpu_OverflowCallBack);
tPwmIO vPwmGetIo(tPwmFlagchip *env); tPwmIO vPwmGetIo(tPwmFlagchip *env);
// Частота шины // Частота шины
#define BUS_CLK 120.0f #define BUS_CLK 120000000U
// Делитель выходной частоты
#define SCG_CLK_DIV 4.0f
// Период такта
// (1 / (BUS_CLK / SCG_CLK_DIV))
#define NS_TO_TIME(NS) (NS / (1 / (BUS_CLK / SCG_CLK_DIV))) // Делитель выходной частоты
#define SCG_CLK_DIV 4U
#define TPU_FREQ (BUS_CLK / SCG_CLK_DIV)
#define PWM_FREQ 25000 // 25 kHz
#define PERIOD_TICKS (TPU_FREQ / PWM_FREQ)
#endif //PWM_FLAGCHIP_H #endif //PWM_FLAGCHIP_H

View File

@ -74,10 +74,21 @@ static void vPwmRun(tPwmFlagchip *env) {
TPU_StartChannel(); TPU_StartChannel();
} }
static void setActivePercent(tPwmFlagchip *env, uint8_t percent) {
if (percent > 100)
percent = 100;
// Расчет времени активности в тактах
env->etpu_pwmconfig_tbl.u32ActiveTime = PERIOD_TICKS * percent / 100;
}
tPwmIO vPwmGetIo(tPwmFlagchip *env) { tPwmIO vPwmGetIo(tPwmFlagchip *env) {
tPwmIO io = { tPwmIO io = {
.env = env, .env = env,
.run = (PwmIOTransaction) vPwmRun, .run = (PwmIOTransaction) vPwmRun,
.setActivePercent = (PwmIOTransactionSetActivePercent) setActivePercent
}; };
return io; return io;
} }