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

如何同时接受CAN和USART数据?

6f6d44aa19edb296 2019-08-18 浏览量:882
如何同时接受CAN和USART数据?
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 同时接受的定义是什么?

    首先,你是指同一个端口CAN又作USART吗?似乎硬件不支持这个接法吧?

    其次,如果是两个不同端口的话。用中断方式通讯,虽然数据到缓存是同时的,但是主控程序接收处理数据还是得一个一个的来。不可能同时进行处理,因为是CPU是单线程的。

    • 发布于 2019-08-19
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:6
  • 不知道你怎么定义同时?

    如果支持DMA的话,还可能通过硬件进行同步接收,否则只能是分时(只是间隔短,从上层来说感觉是同时的)。


    • 发布于2019-08-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 可以同时接收,都用中断接收的方法,然后在中断里面分时读取,或者用dma的方式,直接读取到内存,然后通过中断在读取内存中数据
    • 发布于2019-08-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 采用中断接收方式。

    即使串口和CAN数据同时来了,单片机会按照中断优先级去处理中断函数。

    你的中断函数要求住接收保存数据即可,

    处理数据建议放到主函数中,要求中断函数快进快出。


    如果设计的更完美一些,可以使用DMA接收的方式。

    • 发布于2019-08-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 貌似只有DMA可以解决. 设置DMA接收然后定时把里面的数据读出来. 
    • 发布于2019-08-19
    • 举报
    • 评论 0
    • 0
    • 0

  • 同时有没有时间差,还是说时间差是很小的,现在的程序除非是多内核的芯片,否则都是顺序执行的,没有绝对的同时,只能做到时间差尽量小。
    • 发布于2019-08-19
    • 举报
    • 评论 0
    • 0
    • 0

  • CAN与USART都是有专门的控制器,程序可以在发生中断,或者轮询的方式,去读取寄存器的数据
    • 发布于2019-08-19
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

如何同时接受CAN和USART数据?