关于基于中断的通信

时间:2009-09-15 11:14:53

标签: communication arm interrupt pic i2c

我们有一个简单的架构:

  1. 主芯片(基于arm9)
  2. PIC控制器
  3. PIC通过基于中断的I2C通信协议与ARM通信,以传输数据。在中断内部,我们发出一个任务,它从I2C层(总线)读取数据。

    如果数据有限,我们通常不会有太多问题来读取数据并将其发送到上层。如果这个数据非常庞大,中断将被连接很长时间。

    第一个问题是:

    1. 我是对的吗?

    2. 如果我是对的,如何避免相同? ......或者我们可以采用不同的解决方案吗?

2 个答案:

答案 0 :(得分:5)

拥有某种“工作线程”,有时称为内核线程,其工作是将数据从I2C接口中拉出并缓冲它,将其移交给系统的其他部分,等等。使用中断例程只是为了解除内核线程的阻塞。这样,如果系统必须执行其他任务,中断处理程序不会阻止它执行此操作,并且您仍然可以及时从设备中获取数据。

答案 1 :(得分:3)

在一次执行中断例程时,不应该读取完整的数据包。根据硬件支持,您应该处理一个样本/位/字节,将数据存储在缓冲区中,并仅在数据包完成时发出任务信号。