(5) DSP28335--SCI
(5)?DSP28335--SCI
?(2016-07-01 22:39:13)
| ? | 分類:?DSP學習 |
對于28335---SCI編程例程
1 ?SCI模塊初始化(主頻100M)
在main函數的初始化外設中設置SCI模塊,這里使用SCIA僅用于接收;
SCIC采用中斷接收,定時發送;
?
//----------------------------------------------------------
使能SCI外設時鐘
{
???SysCtrlRegs.PCLKCR0.bit.SCIAENCLK = 1; ??// SCI-A
???SysCtrlRegs.PCLKCR0.bit.SCICENCLK = 1; ??// SCI-A
}
//-----------------------------------------------------------
?//設置SCI模塊
void InitSCI()
{
SCIC
???ScicRegs.SCICCR.all =0x0007; ??// 1 stop bit, ?No loopback?
??????????????????????????????????// No parity,8 char bits,
??????????????????????????????????// async mode, idle-line protocol
?
???ScicRegs.SCICTL1.all =0x0003; ?// enable TX, RX, internal SCICLK,
??????????????????????????????????// Disable RX ERR, SLEEP, TXWAKE
?
???ScicRegs.SCICTL2.bit.TXINTENA =1;//enable TXRDY isr
???ScicRegs.SCICTL2.bit.RXBKINTENA =1;//enable RXBKINTENA isr
??
???ScicRegs.SCIHBAUD = 0x0000;
???ScicRegs.SCILBAUD = 0x001a; ??????//25MHZ ?115200bps
??
???ScicRegs.SCIFFTX.all=0xE000;
???ScicRegs.SCIFFRX.all=0x2028;//收取8個字符后進中斷
???ScicRegs.SCIFFCT.all=0x00;
?
???ScicRegs.SCICTL1.all =0x0023; ????// Relinquish SCI from Reset
}
//----------------------------------------------------
{// GPIO28-29設置成SCIA
???GpioCtrlRegs.GPAPUD.bit.GPIO28=0; ????????//使能GPIO28內部上拉電阻
???GpioCtrlRegs.GPAPUD.bit.GPIO29=0; ????????//使能GPIO29內部上拉電阻
?
???GpioCtrlRegs.GPAQSEL2.bit.GPIO28=3; ??????//異步輸入
?
???GpioCtrlRegs.GPAMUX2.bit.GPIO28=1; ??????//GPIO28=SCIRXDA
???GpioCtrlRegs.GPAMUX2.bit.GPIO29=1; ??????//GPIO29=SCITXDA
?
???//GPIO62設置成SCICRX
???GpioCtrlRegs.GPBPUD.bit.GPIO62=0; ????????//使能GPIO62內部上拉電阻
?
???GpioCtrlRegs.GPBQSEL2.bit.GPIO62=3; ??????//異步輸入
?
???GpioCtrlRegs.GPBMUX2.bit.GPIO62=1; ??????//GPIO62=SCIRXDC
}
//----------------------------------------------------------------------
{
EALLOW;
PieVectTable.SCIRXINTC = &scicRxFifoIsr;
?????????EDIS; ??// This is needed to disable write to EALLOW protected registers
IER |=M_INT8;
PieCtrlRegs.PIEIER8.bit.INTx5=1; ????//PIE Group 8, INT5
?
}
//-----------------------------------------------------
?
中斷函數接收數據
interrupt void scicRxFifoIsr(void)
{
???Uint16 j;
DINT;
for(j = 0; j < 8; j++)
{
??scicTempBuf[j] = ScicRegs.SCIRXBUF.all; // Read data ?一幀數據包包含16個字節
}
scicRecIntFlag = 1; //接收中斷標志
?
ScicRegs.SCIFFRX.bit.RXFFOVRCLR = 1; ??// Clear Overflow flag
ScicRegs.SCIFFRX.bit.RXFFINTCLR = 1; ??// Clear Interrupt flag
?
PieCtrlRegs.PIEACK.all |= 0x080; ??????// Issue PIE ack
EINT;
}
?
//----------------------------------------------
主循環中處理數據
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的(5) DSP28335--SCI的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CCS6.2超详细使用方法
- 下一篇: DSP之GPIO(转)