0

我们有一个简单的架构:

  1. 主芯片(基于arm9)
  2. PIC控制器

PIC 通过基于中断的 I2C 通信协议与 ARM 通信以传输数据。在中断内部,我们发出一个从 I2C 层(总线)读取数据的任务。

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

第一个问题是:

  1. 我对吗?

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

4

2 回答 2

5

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

于 2009-09-15T11:36:08.677 回答
3

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

于 2009-09-15T11:27:34.860 回答