[DSP28335] UART 테스트 - TMS320F28335 SCI
TMS320F28335의 UART Baudrate 설정 LSPCLK에서 부터 생성되며 다른 C2000 (TMS320F2812, TMS320F2808)과 다르게 37.5Mhz의 내부 발진기로 할당된다. 따라서 보레이트 설정 부분을 수정해야 정상 동작한다.
보레이트 설정은 아래와 같이 설정하면된다.
UART 송수신을 위한 함수 포팅
TMS320F28335 SCI (UART) 초기화 함수
TMS320F28335의 UART Baudrate 설정 LSPCLK에서 부터 생성되며 다른 C2000 (TMS320F2812, TMS320F2808)과 다르게 37.5Mhz의 내부 발진기로 할당된다. 따라서 보레이트 설정 부분을 수정해야 정상 동작한다.
보레이트 설정은 아래와 같이 설정하면된다.
UART 송수신을 위한 함수 포팅
unsigned char U0_GetByte(void)
{
// wait for RRDY/RXFFST =1 for 1 data available in FIFO
while(SciaRegs.SCIFFRX.bit.RXFFST !=1) { };
return RxData();
}
void U0_PutByte(unsigned char Data)
{
while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {};
TxData(Data);
}
{
// wait for RRDY/RXFFST =1 for 1 data available in FIFO
while(SciaRegs.SCIFFRX.bit.RXFFST !=1) { };
return RxData();
}
void U0_PutByte(unsigned char Data)
{
while (SciaRegs.SCIFFTX.bit.TXFFST != 0) {};
TxData(Data);
}
TMS320F28335 SCI (UART) 초기화 함수
void U0_Init(unsigned char baud)
{
InitSciaGpio();
SciaRegs.SCIFFTX.all=0xE040;
SciaRegs.SCIFFRX.all=0x204f;
SciaRegs.SCIFFCT.all=0x0;
U0_SetBaud(baud);
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 =1;
SciaRegs.SCICTL2.bit.RXBKINTENA =1;
SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
}
{
InitSciaGpio();
SciaRegs.SCIFFTX.all=0xE040;
SciaRegs.SCIFFRX.all=0x204f;
SciaRegs.SCIFFCT.all=0x0;
U0_SetBaud(baud);
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 =1;
SciaRegs.SCICTL2.bit.RXBKINTENA =1;
SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
}
반응형