在写一个FPGA的串口通讯问题
2013-01-19 20:13
176 查看
最近在弄一个工程用16位串口通讯,结果在2个FPGA板之间测试通讯一切正常,如A板发出100,B板接收后加1 变为101 返回给A A在+1 变为1-2 给B.....模块测试过程一切正常,然后添加到带AD -SDRAM 的整个工程中以后就不在好用了,调试了半天就是数据丢失和不正确,也没发现问题所在波特率用500K~9600效果是一样的,后来用逻辑分析发现输出端在输出一切正常,接收端在接收数据后没有接收到接收到结束尾即数据线拉高,这样在下个数据来时由于电平不在高位就没有起始位或者说起始位不正确了就照成了数据丢失和不正确,但是模块在单独测试时是正确的呀?为什么会这样呢???
后来看代码发现在发送结束时发送模块会产生一个发送结束信号(即停止位数据线拉高以后)但是别的模块在使用这个发送结束时,收到发送结束就立即开始发送新的数据了,这就有个问题了其实最后一位才刚发出(模块工作频率是100M信号)一两个周期 也就是信号是50M~25M的频率但是在串口通讯中使用了其他转换芯片如3232等它的转换频率是最高1M 这样最后停止位以50M高频根本不能通过这个芯片就照成了接收端的没有数据结束尾,其他位正确是因为其他为的频率是500K的一句话最后以为拉高后发送结束的信号给早了应该等200周期(100M的)以后在产生发送结束信号方便系统其他模块使用(即500K频率发送停止位),具体代码明后天在补上吧!
后来看代码发现在发送结束时发送模块会产生一个发送结束信号(即停止位数据线拉高以后)但是别的模块在使用这个发送结束时,收到发送结束就立即开始发送新的数据了,这就有个问题了其实最后一位才刚发出(模块工作频率是100M信号)一两个周期 也就是信号是50M~25M的频率但是在串口通讯中使用了其他转换芯片如3232等它的转换频率是最高1M 这样最后停止位以50M高频根本不能通过这个芯片就照成了接收端的没有数据结束尾,其他位正确是因为其他为的频率是500K的一句话最后以为拉高后发送结束的信号给早了应该等200周期(100M的)以后在产生发送结束信号方便系统其他模块使用(即500K频率发送停止位),具体代码明后天在补上吧!
相关文章推荐
- 写串口SerialPort时遇到的一个问题无故关闭窗体
- 基础问题:在一个 Activity 中定义的串口接收程序,如果 Activity 切换到其它 Activity 后还能接收到串口数据吗?
- 用Qt编写一个串口通讯程序
- 一个与串口进行通讯的 U32 ,完全免费
- VB使用API实现串口通讯的异常问题
- 串口通讯的问题
- 关于Windows Mobile 6 Professional Emulator中的一个串口设置小问题.
- 关于RS485通讯中使用STM32串口以DMA方式发送数据丢失字节的问题
- ecshop与Ucenter通讯失败的一个很怪的问题
- FPGA串口通讯时波特率不稳定导致接受异常
- 关于Windows Mobile 6 Professional Emulator中的一个串口设置小问题
- 异步串口 I/O操作 中遇到的一个问题及解决
- 一个串口通讯的类
- 串口通讯的延时问题
- 单片机和串口设备通讯设计时要注意的几个问题
- 一个关于android蓝牙通讯的问题
- 学习与思考之三,一个串口通讯程序
- 一个奇怪的串口问题
- 单片机与PC机串口通讯接地问题
- vs2008中串口编程中的一个小问题