• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

FPGA怎样串行接收16位或32位数据?

力洪 2019-10-11 浏览量:1475
这个问题困扰我好多天了 串口通信只能一次接收8位数据,而如果接收16位或32位的数据,那么得通过串口接收2个或4个8位数据,那如何把先后收到的一组数据转化成一个16位或32位数据呢?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:2
  • 这个其实涉及到多字节数据的拆分,简单的说来就是你只要自定义一个共用体,就可以实现16或者32转换成2个char或者4个char,这样就可以依次传输啦。

    其中这个还不是重点,关键是你需要在串口通信的两端定义协调的解析协议,才能保证另外一端获取的数据是正确的。

    这里其实涉及到大小端问题,如果两边多字节大小端是一致的,则直接按前面的依次送,依次取就好,否则如果串口通信两端对大小端的定义不一致,就只能借助完整的协议来保证这种多位数据通信是一致的。具体的实现需要参考具体协议文档,或者自己定义(这就是一个比较复杂的问题啦)

  • 可以尝试,寄存先后收到的数据,最后使用位拼接。比如如何用8位的FPGA串口程序接收16位的数据:传递两次 然后组合在一起就行了。例如 AB是一个16位数据 我先传A后传B 然后在接收位 接收A然后B 最后组合​

相关问题

问题达人换一批

FPGA怎样串行接收16位或32位数据?