FPGA串口通信及数据解析
3赞
发表于 2017/3/7 9:18:31
阅读(6889)
之前博客中介绍过FPGA中uart的实现,最近做了一个上位机,用于控制红外相机的工作状态,当然,协议也是自定义的。界面如下,包含相机校正算法的选择、图像增强算法参数的调整、不同算法的切换、参数的调整以及相关信息的反馈(相机温度、曝光时间等)。
采用C#做开发,上位机通过串口新闻给FPGA发送数据,在FPGA中,使用NIOS对接收到的数据做解析,并执行相应操作,同时给上位机反馈结果。采用普遍使用的控制协议,包括包头、字节数、命令字、操作字、校验字和包尾。
a) 包头:起始标志,1个字节,用16进制可表示为0xcc,返回0x55;
b) 字节数:数据长度N-2,1个字节;
c) 命令字:1个字节;
d) 操作字:1个字节;
e) 数据:N-4个字节;
f) 校验字:校验字前的所有字节数据累加和对256取余;
g) 包尾:结束标志,用16进制为表示为0xeb、0xaa。
这个系统控制部分的设计,主要可分为以下3个部分,后期将单独发文进行说明。
(1) 基于C#的简单的上位机串口通信软件设计;
使用SerialPort组件完成通信。
(2) 在FPGA中使用NIOS解析串口接收的数据;
前期博文中已经介绍了NIOS通过中断的方式接收数据,这里主要说说如何根据通信协议来对数据做解析,并通过寄存器映射的方式与逻辑通信。
(3) 基于C#串口通信软件解析下位机反馈的数据。
这里思路和第2点差不多,不过在处理上稍有差异。