芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 412|回复: 0

【ACG525】串口实验无法接收到数据

[复制链接]

该用户从未签到

56

主题

62

帖子

640

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
640
发表于 2024-10-29 15:00:10 | 显示全部楼层 |阅读模式
问题描述

ACG525开发板在进行串口回环实验的时候,会发现有的开发板可以成功发送并接收到数据,有的开发板需要修改停止位为1.5或者2之后才能成功接收到数据。

问题产生原因

ACG525使用的串口芯片为CH9102F,这款芯片没有使用外部高精度晶振,而是使用类似的误差较大的RC振荡器的方式产生内部工作时钟,从而导致的较大的误差。当程序接收完一个数据之后,产生rx_done信号时,uart_rx信号已经变成了低电平,而这个低电平正是新一个数据的起始位。也就是说,当我们的程序还没完成前一个数据的接收时,新一个数据已经在传输了,起始位下降沿已经过去了。所以这个下降沿会被我们的程序忽略,导致错误的判断数据起始位,从而导致数据接收出错。

问题解决方案

替换掉uart_byte_rx模块,不使用多次采样取中间值的方式,而是直接将每一位接收到的数据输出,模块和工程如下

uart_byte_rx.v (3.34 KB, 下载次数: 57)

uart_loopback.rar (536.36 KB, 下载次数: 495)


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

GMT+8, 2024-11-21 16:35 , Processed in 0.178647 second(s), 33 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

快速回复 返回顶部 返回列表