配置参考网上的和教程的。但是与PC通信还是没有反应。测试IO为GPIO28.29。串口转USB线没有问题,手头有个ARM测试过。DSP引脚和引出的插针也是通的,用万用表测试过。但是在运行程序的时候用示波器观察TX引脚,没有任何反应,波形。
应该是软件问题,可是不知道错在哪里,希望各位大大不吝赐教,耐心看一下我的代码。帮我解答一下问题 。谢谢谢谢。
void SciInit(void)
{
// 选择SCIA RX:GPIO28 TX:GPIO29
// 首先是引脚设定
EALLOW;
GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0;
GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0; // 上拉使能
GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 3; // 设置28引脚为异步输入
GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 1;
GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 1; // 配置为SCI 引脚
// SCI模块设置
SciaRegs.SCICCR.all = 0x07; // 无校验位 ,停止位1位,数据位8位,不回环,空闲线模式
SciaRegs.SCICTL1.all = 0x03; // 使能TX和RX
SciaRegs.SCICTL2.all = 0x03; // 使能TX和RX中断
SciaRegs.SCIHBAUD = 0x01;
SciaRegs.SCILBAUD = 0xE7; // 波特率9600 LSPCLK 37.5MHZ
SciaRegs.SCICTL1.all = 0x23; // 系统复位时自动复位
// FIFO配置
SciaRegs.SCIFFTX.all=0xE040;
SciaRegs.SCIFFRX.all=0x206f;
SciaRegs.SCIFFCT.all=0x0;
// 中断设置
PieVectTable.SCIRXINTA = &SciaRx_ISR;
PieVectTable.SCITXINTA = &SciaTx_ISR; // 配置中断向量表
PieCtrlRegs.PIECTRL.bit.ENPIE = 1; // 开启PIE模块
PieCtrlRegs.PIEIER9.bit.INTx1 = 1; // 使能9.1 SCIARXINT
PieCtrlRegs.PIEIER9.bit.INTx2 = 1; // 使能9.X SCIATXINT
IER |= M_INT9; // 开启CPU INT9;
EDIS;
}
/********中断程序**********/
interrupt void SciaRx_ISR(void)
{
Rx_Buf[rx_i] = SciaRegs.SCIRXBUF.all;
if(rx_i >=99)
rx_i = 0;
// SciaRegs.SCIRXST.bit.RXRDY = 1;
SciaRegs.SCIFFRX.bit.RXFFOVRCLR=1; // Clear Overflow flag
SciaRegs.SCIFFRX.bit.RXFFINTCLR=1; // Clear Interrupt flag
PieCtrlRegs.PIEACK.all|=0x100; // Issue PIE ACK
}
interrupt void SciaTx_ISR(void)
{
tx_i++;
if(tx_i >=99)
tx_i = 0;
// SciaRegs.SCICTL2.bit.TXRDY = 1;
SciaRegs.SCIFFTX.bit.TXFFINTCLR=1; // Clear SCI Interrupt flag
PieCtrlRegs.PIEACK.all|=0x100; // Issue PIE ACK
}
/***********发送函数**********/
void scia_xmit(int a)
{
SciaRegs.SCITXBUF = a;
}
mangui zhang:
建议你先打开发送中断 在发送的同时看看发送中断能否进入
确保有FIFO的数据被送出 其次就是采用自发自收的方式测试硬件是否通
然后在做相应的配置和操作
建议你写出你的控制器具体型号