本帖最后由 lai832 于 2016-12-8 23:24 编辑
谢谢,
我的有些少区别
1.主机(其它芯片)的CLK是长期有的
2.所以硬件就设计成了:从机(F4)的NSS通过门控制是否能送到从机(F4)的SPI_CLK;
因为从机收到主机的CLK才开始发送的,
所以流程变为:
先将要发的第一个16BIT数放在DR,
再拉低NSS-----------同时SPI_CLK收到主机的CLK,开始发数据
因为这个NSS是从机控制的(主机的NSS是输入-------主机还有一人NSS_Out是用于主机输出的NSS控制)
所以出现了,
检测到BUSY不忙时,更新NSS出现了延时, NSS无法准时关掉CLK送到SPI_CLK的时钟,
F4收到了33个时钟
明天我试一下用其它的时钟时序试一下,板子在公司
==================================================================================
BTW:检测TX空标志可以不用每次更新DR,都是拉一次NSS,
因为DR为空时,TX空标志有效, 但这时数据还是在发送中的
-------因为DR是并行送到移位寄存器, 并行送完就生成TX空 标志, 但移位发送还没完成, 所以检测到TX空标志时,可以马上更新后一个TX_BUFF到DR.这样发送是连续的
-------BUSY是移位寄存器忙时有效, 无数据要移位时为0,
|