GD32 SPI的clock_polarity_phase设置详细分析
spi_init_struct.trans_mode = SPI_TRANSMODE_RECEIVEONLY;spi_init_struct.device_mode = SPI_MASTER;
spi_init_struct.frame_size = SPI_FRAMESIZE_8BIT;
spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_2EDGE;
spi_init_struct.nss = SPI_NSS_SOFT;
spi_init_struct.prescale = SPI_PSC_64;
spi_init_struct.endian = SPI_ENDIAN_MSB;
CLK平时是低,SPI_CK_PL_LOW
CLK是低的话,第一个边沿是上升沿,第二个边沿是下降沿,看MISO的数据每个bit的中心是,这里是下降沿,则应该设置为PH_2EDGE。
.clock_polarity_phase 的设置应该按照SPI从设备的实际要求和输出来决定
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/lljss1980/article/details/146277267
SPI 的 clock_polarity_phase 用于配置 SPI 时钟的极性和相位
CPOL 决定 SPI 时钟在空闲状态时的电平
CPOL 的定义会影响数据传输的起始边沿
CPHA 决定数据采样和输出的边沿
CPHA 确定主设备和从设备之间数据的同步方式
从设备的 SPI 时序文档会明确指定 CPOL 和 CPHA 的值
如果从设备的数据手册未明确说明,可以通过示波器观察其 SPI 通信波形,判断时钟空闲电平和数据采样边沿
// 示例:配置 SPI 为主模式,时钟极性低,相位第二个边沿
spi_init_struct.device_mode = SPI_MASTER;
spi_init_struct.clock_polarity_phase = SPI_CK_PL_LOW_PH_2EDGE;
spi_init_struct.frame_size = SPI_FRAMESIZE_8BIT;
spi_init_struct.nss = SPI_NSS_SOFT;
spi_init_struct.prescale = SPI_PSC_64;
spi_init_struct.endian = SPI_ENDIAN_MSB;
CPHA决定数据采样的边沿(第一个或第二个边沿)
需根据从设备的 SPI 时序要求进行匹配,否则可能导致通信失败
页:
[1]