Jiangxiaopi 发表于 2025-4-11 14:09

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

磨砂 发表于 2025-6-6 15:41

SPI 的 clock_polarity_phase 用于配置 SPI 时钟的极性和相位

晓伍 发表于 2025-6-6 17:59

CPOL 决定 SPI 时钟在空闲状态时的电平

八层楼 发表于 2025-6-6 20:19

CPOL 的定义会影响数据传输的起始边沿

观海 发表于 2025-6-6 22:29

CPHA 决定数据采样和输出的边沿

guanjiaer 发表于 2025-6-7 08:42

CPHA 确定主设备和从设备之间数据的同步方式

heimaojingzhang 发表于 2025-6-7 11:13

从设备的 SPI 时序文档会明确指定 CPOL 和 CPHA 的值

keaibukelian 发表于 2025-6-7 13:39

如果从设备的数据手册未明确说明,可以通过示波器观察其 SPI 通信波形,判断时钟空闲电平和数据采样边沿

paotangsan 发表于 2025-6-7 15:52

// 示例:配置 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;


renzheshengui 发表于 2025-6-7 18:31

CPHA决定数据采样的边沿(第一个或第二个边沿)

wowu 发表于 2025-6-7 20:45

需根据从设备的 SPI 时序要求进行匹配,否则可能导致通信失败
页: [1]
查看完整版本: GD32 SPI的clock_polarity_phase设置详细分析