SPI总线

张开发
2026/5/12 17:59:12 15 分钟阅读

分享文章

SPI总线
SPI总线SPI总线有四种工作方式2种时钟极性和2种数据相位。SPI总线协议不定义数据字节内部位序位序由应用层根据需要定义。SPI总线数据帧长度由应用层定义。2.1 时钟极性配置CPOL时钟极性配置CPOL决定空闲状态时钟线SCK的电平状态。空闲状态时钟线SCK电平状态与CPOL值一致。CPOL0则空闲时SCK为低电平CPOL1则空闲时SCK为高电平。2.2 数据相位配置CPHA2.2.1 数据相位配置CPHA决定在时钟线SCK的第几个跳变沿第一次采样数据。1如果时钟线SCK跳变沿数字从0开始计算第一次采样的跳变沿数字与CPHA数字一致。CPHA0则在SCK的第0个跳变沿第一次采样CPHA1则在SCK的第1个跳变沿第一次采样。2如果时钟线SCK跳变沿数字从1开始计算第一次采样的跳变沿数字与CPHA数字的大小排列顺序一致。CPHA0则在SCK的第1个跳变沿第一次采样CPHA1则在SCK的第2个跳变沿第一次采样。CPHA0则在SCK的奇数跳变沿采样CPHA1则在SCK的偶数跳变沿采样。2.2.2 如何配置CPHA最好配置CPHA1最好。若配置CPHA0则数据发送端必须在时钟信号SCK第一次跳变前把数据放在总线上。对于主机来说这没有问题对从机来说就有点困难因为从机不知数据传输何时开始。配置CPHA1即使没有CS从机也可以把SCK信号的第一个跳变沿作为数据传输开始的信号。2.3 片选信号线CS片选信号CS并不是必须的CS可以直接接地。2.3.1 有片选信号CSCPHA0时必须CS信号必须先于时钟信号即先将CS拉低延时几十微秒后再开启时钟。这样从机可以在CS拉低后立即把数据放在总线上主机可以在SCK的第1个跳变沿读取到正确的数据。2.3.2 无片选信号CS若无片选信号CS最好配置CPHA1。即使配置CPHA0问题也不大主机向从机读取数据之前一般会先写数据通过命令告诉从机准备哪些数据。在某些情况下从机需要主动请求主机读取数据从机一般会通过IO中断通知主机并在产生中断时把数据放在总线上。2.4 SPI总线的使用方式2.4.1 主机主动向从机读数据这种情况若无片选信号CS必须配置CPHA1。由于SPI总线数据传输速度较快半个SCK周期的数据准备时间对从机来说并不充裕。2.4.2 主机主动向从机写数据或先写后读数据主机一般会在时钟信号SCK开始前先把数据放在总线上。若主机写完数据后还要读数据需要延时一段时间给从机留下足够的时间准备数据。2.4.3 从机主动请求主机读取数据从机一般会通过IO中断通知主机若无CS且配置为CPHA0从机需要在产生中断的同时把数据放在总线上。2.5 SPI总线注意事项要给从机留下充足的时间来准备数据。

更多文章