根据 IMX6ULLRM,它读取当相位控制 (ECSPI_CONREG[PHA]) 位置位时,发送数据将在 SCLK 的上升沿移出,接收数据在 SCLK 的下降沿锁存。最高有效位在第一个 SCLK 上升沿输出。
当 ECSPI_CONREG[PHA] 清零时,发送数据在 SCLK 的下降沿移出,接收数据在 SCLK 的上升沿锁存。当主处理器加载传输的数据时输出 MSB。
听起来CPHA和CPOL没有任何关系。
但根据维基百科,CPHA 似乎依赖于 CPOL。
ECSPI不是和标准的SPI重合吗?
下面是来自维基百科的描述。
CPOL 决定时钟的极性。可以使用简单的反相器转换极性。
CPOL=0是一个空闲为0的时钟,每个周期由一个1的脉冲组成。即上升沿为上升沿,下降沿为下降沿。
CPOL=1是一个空闲为1的时钟,每个周期由一个0的脉冲组成。即上升沿为下降沿,下降沿为上升沿。
CPHA 确定数据位相对于时钟脉冲的时序(即相位)。这两种形式之间的转换非常重要。
对于 CPHA=0,“out”端在前一个时钟周期的后沿更改数据,而“in”端在时钟周期的前沿(或之后不久)捕获数据。out 端保持数据有效,直到当前时钟周期的后沿。对于第一个周期,第一位必须在时钟前沿之前位于 MOSI 线上。考虑它的另一种方法是说 CPHA=0 周期由时钟空闲的半个周期和随后的时钟有效的半个周期组成。
对于 CPHA=1,“out”端在当前时钟周期的前沿更改数据,而“in”端在时钟周期的后沿(或之后不久)捕获数据。out 端保持数据有效,直到下一个时钟周期的前沿。对于最后一个周期,从器件保持 MISO 线有效,直到从器件选择被取消断言。考虑它的另一种方法是说 CPHA=1 周期由半个时钟断言的周期和随后的半个时钟空闲周期组成。
0