永发信息网

如何设置 dsp2812 串口fifo

答案:2  悬赏:60  手机版
解决时间 2021-01-29 12:20
  • 提问者网友:皆是孤独
  • 2021-01-29 03:01
如何设置 dsp2812 串口fifo
最佳答案
  • 五星知识达人网友:鸠书
  • 2021-01-29 03:11
1.设置

void UartObj::Init(void)
{
unsigned int i;
for (i = 0; i < sizeof(ReceiveBuffer); i ++) {
ReceiveBuffer[i] = 0;
}
for (i = 0; i < sizeof(SendBuffer); i ++) {
SendBuffer[i] = 0;
}
ReceiveWritePtr = 0;
ReceiveReadPtr = 0;
ReceivePosition = 0;
ReceiveCount = 0;
SendWritePtr = 0;
SendReadPtr = 0;
SendBusy = false;
State = 0;

EALLOW;
GpioMuxRegs.GPFMUX.bit.SCITXDA_GPIOF4 = 1;
GpioMuxRegs.GPFMUX.bit.SCIRXDA_GPIOF5 = 1;
EDIS;

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.bit.TXINTENA =1;
SciaRegs.SCICTL2.bit.RXBKINTENA =1;
SciaRegs.SCIHBAUD = 0x0000;
// SciaRegs.SCILBAUD = SCI_PRD;
SciaRegs.SCILBAUD = SCI_BAUD(CBR_38400);
#if SCI_FIFO_MODE
// SciaRegs.SCICCR.bit.LOOPBKENA =1; // Enable loop back
SciaRegs.SCIFFTX.all=0xE061;
SciaRegs.SCIFFRX.all=0x2028;
#else
SciaRegs.SCIFFTX.all=0xA000;
SciaRegs.SCIFFRX.all=0x201F;
#endif
SciaRegs.SCIFFCT.all=0x00;

SciaRegs.SCICTL1.all =0x0023; // Relinquish SCI from Reset
#if SCI_FIFO_MODE
SciaRegs.SCICTL1.bit.SWRESET = 1;
// SciaRegs.SCIFFTX.bit.TXFIFOXRESET=1;
SciaRegs.SCIFFRX.bit.RXFIFORESET=1;
PieCtrlRegs.PIECRTL.bit.ENPIE = 1; // Enable the PIE block
#endif
PieCtrlRegs.PIEIER9.bit.INTx1 = 1;
PieCtrlRegs.PIEIER9.bit.INTx2 = 1;


EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.TXAINT = &ISRTxUart;
PieVectTable.RXAINT = &ISRRxUart;
EDIS; // This is needed to disable write to EALLOW protected registers


IER |= M_INT9;
}

望采纳。
全部回答
  • 1楼网友:神的生死簿
  • 2021-01-29 04:27
dsp2812晶振为30兆,pll为0x0a,cpu的频率就是150兆对吗? ----------对的。主频等于(晶振/2)*pll。这是2812的最高主频。 假设cputimer0的频率也为150兆,定时器的周期寄存器的初始化值是否为150*中断时间(中断时间单位为微妙) ----------是的。但前提是cputimer0预分频寄存器的值为0。 如果是这样,我要每50微秒产生一个定时器0的中断,怎么查看时间是否准确啊 ----------在定时器0中断服务程序中对一个io口进行取反操作,用示波器观察这个io的输出,周期是100微秒就对了。这个时间一般都是非常准确的,不用担心,只要你的设置是正确的,晶振是好的。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯