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

TL16C554AI 不能发送数据

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

我在使用贵公司的串口芯片TL16C554AI 有个问题一直解决不了,加电对芯片配置寄存器,状态就绪后,通过电脑串口端发送数据,TL16C554AI 可以正常接收数据,中断信号正常,主控MCU读取数据均正确。将接收到的数据发送回电脑串口端,电脑串口端接收不到数据,使用示波器监测TL16C554AI 数据发送引脚TX 无波形输出,数据发送使用的模式为FIFO 并且发送中断已经打开,无发送FIFO空中断信号输出,发送缓存地址与接收缓存地址均正确时0地址寄存器

您好

能否提供原理图和您的测试框图供参考,以便更好的理解您的问题?

谢谢

TL16C554配置程序

//波特率配置使能
(*(uint8 *)(TL16C554_CHA_addr + RegLCR)) = 0x80;

//波特率配置115200 8MHz晶振
(*(uint8 *)(TL16C554_CHA_addr + RegDLL)) = 0x04;
(*(uint8 *)(TL16C554_CHA_addr + RegDLM)) = 0x00;

//波特率配置禁止 奇偶校验禁止 1个停止位 8个数据位
(*(uint8 *)(TL16C554_CHA_addr + RegLCR)) = 0x43;

//清空FIFO
(*(uint8 *)(TL16C554_CHA_addr + RegFCR)) = 0x07;
//使能FIFO
(*(uint8 *)(TL16C554_CHA_addr + RegFCR)) = 0xC1;

//使能 接收中断 发送中断
(*(uint8 *)(TL16C554_CHA_addr + RegIER)) = 0x03;

//串行中断使能
(*(uint8 *)(TL16C554_CHA_addr + RegMCR)) = 0x08;

原理图 

6648.原理图.pdf

谢谢 !

Shuai, 您好

谢谢您提供的信息。

您不能发射的原因在于把Break Control bit (LCR6) 配置成了1。 为了恢复到正常的发射模式(LCR=43-->LCR03),必须清零该位。

Break Control bit (LCR6) 该位我最开始的配置是清零的,清零也有问题,串口调试助手那里一直在收数据,我没有发送数据,从示波器那里看到芯片TX管脚输出的波形是正占空比较小的频率波形,芯片配置的波特率是115200,波形的频率大概在17KHz,此波形的频率会随配置的波特率不同而不同,串口调试助手的波特率是115200,收到的数一直是0x80 00,在此状态下串口调试助手发数据给芯片,芯片能正常接收,数据均正确。还有一个现象就是,芯片的硬件复位撤销后,串口调试助手收到芯片发出的数据0。

问题解决了!外部地址控制接口分静态和动态,启动文件默认把静态和动态都开启,读写TL16c554使用的是静态的,但是动态的也开启,静态与动态共用一个wr信号,对TL16C554无操作状态下,wr信号受动态控制,会按一定频率高低跳变时能TL16C554的写功能。又由于TL16C554的地址线和片选都用的MCU地址线做,在空闲状态下都为低电平,所以在wr信号配合下,不断的向TL16c554的发送FIFO写数据,FIFO一直都是满状态,MCU收到的数据也无法写到FIFO中,TL16c554一直在发送wr信号影响的数据。解决办法将动态的禁止掉就可以了。还有配置完TL16C554后,要回读一遍控制线状态寄存器和中断状态寄存器,否则收到数据TL16C554没有中断输出。

shuai

好消息。

非常感谢您把结果分享出来供大家参考,谢谢

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

网站地图

Top