Untitled diff

Created Diff never expires
17 刪除
總計
刪除
單詞
總計
刪除
要繼續使用此功能,請升級到
Diffchecker logo
Diffchecker Pro
89
17 新增
總計
新增
單詞
總計
新增
要繼續使用此功能,請升級到
Diffchecker logo
Diffchecker Pro
89
#include "F28x_Project.h"
#include "F28x_Project.h"


void scib_echoback_init(void);
void scib_echoback_init(void);
void scib_fifo_init(void);
void scib_fifo_init(void);
void scib_xmit(int a);
void scib_xmit(int a);
void scib_msg(char *msg);
void scib_msg(char *msg);




void main(void)
void main(void)
{
{
char *msg;
char *msg;


InitSysCtrl();
InitSysCtrl();


// GPIO
// GPIO
InitGpio();
InitGpio();


EALLOW;
EALLOW;
// Set the mux to SCITXDB on GPIO 18
// Set the mux to SCITXDB on GPIO 29
GpioCtrlRegs.GPAGMUX2.bit.GPIO18 = 0;
GpioCtrlRegs.GPAGMUX2.bit.GPIO29 = 0;
GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 2;
GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1;
// Select CPU 1
// Select CPU 1
GpioCtrlRegs.GPACSEL3.bit.GPIO18 = 0;
GpioCtrlRegs.GPACSEL4.bit.GPIO29 = 0;
// Async mode
// Async mode
GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3;
GpioCtrlRegs.GPAQSEL2.bit.GPIO29 = 3;
EDIS;
EDIS;


// Interrupts
// Interrupts
DINT;
DINT;
InitPieCtrl();
InitPieCtrl();
IER = 0x0000;
IER = 0x0000;
IFR = 0x0000;
IFR = 0x0000;
InitPieVectTable();
InitPieVectTable();
EINT;
EINT;


// SCI
// SCI
scib_fifo_init();
scib_fifo_init();
scib_echoback_init();
scib_echoback_init();


for (;;) {
for (;;) {
msg = "Salut\n\0";
msg = "Salut\n\0";
scib_msg(msg);
scib_msg(msg);
}
}
}
}


void scib_echoback_init()
void scib_echoback_init()
{
{
ScibRegs.SCICCR.all = 0x0007; // 1 stop bit, No loopback
SciaRegs.SCICCR.all = 0x0007; // 1 stop bit, No loopback
// No parity,8 char bits,
// No parity,8 char bits,
// async mode, idle-line protocol
// async mode, idle-line protocol
ScibRegs.SCICTL1.all = 0x0003; // enable TX, RX, internal SCICLK,
SciaRegs.SCICTL1.all = 0x0003; // enable TX, RX, internal SCICLK,
// Disable RX ERR, SLEEP, TXWAKE
// Disable RX ERR, SLEEP, TXWAKE
ScibRegs.SCICTL2.all = 0x0003; // Enable RXBKINTENA and TXINTENA
SciaRegs.SCICTL2.all = 0x0003; // Enable RXBKINTENA and TXINTENA


//
//
// SCIB at 9600 baud
// SCIB at 9600 baud
// @LSPCLK = 50 MHz (200 MHz SYSCLK) HBAUD = 0x02 and LBAUD = 0x8B.
// @LSPCLK = 50 MHz (200 MHz SYSCLK) HBAUD = 0x02 and LBAUD = 0x8B.
// @LSPCLK = 30 MHz (120 MHz SYSCLK) HBAUD = 0x01 and LBAUD = 0x86.
// @LSPCLK = 30 MHz (120 MHz SYSCLK) HBAUD = 0x01 and LBAUD = 0x86.
//
//
ScibRegs.SCIHBAUD.all = 0x0002;
SciaRegs.SCIHBAUD.all = 0x0002;
ScibRegs.SCILBAUD.all = 0x008B;
SciaRegs.SCILBAUD.all = 0x008B;


ScibRegs.SCICTL1.all = 0x0023; // Relinquish SCI from Reset
SciaRegs.SCICTL1.all = 0x0023; // Relinquish SCI from Reset
}
}


void scib_xmit(int a)
void scib_xmit(int a)
{
{
while (ScibRegs.SCIFFTX.bit.TXFFST != 0) {}
while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {}
ScibRegs.SCITXBUF.all =a;
SciaRegs.SCITXBUF.all =a;
}
}


void scib_msg(char * msg)
void scib_msg(char * msg)
{
{
int i;
int i;
i = 0;
i = 0;
while(msg[i] != '\0')
while(msg[i] != '\0')
{
{
scib_xmit(msg[i]);
scib_xmit(msg[i]);
i++;
i++;
}
}
}
}


void scib_fifo_init()
void scib_fifo_init()
{
{
ScibRegs.SCIFFTX.all = 0xE040;
SciaRegs.SCIFFTX.all = 0xE040;
ScibRegs.SCIFFRX.all = 0x2044;
SciaRegs.SCIFFRX.all = 0x2044;
ScibRegs.SCIFFCT.all = 0x0;
SciaRegs.SCIFFCT.all = 0x0;
}
}