SPI传输到底什么时候开始?

问题描述

因此,在 SPI 部分阅读 NXP LPC2129/01 的数据表时,我发现:

当设备是主设备时,传输的开始由主设备具有准备传输的数据字节来指示。 此时,主机可以激活时钟,并开始传输。当传输的最后一个时钟周期时传输结束 已完成。

一个设备是从设备,并且CPHA设置为0时,传输开始 当 SSEL 信号变为有效时,并在 SSEL 变为无效时结束。 当设备是从设备并且 CPHA 设置为 1 时,传输开始于 选择从机时的第一个时钟沿,并在最后一个时钟沿结束 采样数据的时钟边沿。

要清楚 - 我的代码部分,代表传输看起来像这样:

IO0CLR = SPI_CS_bm;                                         

S0SPDR  = (DAC_GA_bm | DAC_SHDN_bm) | (uiVoltage >> 8);
while((S0SPSR & SPI_SPIF_bm) == 0){         
}
S0SPDR  = (uiVoltage);                                                          
while((S0SPSR & SPI_SPIF_bm) == 0){         
}

IO0SET = SPI_CS_bm;

下面您可以看到记录信号(感谢逻辑分析仪)。简短说明:

Channel 0 = CS
Channel 1 = SCK
Channel 2 = MOSI
Channel 3 = MISO

SPI - 用逻辑分析仪记录信号:

SPI - record signal with logic analyzer

对我来说 - 当 CS 从高到低时传输开始。是否正确? 或者这可能仅适用于从设备(请参阅上面数据表中的 SPI 部分)?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...