heimaojingzhang 发表于 2025-7-9 15:13

STM32F103C8T6使用hal库配置SPI模式

1.选择模式(我这里选择的是全双工主模式)
下面那个Hardware NsS Signal,意思就是SS引脚使用软件触发还是硬件触发,这里默认不使能,也就是采用软件触发。




一.这里先配置
1.帧格式(这里默认就行,不是很理解)
2.数据大小,使用8位
3.第一位电平,因为采用拉低电平作为开始,所以这里配置为高电平





三.配置时钟参数





1.预分频系数(设置了128),这里要根据芯片时钟配置,由于SPI1的时钟频率为72Mhz,72M/128=562.5K,所以这里频率大概为500多K赫兹,
2.波特率,根据预分频系数变化的,不用管
3.下面两个用来配置采用哪一个模式的,这里是模式0


四、这里SS(CS)采用软件触发





————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/weixin_75150601/article/details/149114309

LOVEEVER 发表于 2025-7-29 23:36

hal库配置SPI模式

benjaminka 发表于 2025-8-4 11:50

SPI接口的引脚连接正确:

SCK(时钟线)
MOSI(主输出从输入)
MISO(主输入从输出)
NSS(片选线)

pentruman 发表于 2025-8-4 12:51

SPI引脚配置为复用推挽输出(对于SCK和MOSI)和浮空输入(对于MISO)。片选线(NSS)可以配置为普通推挽输出或硬件NSS。

lzmm 发表于 2025-8-4 14:44

SPI时钟分频不应过小,以免超出外设的最高工作频率限制。

qiufengsd 发表于 2025-8-4 15:38

对于大数据量传输,建议使用DMA模式

uptown 发表于 2025-8-4 16:37

根据从设备的数据手册设置以下参数:
Polarity(极性):决定时钟空闲电平(CPOL=0/1);
Phase(相位):决定第一个沿采样/输出数据(CPHA=0/1);
DataSize:8b 或 16b(多数设备为 8b);
FirstBit:MSB 优先或 LSB 优先(默认 MSB)。

claretttt 发表于 2025-8-4 20:25

时钟配置错误可能导致SPI无法正常工作

wangdezhi 发表于 2025-8-4 21:16

CPOL/CPHA不匹配、数据宽度设置错误、MISO引脚接收到干扰。

kkzz 发表于 2025-8-5 09:04

PI参数设置不当可能导致通信失败或数据错误。

robincotton 发表于 2025-8-5 12:27

SPI时钟频率需根据外设支持的最大频率设置,通常不超过STM32F103C8T6的SPI最大时钟频率(

sdlls 发表于 2025-8-5 13:20

先使能 SPI 时钟再操作寄存器

nomomy 发表于 2025-8-5 14:11

长距离或高速通信时,建议在SCK、MISO、MOSI线上加10kΩ上拉电阻。

iyoum 发表于 2025-8-5 15:51

用HAL_SPI_Transmit(),此时 MISO 线可悬空

febgxu 发表于 2025-8-7 09:46

用HAL_SPI_TransmitReceive()同时收发

plsbackup 发表于 2025-8-7 10:22

检查 MISO 引脚是否悬空或接上拉电阻

saservice 发表于 2025-8-7 12:00

可以通过调整波特率预分频器(BaudRatePrescaler)来控制时钟频率。

juliestephen 发表于 2025-8-7 15:45

如果需要使用中断或DMA进行数据传输,确保正确配置中断和DMA通道。

pl202 发表于 2025-8-7 17:09

​​CPOL/CPHA​​:必须与从设备的时钟极性和相位完全一致

sanfuzi 发表于 2025-8-8 11:06

检查CPOL/CPHA是否与外设匹配。
页: [1] 2
查看完整版本: STM32F103C8T6使用hal库配置SPI模式