Cypress技术论坛
直播中

study875

12年用户 1097经验值
私信 关注

cy7c68013串口不能工作的原因是什么?

BYTE TEMP;
void FX2LPSerial_Init() // initializes the registers for using Timer2 as baud rate generator for a Baud rate of 38400.
{
TMOD = (TMOD   0x0F) | 0x20;
CKCON |= 0x10;
PCON |= 0x80 ;
EICON |= 0x80;
SCON1 = 0x50;
TH1 = 0xB2 ;
ES1 = 1;
TR1 = 1;
EA = 1;
}
void send_data(BYTE source)
{
SBUF1 = source;
while(TI1 == 0);
TI1 = 0;
}
void send_isr() interrupt 7
{
if(RI1 == 1)
{
RI1 = 0;
TEMP = SBUF1;
}
}
                                                         
cy7c68013 串口不能工作,想问一下,这样的配置有问题吗?我的固件中用到了 slval FIFO 模式,二者之间有冲突吗?                                                                                                                                                                                                                                                                                                                                      

回帖(1)

刘艳

2024-2-28 16:09:50
有多种可能导致CY7C68013串口不能工作:

1. 初始化参数设置错误:上述代码中的初始化函数`FX2LPSerial_Init`初始化了串口相关寄存器,如果其中的参数设置有误,可能会导致串口无法正常工作。

2. 波特率设置错误:在初始化函数中,通过设置`TH1`寄存器的值来设置波特率。如果波特率设置错误,可能会导致通信问题。

3. 中断设置错误:在初始化函数中,通过设置`ES1`和`EA`来使能串口接收中断。如果中断设置有误或中断服务函数有误,可能会导致串口无法正常接收数据。

4. 电路连接问题:串口通信需要正确连接TX和RX引脚,如果连接有误或者存在电路故障,可能会导致串口无法工作。

5. 软件逻辑错误:根据提供的代码,很难判断是否存在其他逻辑错误或其他关键代码未提供。需要仔细检查完整的代码和系统设计,确保没有其他问题。

需要对具体的硬件和软件环境进行更详细的分析和排查,才能确定具体原因。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分