1、基于节数概述
在这篇文章:基于FPGA的任的串任意字节数的串口发送(含源码工程)中实现了基于FPGA的任意字节数的串口发送,那么对应的意字源码,这一篇文章将分享给大家如何实现任意字节的口接FPGA接收方法。
在这篇文章:串口(UART)的收含FPGA实现(含源码工程),实现了基于FPGA的工程串口接收驱动。利用接收驱动可以实现 起始位1bit+数据位8bit+停止位1bit共10bit的基于节数单字节接收。
但是任的串在实际应用过程中有时候需要一次性接收多个字节的数据。比如,意字源码一次性通过UART接收5个字节的口接数据,再将其组合成一个位宽为【39:0】的收含数据。诚然,工程可以直接更改此文中的基于节数串口接收驱动,使其变成 起始位1bit+数据位40bit+停止位1bit 共42bit的任的串多字节传输。这种方法理论上是意字源码可行的,因为UART协议并没有规定你一次要发送、接收多个少bit的数据,既然能接收8个bit,那同样能接收40个bit。
但是很不幸,实际上基本行不通,因为通用的绝大部分上位机软件都不支持一次解析40bit的数据位(如果你自己写上位机就当我没说)。
所以只能想点其他办法,比如:写个逻辑,多次调用8bit即单字节的串口接收驱动,那么40bit的数据就调用5次,也就是5个 起始位1bit+数据位8bit+停止位1bit共10bit的单字节分别接收,再组合成一个40bit的数据就可以了。
2、串口接收驱动
请参考:串口(UART)的FPGA实现(含源码工程),在此文详细介绍了串口的接收驱动。
以下代码可以实现 1bit+数据位8bit+停止位1bit 共10bit的单字节接收,无奇偶校验。
// 作者:时尚