我们有一个简单的架构:
PIC通过基于中断的I2C通信协议与ARM通信,以传输数据。在中断内部,我们发出一个任务,它从I2C层(总线)读取数据。
如果数据有限,我们通常不会有太多问题来读取数据并将其发送到上层。如果这个数据非常庞大,中断将被连接很长时间。
第一个问题是:
我是对的吗?
如果我是对的,如何避免相同? ......或者我们可以采用不同的解决方案吗?
答案 0 :(得分:5)
拥有某种“工作线程”,有时称为内核线程,其工作是将数据从I2C接口中拉出并缓冲它,将其移交给系统的其他部分,等等。使用中断例程只是为了解除内核线程的阻塞。这样,如果系统必须执行其他任务,中断处理程序不会阻止它执行此操作,并且您仍然可以及时从设备中获取数据。
答案 1 :(得分:3)
在一次执行中断例程时,不应该读取完整的数据包。根据硬件支持,您应该处理一个样本/位/字节,将数据存储在缓冲区中,并仅在数据包完成时发出任务信号。