140 lines
2.6 KiB
C
140 lines
2.6 KiB
C
|
|
/*
|
|||
|
|
* frm_uart.c
|
|||
|
|
*
|
|||
|
|
* Created on: 21 <EFBFBD><EFBFBD><EFBFBD>. 2023 <EFBFBD>.
|
|||
|
|
* Author: seklyuts
|
|||
|
|
*/
|
|||
|
|
#include "f28x_project.h"
|
|||
|
|
//#include "f2838x_pinmux.h"
|
|||
|
|
#include "frm_uart.h"
|
|||
|
|
|
|||
|
|
#define LSPCLK_HZ 50000000.0
|
|||
|
|
#define BAUD 57600.0
|
|||
|
|
#define BRR LSPCLK_HZ/(BAUD*8) + 1
|
|||
|
|
|
|||
|
|
uint16_t frmEn = 0;
|
|||
|
|
|
|||
|
|
|
|||
|
|
uint16_t FMSTRIsEnable(void)
|
|||
|
|
{
|
|||
|
|
return frmEn;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void FMSTREnableClr(void)
|
|||
|
|
{
|
|||
|
|
frmEn = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void FMSTREnableSet(void)
|
|||
|
|
{
|
|||
|
|
frmEn = 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
void FRMUartInit(void)
|
|||
|
|
{
|
|||
|
|
FMSTR_Init();
|
|||
|
|
EALLOW;
|
|||
|
|
CpuSysRegs.PCLKCR7.bit.SCI_A = 1;
|
|||
|
|
EDIS;
|
|||
|
|
|
|||
|
|
|
|||
|
|
#ifdef REF0
|
|||
|
|
EALLOW;
|
|||
|
|
GpioDataRegs.GPADAT.bit.GPIO21 = 1;
|
|||
|
|
GpioDataRegs.GPCDAT.bit.GPIO83 = 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;
|
|||
|
|
|
|||
|
|
uint16_t 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;
|
|||
|
|
FMSTREnableSet();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
|
|||
|
|
void FMSTR_SCI_PUTCHAR(char _data)
|
|||
|
|
{
|
|||
|
|
SciaRegs.SCITXBUF.all = _data;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
char FMSTR_SCI_GETCHAR()
|
|||
|
|
{
|
|||
|
|
return SciaRegs.SCIRXBUF.all;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void FMSTR_SCI_RE(void)
|
|||
|
|
{
|
|||
|
|
// GpioDataRegs.GPCDAT.bit.GPIO83 = 0;
|
|||
|
|
SciaRegs.SCICTL1.bit.RXENA = 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void FMSTR_SCI_RD(void)
|
|||
|
|
{
|
|||
|
|
// GpioDataRegs.GPCDAT.bit.GPIO83 = 1;
|
|||
|
|
SciaRegs.SCICTL1.bit.RXENA = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void FMSTR_SCI_TE(void)
|
|||
|
|
{
|
|||
|
|
// GpioDataRegs.GPADAT.bit.GPIO21 = 1;
|
|||
|
|
SciaRegs.SCICTL1.bit.TXENA = 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void FMSTR_SCI_TD(void)
|
|||
|
|
{
|
|||
|
|
// GpioDataRegs.GPADAT.bit.GPIO21 = 0;
|
|||
|
|
SciaRegs.SCICTL1.bit.TXENA = 0;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
FMSTR_SCISR FMSTR_SCI_RDCLRSR(void)
|
|||
|
|
{
|
|||
|
|
FMSTR_SCISR SciSR = 0;
|
|||
|
|
|
|||
|
|
if (SciaRegs.SCIRXST.bit.RXRDY) // UART receive buffer full
|
|||
|
|
{
|
|||
|
|
SciSR = FMSTR_SCISR_RDRF;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// if (SciaRegs.SCIRXST.bit.RXWAKE) // UART receive buffer full
|
|||
|
|
// {
|
|||
|
|
// SciSR = FMSTR_SCISR_RDRF;
|
|||
|
|
// }
|
|||
|
|
|
|||
|
|
if(SciaRegs.SCICTL2.bit.TXEMPTY) // UART is transmitting data or transmit register full (UART busy)
|
|||
|
|
{
|
|||
|
|
SciSR |= FMSTR_SCISR_TDRE;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return SciSR;
|
|||
|
|
}
|