微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > TL16C554数据读取

TL16C554数据读取

时间:10-02 整理:3721RD 点击:

用TL16C554与DSP连接,实际使用7.3728M有源晶振,原理图如下

调试过程

1)配置如下 

       BaseAddress_TL16C554 = (Uchar *)(CS7_BASE);

    //数据格式 ,LCR Bits 0 and 1:1 1= 8 Data bits;0 = 1 Stop Bit;0 = Parity Disabled;1 = Access Divisor Latches

       *(BaseAddress_TL16C554 + Addr_LCR) = 0x80;

       DELAY_US(5);

 

       if((Chan == 0x0A)||(Chan == 0x0B))//陀螺

       {

           //波特率 460800=7.3728MHz/16/BAUD RATE ,BAUD RATE=1 , DLM:DLL= D15:D0

              *(BaseAddress_TL16C554 + Addr_DLL) = 0x01;

              *(BaseAddress_TL16C554 + Addr_DLM) = 0x00;

       }

       else if((Chan == 0x0C)||(Chan == 0x0D))//编码器

       {

           //波特率 115200=7.3728MHz/16/BAUD RATE ,BAUD RATE=4 ; 9600=16MHz/16/BAUD RATE ,BAUD RATE=104

              *(BaseAddress_TL16C554 + Addr_DLL) = 0x04;

              *(BaseAddress_TL16C554 + Addr_DLM) = 0x00;

       }

       DELAY_US(5);

    // LCR Bits 0 and 1:1 1= 8 Data bits;0 = 1 Stop Bit;0 = Parity Disabled;0 = Access Receiver Buffer

       *(BaseAddress_TL16C554 + Addr_LCR) = 0x03;

    //FIFO深度 FCR0 :enables the transmit and receive FIFOs;Bits 7 and 6: 1 1   14BYTES FIFO

       *(BaseAddress_TL16C554 + Addr_FCR) = 0x07;//清空FIFO

       DELAY_US(5);

       *(BaseAddress_TL16C554 + Addr_FCR) = 0x81;//使能FIFO

       DELAY_US(5);

       // 使能接收发送中断 IER0: the received data available interrupt and the timeout interrupts in the FIFO mode;

       // IER1: the transmitter holding register empty interrupt  ;IER2: receiver line status interrupt is enabled

       *(BaseAddress_TL16C554 + Addr_IER) = 0x05;

       DELAY_US(5);

    //external serial channel interrupt  Enabled

       *(BaseAddress_TL16C554 + Addr_MCR) = 0x08; //运行之后INT由低电平升为高电平;  //电平还是低电平,未变高

       DELAY_US(5);

       *(BaseAddress_TL16C554 + Addr_SCR) = 0xEE;//调试写数据

//     DELAY_US(5);

//     *(BaseAddress_TL16C554 + Addr_THR) = 0x32;

}

2)电路板上电后,各引脚电压均为3.3V,测得XTAL2波形如下

3)TL16C554配置,在CCS主程序调试读取如下

数组0-7依次对应以下地址的寄存器值

MCR和SCR读取数据和设置匹配

如果屏蔽掉*(BaseAddress_TL16C554 + Addr_LCR) = 0x03;

读取出来的是0xFF00,而不是0xFF80,为什么设置不了呢?

4)串口助手发送数据,间隔1ms ,10ms,100ms

示波器测得数据已经到TL16C554的RX引脚,但始终不能读到RBR的值,为0xFF00;

估计RBR的数据不能读取和LCR没有设置bit7位相关,请教各位是什么原因呢?

对以上问题3)需要说明的是,如果直接从memory view中可以看到

   *(BaseAddress_TL16C554 + Addr_LCR) = 0x80;

相应地址的数据变为0xFF80

自己顶下,现在主要关注数据没有读出,各位大神帮忙指导一下

通过单步运行配置文件,发现把配置文件一些语句加上延时,全速运行的话,数据可以顺利读出。

不过发现另外一个问题,就是FIFO中断无法工作,无论是INTA中断还是RXRDY中断,发送一个字节数据(尽管FIFO触发深度配置的是8字节或14字节)

都是进入中断,不知道有人能解答这个问题没?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top