инициализация сигма-дельта и потров
This commit is contained in:
parent
71daabf93c
commit
88e05dea3d
32
Projects/epwm_test/src/gpio_init.c
Normal file
32
Projects/epwm_test/src/gpio_init.c
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
/*
|
||||||
|
* gpio_init.c
|
||||||
|
*
|
||||||
|
* Created on: 4 ñåíò. 2023 ã.
|
||||||
|
* Author: seklyuts
|
||||||
|
*/
|
||||||
|
#include "f28x_project.h"
|
||||||
|
|
||||||
|
void GpioInit(void)
|
||||||
|
{
|
||||||
|
EALLOW;
|
||||||
|
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 0;
|
||||||
|
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0;
|
||||||
|
GpioCtrlRegs.GPAGMUX1.bit.GPIO0 = 0;
|
||||||
|
GpioCtrlRegs.GPAGMUX1.bit.GPIO1 = 0;
|
||||||
|
GpioCtrlRegs.GPADIR.bit.GPIO0 = 1;
|
||||||
|
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1;
|
||||||
|
GpioDataRegs.GPADAT.bit.GPIO0 = 0;
|
||||||
|
GpioDataRegs.GPADAT.bit.GPIO1 = 0;
|
||||||
|
EDIS;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Gpio0out(uint16_t out_bit)
|
||||||
|
{
|
||||||
|
GpioDataRegs.GPADAT.bit.GPIO0 = out_bit;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Gpio1out(uint16_t out_bit)
|
||||||
|
{
|
||||||
|
GpioDataRegs.GPADAT.bit.GPIO1 = out_bit;
|
||||||
|
}
|
||||||
16
Projects/epwm_test/src/gpio_init.h
Normal file
16
Projects/epwm_test/src/gpio_init.h
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
/*
|
||||||
|
* gpio_init.h
|
||||||
|
*
|
||||||
|
* Created on: 4 ñåíò. 2023 ã.
|
||||||
|
* Author: seklyuts
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SRC_GPIO_INIT_H_
|
||||||
|
#define SRC_GPIO_INIT_H_
|
||||||
|
|
||||||
|
|
||||||
|
void GpioInit(void);
|
||||||
|
void Gpio0out(uint16_t out_bit);
|
||||||
|
void Gpio1out(uint16_t out_bit);
|
||||||
|
|
||||||
|
#endif /* SRC_GPIO_INIT_H_ */
|
||||||
203
Projects/epwm_test/src/sdfm.c
Normal file
203
Projects/epwm_test/src/sdfm.c
Normal file
@ -0,0 +1,203 @@
|
|||||||
|
/*
|
||||||
|
* sdfm.c
|
||||||
|
*
|
||||||
|
* Created on: 25 àâã. 2023 ã.
|
||||||
|
* Author: seklyuts
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "f28x_project.h"
|
||||||
|
#include "f2838x_sdfm_drivers.h"
|
||||||
|
//
|
||||||
|
// Defines
|
||||||
|
//
|
||||||
|
#define MAX_SAMPLES 1024
|
||||||
|
#define SDFM_PIN_MUX_OPTION1 1
|
||||||
|
#define SDFM_PIN_MUX_OPTION2 2
|
||||||
|
#define SDFM_PIN_MUX_OPTION3 3
|
||||||
|
#define EPWM_TIMER_TBPRD 65535 // ePWM Period register
|
||||||
|
#define SDFM_INT_MASK 0x80001000U
|
||||||
|
//
|
||||||
|
// Globals
|
||||||
|
//
|
||||||
|
uint16_t gPeripheralNumber;
|
||||||
|
//uint16_t gPWM_number = 1; // ePWM 1 for synchronizing SDFM1 filters
|
||||||
|
int16_t Filter1_Result[MAX_SAMPLES];
|
||||||
|
int16_t Filter3_Result[MAX_SAMPLES];
|
||||||
|
int16_t Filter2_Result[MAX_SAMPLES];
|
||||||
|
int16_t Filter4_Result[MAX_SAMPLES];
|
||||||
|
#pragma DATA_SECTION(Filter1_Result,"Filter1_RegsFile");
|
||||||
|
#pragma DATA_SECTION(Filter2_Result,"Filter2_RegsFile");
|
||||||
|
#pragma DATA_SECTION(Filter3_Result,"Filter3_RegsFile");
|
||||||
|
#pragma DATA_SECTION(Filter4_Result,"Filter4_RegsFile");
|
||||||
|
int16_t ADC_Volt;
|
||||||
|
|
||||||
|
__interrupt void Sdfm1_ISR(void);
|
||||||
|
|
||||||
|
|
||||||
|
void SdfmInitGpio(void)
|
||||||
|
{
|
||||||
|
EALLOW;
|
||||||
|
|
||||||
|
GPIO_SetupPinOptions(16, GPIO_INPUT, GPIO_ASYNC);
|
||||||
|
GPIO_SetupPinMux(16,GPIO_MUX_CPU1,7);
|
||||||
|
GPIO_SetupPinOptions(17, GPIO_INPUT, GPIO_ASYNC);
|
||||||
|
GPIO_SetupPinMux(17,GPIO_MUX_CPU1,7);
|
||||||
|
|
||||||
|
EDIS;
|
||||||
|
}
|
||||||
|
|
||||||
|
void SdfmInitEnable(void)
|
||||||
|
{
|
||||||
|
CpuSysRegs.PCLKCR0.bit.TBCLKSYNC = 1;
|
||||||
|
CpuSysRegs.PCLKCR6.bit.SD1 = 1;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void SdfmInitInterruptEn(void)
|
||||||
|
{
|
||||||
|
EALLOW;
|
||||||
|
PieVectTable.SDFM1_INT = &Sdfm1_ISR;
|
||||||
|
IER |= M_INT5;
|
||||||
|
PieCtrlRegs.PIEIER5.bit.INTx9 = 1; // SDFM1 interrupt enabled
|
||||||
|
EDIS;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void SdfmInit(uint16_t Num)
|
||||||
|
{
|
||||||
|
uint16_t HLT, LLT;
|
||||||
|
|
||||||
|
gPeripheralNumber = Num;
|
||||||
|
//
|
||||||
|
// Configure SDFM type to 0
|
||||||
|
//
|
||||||
|
EALLOW;
|
||||||
|
DevCfgRegs.SDFMTYPE.all = 0x8000;
|
||||||
|
EDIS;
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Input Control Module
|
||||||
|
//
|
||||||
|
// Configure Input Control Mode: Modulator Clock rate = Modulator data rate
|
||||||
|
//
|
||||||
|
Sdfm_configureInputCtrl(gPeripheralNumber, FILTER1, MODE_0);
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Comparator Module
|
||||||
|
//
|
||||||
|
HLT = 0x7FFF; //Over value threshold settings
|
||||||
|
LLT = 0x0000; //Under value threshold settings
|
||||||
|
|
||||||
|
//
|
||||||
|
// Configure Comparator module's comparator filter type and comparator's OSR
|
||||||
|
// value, higher threshold, lower threshold
|
||||||
|
//
|
||||||
|
Sdfm_configureComparator(gPeripheralNumber, FILTER1, SINC3, OSR_32,
|
||||||
|
HLT, LLT);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Enable Master filter bit: Unless this bit is set none of the filter modules
|
||||||
|
// can be enabled. All the filter modules are synchronized when master filter
|
||||||
|
// bit is enabled after individual filter modules are enabled. All the filter
|
||||||
|
// modules are asynchronized when master filter bit is enabled before
|
||||||
|
// individual filter modules are enabled.
|
||||||
|
//
|
||||||
|
Sdfm_enableMFE(gPeripheralNumber);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Data filter Module
|
||||||
|
//
|
||||||
|
// Configure Data filter modules filter type, OSR value and
|
||||||
|
// enable / disable data filter
|
||||||
|
//
|
||||||
|
Sdfm_configureData_filter(gPeripheralNumber, FILTER1, FILTER_ENABLE, SINC3,
|
||||||
|
OSR_256, DATA_16_BIT, SHIFT_9_BITS);
|
||||||
|
|
||||||
|
|
||||||
|
EALLOW;
|
||||||
|
// Sdfm1Regs.SDSYNC1.bit.SYNCSEL = 0;
|
||||||
|
Sdfm1Regs.SDDFPARM1.bit.SDSYNCEN = 0;
|
||||||
|
EDIS;
|
||||||
|
|
||||||
|
// Sdfm_configureExternalreset(gPeripheralNumber,FILTER_1_EXT_RESET_ENABLE,0,0,0);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Sdfm_configureInterrupt(gPeripheralNumber, FILTER1, IEH_DISABLE,
|
||||||
|
IEL_DISABLE, MFIE_ENABLE, AE_ENABLE);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Enable master interrupt so that any of the filter interrupts can trigger
|
||||||
|
// by SDFM interrupt to CPU
|
||||||
|
//
|
||||||
|
Sdfm_enableMIE(gPeripheralNumber);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Sdfm1_ISR - SDFM 1 ISR
|
||||||
|
//
|
||||||
|
__interrupt void Sdfm1_ISR(void)
|
||||||
|
{
|
||||||
|
static uint16_t loopCounter1 = 0;
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Wait for result from all the filters (SDIFLG)
|
||||||
|
//
|
||||||
|
|
||||||
|
uint32_t IntFlags = Sdfm_readFlagRegister(gPeripheralNumber);
|
||||||
|
// while((Sdfm_readFlagRegister(gPeripheralNumber) &
|
||||||
|
// SDFM_INT_MASK) != SDFM_INT_MASK);
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// Reset the loop counter
|
||||||
|
//
|
||||||
|
if(loopCounter1 >= MAX_SAMPLES)
|
||||||
|
{
|
||||||
|
loopCounter1 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Read each SDFM filter output and store it in respective filter
|
||||||
|
// result array
|
||||||
|
//
|
||||||
|
|
||||||
|
if (IntFlags & 0x1000)
|
||||||
|
{
|
||||||
|
ADC_Volt = Filter1_Result[loopCounter1++] = SDFM1_READ_FILTER1_DATA_16BIT;
|
||||||
|
EALLOW;
|
||||||
|
Sdfm1Regs.SDCPARM1.bit.MFIE = 1;
|
||||||
|
EDIS;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(IntFlags & 0x100)
|
||||||
|
{
|
||||||
|
ADC_Volt = 0;
|
||||||
|
EALLOW;
|
||||||
|
Sdfm1Regs.SDCPARM1.bit.MFIE = 0;
|
||||||
|
EDIS;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Clear SDFM flag register
|
||||||
|
//
|
||||||
|
Sdfm_clearFlagRegister(gPeripheralNumber,IntFlags);
|
||||||
|
|
||||||
|
//
|
||||||
|
// Acknowledge this __interrupt to receive more __interrupts from group 5
|
||||||
|
//
|
||||||
|
PieCtrlRegs.PIEACK.all = PIEACK_GROUP5;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Sdfm_clearFlagRegister
|
||||||
|
|
||||||
|
//Sdfm_readFlagRegister
|
||||||
|
|
||||||
19
Projects/epwm_test/src/sdfm.h
Normal file
19
Projects/epwm_test/src/sdfm.h
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* sdfm.h
|
||||||
|
*
|
||||||
|
* Created on: 25 àâã. 2023 ã.
|
||||||
|
* Author: seklyuts
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef SRC_SDFM_H_
|
||||||
|
#define SRC_SDFM_H_
|
||||||
|
|
||||||
|
void SdfmInitGpio(void);
|
||||||
|
void SdfmInitEnable(void);
|
||||||
|
void SdfmInitInterruptEn(void);
|
||||||
|
void SdfmInit(uint16_t Num);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif /* SRC_SDFM_H_ */
|
||||||
Loading…
Reference in New Issue
Block a user