转贴: https://www.amobbs.com/thread-5531722-1-1.html?_dsign=ee3f23a5
问题:
见过一些SPI-Flash有Hold引脚,最近在使用的一款FRAM也有Hold引脚。datasheet上的说法是,MCU被其它task中断的时候,给Hold一个低电平,就Hold了FRAM。
但是,问题是,在程序中,怎么利用这条引脚呢?在每一个中断的入口处给一个低电平到Hold脚?
回答1:
我的理解是:在批量操作FRAM时(只下发一个地址,地址递增)。比如读100个Byte,而此时正好读到10个Byte时MCU发生了中断,在中断处理过程中不能正常接收SPI总线上的其它数据(接下来第11~100),那么为了避免这样情况发生,在MCU被操作SPI被中断时Hold住FRAM,让它的时序暂停,等待MCU能继续接收(第11~100)时解除Hold,此时FRAM继续发送数据(第11~100)给MCU。
回答2:
当多个芯片共用 SPI 总线时才用。 假设对一个 SPI FLASH 的页写操作只进行到一半, 此时一个中断来了, 另一个更高优先级的任务要占用 SPI 总线, 此时就可以使用 HOLD 拉低来暂停 SPI FLASH 内部的工作, 等到任务切换回来再让操作继续下去.