一直没有认真看参考手册;只是猜测信号的流程;
当时翻看手册时发现,我的假设真的有错;如:
发送第一个数据时,数据被立即写入发送移位寄存器;同时,出现发送为空标志;(其实此时正在发送);
如果此时写入第二个数据,则新的数据并不立即发送,只是等上一个数据真的发送完毕,再进入移位寄存器;
发送为空的标志是发送数据进入移位寄存器后出现的标志;和真正发送完毕有一个时间差(提前出现);
这个提前出现是希望发送过程连续;不然,发一个等一下,再写入,再发送,中间有个停顿待命的状态,通讯的效率降低了;
--
我上面出现的错误就是误以为写一个数据,数据发送完毕才出现发送为空标志;
而读数据的时候,一旦一个数据移位完成即送入数据接收寄存器,出现标志待命;读一次后自动清标志位;
如果没有及时读取,下一个数据接收完成后再写入数据接收寄存器时,会出现溢出标志;
--
没有LPC213X的SPI好用;LPC213X有一个16个寄存器组的先进先出缓冲区;收发都有;
|