电子工程师技术服务社区
公告
登录
|
注册
首页
技术问答
厂商活动
正点原子
板卡试用
资源库
下载
文章
社区
论坛
综合技术专区
【ALTERA AX301 FPGA开发板试用体验】+串口发送程序改进与经...
【ALTERA AX301 FPGA开发板试用体验】+串口发送程序改进与经...
@曲终人散@
LV5工程师
| 2017-11-27 21:37:03
浏览量 974
回复:0
发表新帖
这贴先说说对程序的改进,最主要的是分享一下从中汲取的
经验教训
首先,在程序上进行了模块的设计,不再是把所有的东西都堆在一个文件里,这样可以提高模块的复用性。
这次的程序分为两个部分,一个是
波特率时钟产生模块
,另一个就是
串口发送模块
了
波特率时钟模块如下:
之后就是利用这个时钟来发送数据,利用这个时钟就不用向上一次一样每次时钟上升沿到来后都得判断是否到了要发送数据的时候了,
这次只需要每次在时钟到来时发送就行了,然后把状态变成下一个状态,一直到发送完停止位进入空闲状态为止发送完一帧数据,
程序框架如下:
这次跟上次相比只用到了四个状态,完全是按照串口通信协议状态设置的,结构非常清晰。
下面就是重点了,这个程序我调试了很长时间一直找不到错误,最后发现只有在程序初始执行的时候正确,也就是只能正确的发送一帧数据,这证明程序本身应该没有大的问题,因为毕竟第一个数据是可以发送成功的,说明第一次发送成功之后有些小的部件出现了问题,在反复的查看之后发现,是在发送完第一个数据之后忘了对其中的一个中间值进行再次清零了,这才导致只有第一次使用的时候才是正确的。
总结一句话:
细节决定成败
。
这贴先说说对程序的改进,最主要的是分享一下从中汲取的
经验教训
首先,在程序上进行了模块的设计,不再是把所有的东西都堆在一个文件里,这样可以提高模块的复用性。
这次的程序分为两个部分,一个是
波特率时钟产生模块
,另一个就是
串口发送模块
了
波特率时钟模块如下:
之后就是利用这个时钟来发送数据,利用这个时钟就不用向上一次一样每次时钟上升沿到来后都得判断是否到了要发送数据的时候了,
这次只需要每次在时钟到来时发送就行了,然后把状态变成下一个状态,一直到发送完停止位进入空闲状态为止发送完一帧数据,
程序框架如下:
这次跟上次相比只用到了四个状态,完全是按照串口通信协议状态设置的,结构非常清晰。
下面就是重点了,这个程序我调试了很长时间一直找不到错误,最后发现只有在程序初始执行的时候正确,也就是只能正确的发送一帧数据,这证明程序本身应该没有大的问题,因为毕竟第一个数据是可以发送成功的,说明第一次发送成功之后有些小的部件出现了问题,在反复的查看之后发现,是在发送完第一个数据之后忘了对其中的一个中间值进行再次清零了,这才导致只有第一次使用的时候才是正确的。
总结一句话:
细节决定成败
。
0
收藏
举报
分享
×
微信分享
扫描二维码分享
qq分享
QQ空间分享
微博分享
我来回复
登录后可评论,请
登录
或
注册
所有回答
数量:
0
×
举报
举报人:
被举报人:@曲终人散@
*
类型:
请选择类型
问题质量差
垃圾广告信息
偏离社区主题
违规内容
不友善内容
与社区已有问题重复
以上选项都不是
*
详细原因:
取消
提交
x
收藏成功!点击
我的收藏
查看收藏的全部帖子