工具/软件:
EMIF16配置为 SS 模式、CE0和 CE1两个芯片使能信号同时启用。 ce0上的16位写入周期大约需要208ns。
上图显示了延迟问题:
配置:
- 波形0:ce0
- 波形1:CE1
- 波形2:WE
- 波形3:OE
- 波形4:外部输入 IO 信号
- 波形5:外部输入中断功能
在 main 函数中、数据被连续写入 ce0、每次写入都是一个16位周期。 当外部输入 IO 信号触发高电平时、系统进入中断服务例程(ISR)。 ISR (优先级0x16)首先将两个16位数据项写入 CE1、然后从 CE1读取一个16位数据。
问题描述:
- 中断服务例程的触发延迟了大约12个 EMIF16 ce0写入周期、在此期间正在处理 ce0数据传输。
- 写入 CE1时、即将芯片使能从 ce0切换到 CE1时、发生了另一个延迟、大约26个 EMIF16 ce0写入周期、在此期间仍在处理 ce0数据传输。
在主循环内部、数据从 ce0连续读取、每次读取都是一个16位操作。 当外部输入 IO 信号触发高电平时、系统进入中断服务例程(ISR)。 ISR (具有优先级0x16)首先将两个16位数据项写入 CE1、然后从 CE1读取一个16位数据项。
在读取操作期间、中断触发时间约为872ns、这是合理的。 此外、在片选切换期间处理 ce0数据没有明显延迟。
期望:
我们需要避免图1所示的情况、即中断服务例程和芯片选择切换仍需要等待正在进行的 ce0数据操作完成。 此中断用于处理实时数据、因此可以应用哪些解决方案来解决此问题?