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

如何用CAN通讯连续发送大量数据

10200b38957374f1 2019-04-15 浏览量:6022
要一次发送完
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 一个CAN的保温,最大可以传输8BYTE的数据,所以没办法一次发送很多的数据,这个是CAN协议规定的。

    想要传输大量的数据,只有分包传输。


    在编程的时候,可以使用DMA,这样就能有效的避免MCU长时间的占用

    • 发布于 2019-04-16
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:9
  • CAN上面有总线仲裁机制,如果当前有更高优先级的数据正在传输,则低优先级的数据是发不出去的,所以理论上CAN是不能一次将全部数据发出去的。一般的CAN控制器会有三个发送缓存邮箱,能缓存三条发送的数据,一般操作CAN都是先将数据写到这些缓存邮箱里面,然后由硬件决定何时发出
    • 发布于2019-04-15
    • 举报
    • 评论 0
    • 1
    • 0

  • 一次性发完,可以使用DMA进行发送,这样CAN会自动 把DMA设置中数据 发完的。
    • 发布于2019-04-15
    • 举报
    • 评论 0
    • 0
    • 0

  • CAN总线的机制一帧数据最多就只能发8个字节,大量数据肯定是要进行缓存的。

    另外,对于超过8字节的数据,就需要利用协议了,J1939协议就是一种多包协议

    • 发布于2019-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 你要想一次发生完的请求可能不能强制得到满足,因为这个总线机制是基于协商的。除非你发送端的地址是总线中最小的(优先级最高的)。

    对于大量数据,最好再用协议封装一下,这样有更好的纠错机制,更容易保证数据完整性,当然,这会带来额外的资源占用消耗。

    • 发布于2019-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 大量数据一次是发不完的,一帧只能只有8字节,你可以把数据通过dma发送,那样就只要操作一次就可以了,硬件通讯上不需要cpu参与,数据全部发送完了会有中断
    • 发布于2019-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 要在总线上的协议上支持才可以的,否则其他的CAN设备可能会打断你的数据发送,由于CAN的机制限制。

    大量数据,除了有协议,还要有一个纠错的机制,保证数据的正确性

    • 发布于2019-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以分多次发送,然后在接收端将数据整合,可以参考DeviceNet协议的多包发送机制,或者使用多个ID发送
    • 发布于2019-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 总线上要设计好协议与逻辑,在有设备发的时候,其他的设备不可以发数据。

    大量数据可以使用DAM的方式发,效率高一些

    • 发布于2019-04-16
    • 举报
    • 评论 0
    • 0
    • 0

  • 要看数据量是多大的,如果内是几M的话,是可按顺序发送的,如果再大,就要分多次发送了,长时间占用总线,会使通讯效率降低
    • 发布于2019-04-17
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

如何用CAN通讯连续发送大量数据