第一次写配置接口,请大家指点指点:
按照例程的模板,先配置PSC寄存器,然后配置GPIO复用管脚,其次配置UART寄存器,最后在while循环中进行固定值发送输出,通过PC机的串口调试工具对DSP串口进行输入,具体程序如下:
char info1='$';
char info2='#';
int i=0;
// PSC0-uart0配置
asm(" NOP 5");
*(unsigned int*)(0x01C14038)=0x83E70B13; // KICK0R
*(unsigned int*)(0x01C1403C)=0x95A4F1E0; // KICK1R
asm(" NOP 5");
// uart0复用管脚配置
*(unsigned int*)(0x01C14140)=0x00011000; //PINMUX8
asm(" NOP 5");
// uart0寄存器配置
uartRegs->PWREMU_MGMT=0; // PWREMU_MGMT
uartRegs->MDR=0; // MDR
asm(" NOP 5");
uartRegs->LCR=0x80; // LCR
asm(" NOP 5");
uartRegs->DLL=0x36; // DLL
uartRegs->DLH=0x0; // DLH
asm(" NOP 5");
asm(" NOP 5");
uartRegs->LCR=0x3; // LCR
asm(" NOP 5");
uartRegs->FCR=0x6; // FCR
uartRegs->FCR=0x1; // FCR
uartRegs->PWREMU_MGMT=0x6001; // PWREMU_MGMT
asm(" NOP 5");
asm(" NOP 5");
asm(" NOP 5");
while(1)
{
for(i=0;i<1000;i++) // 延时
{
asm(" NOP 5");
}
if((uartRegs->LSR&0x60)>0)
{
uartRegs->THR=info1; // 固定值输出
asm(" NOP 5");
asm(" NOP 5");
asm(" NOP 5");
asm(" NOP 5");
asm(" NOP 5");
uartRegs->THR=info2; // 输入值输出
asm(" NOP 5");
asm(" NOP 5");
}
if((uartRegs->LSR&0x1)==0x1)
{
info2=uartRegs->RBR; // 接收输入值
}
}
连接仿真器进行仿真调试,能够接收PC机发送过来的数据,DSP发给PC机的数据也完成了uartRegs->THR的赋值,但是PC机接收不到。请问哪里没有配置完全吗,或者哪里配置错误吗????
请高手指点一下,这是怎么回事,程序什么地方有错误,硬件肯定是没有问题的,谢谢了!
noaming:
你好,先用示波器测量一下UART数据有没有发送出来。