Версия для работы с тензодатчиками

This commit is contained in:
seklyuts 2024-09-12 11:04:35 +03:00
parent 9349803bf8
commit 50acc964e3
20 changed files with 283 additions and 73 deletions

View File

@ -61,6 +61,7 @@
</option>
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.DEFINE.2084039298" name="Pre-define NAME (--define, -D)" superClass="com.ti.ccstudio.buildDefinitions.C2000_22.6.compilerID.DEFINE" valueType="definedSymbols">
<listOptionValue builtIn="false" value="${COM_TI_C2000WARE_SOFTWARE_PACKAGE_SYMBOLS}"/>
<listOptionValue builtIn="false" value="FREEMASTER"/>
<listOptionValue builtIn="false" value="REF0"/>
<listOptionValue builtIn="false" value="NRS485"/>
<listOptionValue builtIn="false" value="USE_25MHZ_XTAL"/>

View File

@ -74,7 +74,7 @@ SECTIONS
#if defined(__TI_EABI__)
.init_array : > FLASH1, ALIGN(8)
.bss : > RAMGS0 // instead of RAMLS5
.bss : > RAMLS5 // instead of RAMLS5
.bss:output : > RAMLS3
.bss:cio : > RAMLS5
.data : > RAMLS5
@ -98,13 +98,7 @@ SECTIONS
MSGRAM_CPU_TO_CM : > CPUTOCMRAM, type=NOINIT
MSGRAM_CM_TO_CPU : > CMTOCPURAM, type=NOINIT
/* The following section definition are for SDFM examples */
// Filter_RegsFile : > RAMGS0
// Filter1_RegsFile : > RAMGS1, fill=0x1111
// Filter2_RegsFile : > RAMGS2, fill=0x2222
// Filter3_RegsFile : > RAMGS3, fill=0x3333
// Filter4_RegsFile : > RAMGS4, fill=0x4444
// Difference_RegsFile : >RAMGS5, fill=0x3333
#if defined(__TI_EABI__)
.TI.ramfunc : {} LOAD = FLASH3,

View File

@ -16,16 +16,14 @@
//
#include "f28x_project.h"
#include "init_perif.h"
#include "frmmstr_run.h"
#include "adc_init.h"
#include "biss.h"
#include "uart_4Mbit.h"
void main(void)
{
InitPerif();
for(;;)
{
UartErrorReset();
}
}

View File

@ -103,7 +103,11 @@ void GpioInit(void)
InputXbarRegs.INPUT4SELECT = GPIO_FaultPWMpin;//xint1
GpioCtrlRegs.GPDMUX1.bit.GPIO104 = 0;//Reset tenzodat
GpioCtrlRegs.GPDGMUX1.bit.GPIO104 = 0;
GpioCtrlRegs.GPDDIR.bit.GPIO104 = 1;
GpioDataRegs.GPDDAT.bit.GPIO104 = 0;
// GpioCtrlRegs.GPDCSEL2.bit.GPIO104 = 0;
GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 1;//EQEP

View File

@ -44,6 +44,33 @@ void FRMGPIOInit(void)
GPIO_SetupPinOptions(GPIO_RS485_DE, GPIO_OUTPUT, GPIO_PUSHPULL);
GPIO_SetupPinMux(GPIO_RS485_RE, GPIO_MUX_CPU2, 0);
GPIO_SetupPinOptions(GPIO_RS485_RE, GPIO_OUTPUT, GPIO_PUSHPULL);
#ifdef REF0
EALLOW;
GpioDataRegs.GPADAT.bit.GPIO21 = 1;// TX 1 - вкл
GpioDataRegs.GPCDAT.bit.GPIO83 = 0;// RX 0 - вкл
EDIS;
#else
EALLOW;
GpioDataRegs.GPEDAT.bit.GPIO133 = 1;
GpioDataRegs.GPEDAT.bit.GPIO145 = 0;
EDIS;
#endif
}
void UartGPIOInit(void)
{
GPIO_SetupPinMux(85, GPIO_MUX_CPU1, 5);
GPIO_SetupPinOptions(85, GPIO_INPUT, (GPIO_ASYNC | GPIO_PULLUP));
GPIO_SetupPinMux(84, GPIO_MUX_CPU1, 5);
GPIO_SetupPinOptions(84, GPIO_OUTPUT, GPIO_ASYNC);
GPIO_SetupPinMux(GPIO_RS485_DE, GPIO_MUX_CPU1, 0);
GPIO_SetupPinOptions(GPIO_RS485_DE, GPIO_OUTPUT, GPIO_PUSHPULL);
GPIO_SetupPinMux(GPIO_RS485_RE, GPIO_MUX_CPU1, 0);
GPIO_SetupPinOptions(GPIO_RS485_RE, GPIO_OUTPUT, GPIO_PUSHPULL);
}

View File

@ -28,5 +28,6 @@ void FRMGPIOInit(void);
uint16_t SynchPWMFonRunEnable(void);
void SynchPWMFonRunEnableClr(void);
void SynchPWMFonRunEnableSet(void);
void UartGPIOInit(void);
#endif /* SRC_FRM_UART_H_ */

View File

@ -18,7 +18,7 @@
#include "spi_init.h"
#include "biss.h"
#include "sdfm_pwm_xbar.h"
#include "uart_4Mbit.h"
#define TO_CPU1 0
#define TO_CPU2 1
@ -105,14 +105,13 @@ void InitPerif(void)
// This function is found in f2838x_pievect.c.
//
// InitPieVectTable();
InitPieVectTable();
GpioInit();
GpioDiodInit();
SdfmGpioInit();
SdfmTypeInit();
PWMGpioInit();
FRMGPIOInit();
I2CMasterGpioInit();
SpiCGpioInit();
BissGpioInit();
@ -120,6 +119,14 @@ void InitPerif(void)
sdfm_pwm_xbarInit();
#ifndef FREEMASTER
UartGPIOInit();
UartInit();
UartInterruptInit();
#else
FRMGPIOInit();
CONNECT_SCIA(TO_CPU2);
#endif
// ConfigureADC();
CONNECT_SD1(TO_CPU2);
@ -133,7 +140,6 @@ void InitPerif(void)
CONNECT_PWM3(TO_CPU2);
CONNECT_PWM11(TO_CPU2);
CONNECT_PWM12(TO_CPU2);
CONNECT_SCIA(TO_CPU2);
CONNECT_EQEP1(TO_CPU2);
CONNECT_I2CA(TO_CPU2);
CONNECT_SPIC(TO_CPU2);
@ -150,11 +156,14 @@ void InitPerif(void)
Cpu1toCpu2IpcRegs.CPU1TOCPU2IPCBOOTMODE = 0x5A00C803; //str 716
Cpu1toCpu2IpcRegs.CPU1TOCPU2IPCSET.bit.IPC0 = 1;
#ifdef FREEMASTER
EALLOW;
DevCfgRegs.CPU2RESCTL.all = 0xA5A50000;
EDIS;
while(DevCfgRegs.RSTSTAT.bit.CPU2RES == 0);
#endif
EINT; // Enable Global interrupt INTM

View File

@ -0,0 +1,129 @@
/*
* uart_4Mbit.c
*
* Created on: 4 сент. 2024 г.
* Author: seklyuts
*/
#include "f28x_project.h"
#include "uart_4Mbit.h"
#define LSPCLK_HZ 100000000.0
#define BAUD 4000000.0
//#define BAUD 57600.0
//#define BAUD 115200.0
//#define BAUD 128000.0
//#define BAUD 256000.0
#define BRR (LSPCLK_HZ/(BAUD*8) - 1)
uint16_t RS485[200];
//#pragma DATA_SECTION(AdcaResult0_,"ADC_RegsFile0");
uint16_t N = 0, C = 0, DataTX = 0x55;
__interrupt void Uart_ISR(void)
{
uint16_t Data;
Data = SciaRegs.SCIRXBUF.all;
if(N < 100) RS485[N] = Data;
if(Data == 0x7E)
{
N = 0;
RS485[N] = Data;
C++;
}
N++;
// SciaRegs.SCITXBUF.all = DataTX;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
}
void UartInterruptInit(void)
{
EALLOW;
PieVectTable.SCIA_RX_INT = &Uart_ISR;
IER |= M_INT9;
PieCtrlRegs.PIEIER9.bit.INTx1 = 1;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
EDIS;
SciaRegs.SCICTL2.bit.RXBKINTENA = 1;
GpioDataRegs.GPCDAT.bit.GPIO83 = 0;
}
uint16_t Brr;
void UartInit(void)
{
EALLOW;
CpuSysRegs.PCLKCR7.bit.SCI_A = 1;
EDIS;
#ifdef REF0
EALLOW;
GpioDataRegs.GPADAT.bit.GPIO21 = 0;// TX 1 - вкл
GpioDataRegs.GPCDAT.bit.GPIO83 = 1;// RX 0 - вкл
EDIS;
#else
EALLOW;
GpioDataRegs.GPEDAT.bit.GPIO133 = 1;
GpioDataRegs.GPEDAT.bit.GPIO145 = 0;
EDIS;
#endif
EALLOW;
SciaRegs.SCICCR.all = 0x0007; // 1 stop bit, No loopback
// No parity,8 char bits,
// async mode, idle-line protocol
SciaRegs.SCICTL1.all = 0x0003; // enable TX, RX, internal SCICLK,
// Disable RX ERR, SLEEP, TXWAKE
SciaRegs.SCICTL2.all = 0x0003;
SciaRegs.SCICTL2.bit.TXINTENA = 0;
SciaRegs.SCICTL2.bit.RXBKINTENA = 0;
Brr = BRR;
SciaRegs.SCIHBAUD.all = 0xFF & (Brr>>8);//0x0002;
SciaRegs.SCILBAUD.all = 0xFF & Brr;//0x008B;
SciaRegs.SCICTL1.all = 0x0023; // Relinquish SCI from Reset
SciaRegs.SCICTL1.bit.RXENA = 1;
SciaRegs.SCICTL1.bit.TXENA = 1;
EDIS;
}
uint16_t UartErr=0, Reset = 0;
uint16_t TXnow = 0;
void UartErrorReset(void)
{
if(SciaRegs.SCIRXST.bit.RXERROR)
{
if(UartErr < 100) RS485[100+UartErr] = SciaRegs.SCIRXST.all;
EALLOW;
SciaRegs.SCICTL1.bit.SWRESET = 0;
EDIS;
UartErr++;
}
else
{
EALLOW;
SciaRegs.SCICTL1.bit.SWRESET = 1;
EDIS;
}
GpioDataRegs.GPDDAT.bit.GPIO104 = Reset;
if(TXnow)
{
TXnow = 0;
SciaRegs.SCITXBUF.all = DataTX;
}
}

View File

@ -0,0 +1,15 @@
/*
* uart_4Mbit.h
*
* Created on: 4 сент. 2024 г.
* Author: seklyuts
*/
#ifndef SRC_UART_4MBIT_H_
#define SRC_UART_4MBIT_H_
void UartInit(void);
void UartErrorReset(void);
void UartInterruptInit(void);
#endif /* SRC_UART_4MBIT_H_ */

View File

@ -64,7 +64,7 @@
<listOptionValue builtIn="false" value="${COM_TI_C2000WARE_SOFTWARE_PACKAGE_SYMBOLS}"/>
<listOptionValue builtIn="false" value="FREEMASTER"/>
<listOptionValue builtIn="false" value="NRS485"/>
<listOptionValue builtIn="false" value="REF0"/>
<listOptionValue builtIn="false" value="REF1"/>
<listOptionValue builtIn="false" value="USE_25MHZ_XTAL"/>
<listOptionValue builtIn="false" value="DEBUG"/>
<listOptionValue builtIn="false" value="CPU2"/>

View File

@ -75,9 +75,9 @@ SECTIONS
#if defined(__TI_EABI__)
.init_array : > FLASH1, ALIGN(8)
.bss : >> RAMLS5 | RAMLS6 | RAMLS7// instead of RAMLS5
.bss:output : > RAMLS3
.bss:output : > RAMLS5
.bss:cio : > RAMLS5
.data : > RAMLS5
.data : > RAMLS4
.sysmem : > RAMLS5
/* Initalized sections go in Flash */
.const : > FLASH5, ALIGN(8)

View File

@ -60,6 +60,10 @@ void PWM_ABC_Start(uint16_t Num)
{
EALLOW;
EPwmRegs[PWM_A]->TZFRC.all = 4;
EPwmRegs[PWM_B]->TZFRC.all = 4;
EPwmRegs[PWM_C]->TZFRC.all = 4;
if(Num&0x01) EPwmRegs[PWM_A]->TZCTL.bit.TZA = 3;
else EPwmRegs[PWM_A]->TZCTL.bit.TZA = 2;

View File

@ -46,7 +46,7 @@ volatile uint16_t PeriodPWM_2 = PERIOD_DIV2;
volatile strPWMABC PWM_motor = {PERIOD_DIV2, PERIOD_DIV2, PERIOD_DIV2};
int16_t A_proc,B_proc,C_proc;
uint16_t PWM_Vent = PERIOD_FAN;
uint16_t PWM_Vent = 0;//PERIOD_FAN;
uint16_t PWM_Chop = 0;
uint16_t PWM_SDFM_delay = SDFM_DELAY;
uint16_t Timing_PWM[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

View File

@ -11,7 +11,7 @@
#define LSPCLK_HZ 100000000.0
#define BAUD 57600.0
#define BRR LSPCLK_HZ/(BAUD*8)
#define BRR (LSPCLK_HZ/(BAUD*8) - 1)

View File

@ -93,8 +93,8 @@ void InitPerif(void)
#ifdef FREEMASTER
FRMUartInit();
#else
UartInit();
UartInterruptInit();
// UartInit();
// UartInterruptInit();
#endif
ADCConfigure();

View File

@ -24,7 +24,8 @@ uint16_t N = 0;
__interrupt void Uart_ISR(void)
{
if(N < 4096) {AdcaResult0_[N] = SciaRegs.SCIRXBUF.all; N++;}
if(N < 300) {AdcaResult0_[N] = SciaRegs.SCIRXBUF.all; N++;}
else N++;
PieCtrlRegs.PIEACK.all = PIEACK_GROUP9;
}
@ -89,6 +90,7 @@ void UartErrorReset(void)
if(SciaRegs.SCIRXST.bit.RXERROR)
{
EALLOW;
if(UartErr < 300) AdcaResult0_[300+UartErr] = SciaRegs.SCIRXST.all;
SciaRegs.SCICTL1.bit.SWRESET = 0;
UartErr++;
EDIS;

View File

@ -86,7 +86,7 @@ uint32_t Impuls = 0;
uint32_t ImpulsHi = 0;
uint32_t ImpulsLow = 0;
uint32_t ImpulsStep = 0;
int16_t AngleOffset = 0xc000, vectorAngle;
int16_t AngleOffset = 0x1966, vectorAngle;
uint16_t SetAngeOffsetCounterTime[4] = {10000,20000,30000,40000};
uint16_t SetAngeOffsetCounter = 0;
@ -207,7 +207,7 @@ void vectorControl(int16_t CurrentA, int16_t CurrentB, int16_t CurrentC, int16_t
CurrLoop.piIq.Ref = 0;
break;
case TestPWNMode:
NoLoop = 0;
NoLoop = 1;
vectorUdq.d = vectorUdq.q = 0;
PWM_ABC_Start(Num);
break;

View File

@ -2,54 +2,80 @@
<configurations XML_version="1.2" id="configurations_0">
<configuration XML_version="1.2" id="Texas Instruments XDS100v2 USB Debug Probe_0">
<instance XML_version="1.2" desc="Texas Instruments XDS100v2 USB Debug Probe_0" href="connections/TIXDS100v2_Connection.xml" id="Texas Instruments XDS100v2 USB Debug Probe_0" xml="TIXDS100v2_Connection.xml" xmlpath="connections"/>
<connection XML_version="1.2" id="Texas Instruments XDS100v2 USB Debug Probe_0">
<instance XML_version="1.2" href="drivers/tixds100v2icepick_c.xml" id="drivers" xml="tixds100v2icepick_c.xml" xmlpath="drivers"/>
<instance XML_version="1.2" href="drivers/tixds100v2c28x.xml" id="drivers" xml="tixds100v2c28x.xml" xmlpath="drivers"/>
<instance XML_version="1.2" href="drivers/tixds100v2cla2.xml" id="drivers" xml="tixds100v2cla2.xml" xmlpath="drivers"/>
<instance XML_version="1.2" href="drivers/tixds100v2cs_child.xml" id="drivers" xml="tixds100v2cs_child.xml" xmlpath="drivers"/>
<instance XML_version="1.2" href="drivers/tixds100v2cs_dap.xml" id="drivers" xml="tixds100v2cs_dap.xml" xmlpath="drivers"/>
<instance XML_version="1.2" href="drivers/tixds100v2cortexM.xml" id="drivers" xml="tixds100v2cortexM.xml" xmlpath="drivers"/>
<instance XML_version="1.2" href="drivers/tixds510ajsm.xml" id="drivers" xml="tixds510ajsm.xml" xmlpath="drivers"/>
<platform XML_version="1.2" id="platform_0">
<instance XML_version="1.2" desc="TMS320F28388D_0" href="devices/f28388d.xml" id="TMS320F28388D_0" xml="f28388d.xml" xmlpath="devices"/>
<device HW_revision="1" XML_version="1.2" description="" id="TMS320F28388D_0" partnum="TMS320F28388D" simulation="no">
<router HW_revision="1.0" XML_version="1.2" description="ICEPick_C router" id="IcePick_C_0" isa="ICEPICK_C">
<subpath id="Subpath_1">
<property Type="numericfield" Value="0x11" desc="Port Number_0" id="Port Number"/>
</subpath>
<subpath id="CM">
<property Type="numericfield" Value="0x12" desc="Port Number_1" id="Port Number"/>
</subpath>
</router>
</device>
</platform>
</connection>
</configuration>
</configurations>

View File

@ -68,7 +68,7 @@ ___________________________________________
___________________________________________
в левом окне блок TestPWM - в этом режиме можно включить ШИМ на любой транзистор.
Для этого нужно включить реле, выбрать Mode = 4.
Для этого нужно включить реле, выбрать Mode = 5.
После этого переменная Num обозначает -- какие из транзисторов включены.
На все транзисторы которые включены подаётся 50% шим, нижние в противофазе с верхними.
0 бит -> PWM5A