在字节的最后一个位0写入后,CS必须被拉高。如果它在其他时间拉高,写操作不完全。在存储器写操作之后跟随一次非易失性写操作。可以通过读状态寄存器的WIP位来判断非易失性写是否结束。只有非易失性写结束之后才可以进行下次写操作。
值得注意的是McBSP在SPI模式下,只有数据发送的时候CLKX端才有时钟输出,FSX端才输出低电平的帧同步信号。因为在发送写使能和写数据指令之间要求CS(即FSX)变高,所以DSP要分两次把数据送给X5043。且这两次发送的字长不同(写使能一个字节,写数据三个字节),所以在发送之前需要重新配置McBSP。
3.2.2 读一个字节操作
当从E2PROM存储器阵列读数据时,首先CS通过FSX引脚拉低为低电平,然后送READ指令到器件,后面跟随8位地址,在后面就是发送8位无意义的数据(目的是为了继续产生时钟信号)。发送结束后,所选地址中的数据从SO端移出到McBSP的数据接收引脚。读操作时序如图4所示。
读操作和写操作一样,都是发送三个字节的数据,所以McBSP的串口字长要配置为24位。读操作发出以后,通过查看SPCR1寄存器的RRDY位来判断接收数据是否完成,若RRDY为1,则读DRR寄存器获取数据。
3.3 值得注意的地方
无论是写使能/写禁止、写状态寄存器还是写数据,当McBSP相应数据发送结束后,McBSP的时钟和帧同步信号都将变为无效状态,这种无效状态要保持至少10μs之上(否则数据将无法正确写入),然后在读取X5043的状态寄存器,判断非易失性写是否结束,结束了才可以进行其他操作。
4 结 语
通过SPI接口外接E2PROM,简化了硬件电路,提高了系统的可靠性和开发难度,具有很实际的应用价值。