搜索
bottom↓
回复: 12

求个 FPGA 串口 程序

[复制链接]

出0入0汤圆

发表于 2013-5-7 18:44:08 | 显示全部楼层 |阅读模式
现在会点灯了

想更进一步,弄个串口程序玩玩,希望大概的功能

1、收发正常,能与PC 段的串口完成交互,,比如PC 发一串 16进制数(长度可变),
  假设一条命令:bootcode len cmd para para... checksum,, 由PC端发送

FPGA ,将上面的可变命令行,全部接受,并根据CMD,PARA,即命令和参数,执行相应的 过程,并将执行结果,通过串口传给PC

返回包格式: bootcode len cmd res res... checksum

好整么?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2013-5-7 19:31:12 | 显示全部楼层
本帖最后由 wangjun403 于 2013-5-7 19:33 编辑

串口是串口程序,只能实现基本收发

你说的协议在自己再实现个协议解码

有什么问题可以联系我

系统的时钟需要使用分频好的时钟
如果你是9600bps,输入时钟就要是9600*16

我只在modelsim上跑了功能仿真




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-5-8 07:07:08 | 显示全部楼层
TKS

我来试试,有问题再请教您

出0入0汤圆

 楼主| 发表于 2013-5-8 11:15:26 | 显示全部楼层
请教一下,你这个程序的CLK 是多少?

出0入0汤圆

发表于 2013-5-8 12:32:54 | 显示全部楼层
看你需要用的波特率
baudrate*16就是需要提供给系统的时钟

出0入0汤圆

 楼主| 发表于 2013-5-8 12:43:52 | 显示全部楼层

20 20 20 20 20 20 20 20 A0 02 40 05 80 0A 40 04 80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 02 40 05 80 0A 40 04 80 20 20 A0 02 40 05 80 0A 40 04 80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 02 40 05 80 02 40 04 80 20 20 20 20 20 20 20 20 20 28 20 20 20 20 20 20 20 20 20 20 A0 02 40 05 80 0A 40 04 80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20


将你的代码,新建工程了,,编译后,烧写到板子里,,在PC上用串口监控软件接收数据,自带的抛出数据,貌似应该全是16进制的“20”吧
但是发现中间有“错误”的数据,如红色部分


这个是啥原因呢?
本来是要截图的,发现不能直接上传图片,就copy了内容(部分)

出0入0汤圆

 楼主| 发表于 2013-5-8 12:49:19 | 显示全部楼层
发现,我串口调试,是有偶校验的

现在,我把校验位给设置“NONE”了,主动抛出来的数据

05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 00 20 05 40 20 05 00 20 05 00 20 05 00 20 05 00 20 05


出0入0汤圆

 楼主| 发表于 2013-5-8 12:56:03 | 显示全部楼层
好像也不对吧
好像应该是发“00 20 50”,按找这个规律的话, 那出现 “40”的概念过高了,应该“00”错成了“40”

如果“40... ”开始的数据包, 那就太没规律了

劳驾给解释解释您这程序呀 谢谢

出0入0汤圆

 楼主| 发表于 2013-5-8 13:06:26 | 显示全部楼层
另外有两个问题
1、 4个 *.v的文件,不包括测试文件,,没找到波特率控制的地方呀,你是咋控制的?
2、如果不添加 UARTAutomatic.v文件,保留 uart.v文件加收、发两个文件,怎么使用?也就说可以完成如下功能么?

收发正常,能与PC 段的串口完成交互,,比如PC 发一串 16进制数(长度可变),
  假设一条命令:bootcode len cmd para para... checksum,, 由PC端发送

FPGA ,将上面的可变命令行,全部接受,并根据CMD,PARA,即命令和参数,执行相应的 过程,并将执行结果,通过串口传给PC

返回包格式: bootcode len cmd res res... checksum


如果需要修改的话,说说大概思路,能详细点最好了 谢谢

出0入0汤圆

发表于 2013-5-8 13:51:22 | 显示全部楼层
本帖最后由 wangjun403 于 2013-5-8 13:54 编辑

我没有主动抛出任何数据

1.波特率是要你自己写个分频模块,把时钟输入进去的
2.UARTAutomatic.v文件,就是你发什么数据,就会收到什么数据,只是测试用的
uart.v文件加收、发两个文件,如果你要对发下来的数据进行处理,就需要用这个文件,比如你说的“ 假设一条命令:bootcode len cmd para para... checksum,, 由PC端发送”,就要对收到的数据另外进行处理
uart.v文件只负责接收你发过来的数据和将你要和PC交互的数据发回去

你只要看懂uart检测数据的原理,肯定可以看明白程序了
是在不明白,modelsim的仿真工程都在里面,自己跑下就好了

出0入0汤圆

发表于 2013-5-8 14:04:21 | 显示全部楼层
qq:272729928

出0入0汤圆

发表于 2013-8-11 20:14:17 | 显示全部楼层
学习中……

出0入0汤圆

发表于 2013-8-11 21:35:40 | 显示全部楼层
楼主试试我这个,验证通过,

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 04:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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