摩托罗拉公司的 SPI 协议根据 MOSI 和 MISO 线不同的数据发送和接收方式有四种不同的模式。这些模式由时钟极性(CPOL)和时钟相位(CPHA)共同决定。时钟极性决定了不传输数据时 SCLK 线的值。CPOL = ‘0’ 表示不传输数据时 SCLK 为’0’。CPOL = ‘1’ 表示不传输数据时SCLK为’1’。时钟相位决定了何时采样数据。 CPHA = ’0 ’表示在第一个边沿采样,而 CPHA = ‘1’ 意味着在第二个时钟边沿采样,无论该时钟沿是上升还是下降。在 CPHA = ’0 ’时,数据必须在第一个时钟周期前有稳定的设置时间。 测试过程中使用 CY8CKIT-042 和 PSoC Creator 4.3 (4.3.0.1445),将 SPI Bit 顺序设置为 MSB,发送第一个 8 位数据 0x01。 模式 0: CPOL = ‘0’, CPHA = ‘0’: SCLK 下降沿时,传输数据;SCLK 上升沿时,采样数据。SPI 组件时序如图 1 所示。实际运行中的时序如图 2 所示。 图1.SPI组件时序图
图2.实际运行中的时序图 模式1: CPOL = ‘0’, CPHA = ‘1’ SCLK 上升沿时,传输数据;SCLK 下降沿时,采样数据。SPI 组件时序如图 3 所示。实际运行中时序如图 4 所示。 图3.SPI组件时序图 图4.实际运行中的时序图 模式 2: CPOL = ‘1’, CPHA = ‘0 SCLK 上升沿时,传输数据;SCLK 下降沿时,采样数据。SPI 组件时序如图 5 所示。实际运行中时序如图 6 所示。 图5.SPI组件时序图 图6.实际运行中的时序图 模式3: CPOL = ‘1’, CPHA = ‘1’ SCLK 下降沿时,传输数据;SCLK 上升沿时,采样数据。SPI 组件时序如图 7 所示。实际运行中时序如图 8 所示。 图7.SPI组件时序图 图 8 . 实际运行中的时序图 综上,当SPI总线开始传输数据时,在SS信号生效之前,先驱动 MOSI 。这种设计符合 SPI 协议规定,可以正常通信。 在cyfitter_cfg.c文件中,固件启动时已将 MOSI 驱动模式配置为 "strong drive" 模式。如果使用 SPI 接口模拟其他通信协议,则需要考虑启动顺序。
参考资料:
|