本帖最后由 TechHolder 于 2020-8-4 17:44 编辑
AC781X SPI模块应用笔记
1 SPI模块介绍
1.1 SPI特性
1. 主机模式或从机模式
2. 全双工模式
3. 主机可编程传输速率
4. 可配置时钟相位和极性选择
5. 可配置连续或不连续CS输出
6. 带CPU中断功能的模式错误标志位
7. 可选择MSB或LSB优先移位
8. 可配置的CS建立时间,保持时间和空闲时间
9. 可配置的SCK高和低周期
10. DMA模式传输数据
11. 带中断功能的TX缓存区空或RX缓存区满的标志位
12. 从机模式支持在stop模式下唤醒
1.2 输入输出时序
1.2.1 CPHA = 0传输数据格式
SCK的第一个边沿用于将从机的第一个数据位计时到主机,将主机的第一个数据位计时到从机。在某些外设中,只要选择了从机,从机的数据输出引脚就会提供从机数据的第一位。在这种格式中,在CS变低后,第一个SCK边沿发出半个周期,半个SCK周期后,第二个边沿出现在SCK线上。当第二个边沿出现时,先前从串行数据输入引脚锁存的值被移入到移位寄存器。在第二个边沿之后,SPI主机的下一位从主机的串行数据输出引脚传输到从机的串行输入引脚。该过程在SCK线上共持续16个边沿,数据被锁存在奇数边沿上并在偶数边沿上移位。 图1-1 CPHA = 0传输数据格式
1.2.2 CPHA = 1传输数据格式 某些外设在第一个数据位在数据输出引脚变得可用之前需要第一个SCK边沿,第二个变压将数据计入系统。SCK的第一个边沿在半个SCK时钟周期同步延迟后立即发送,第一个边沿命令从机将其第一个数据位传输到主机的串行数据输入引脚。半个SCK周期后,第二个边沿出现在SCK引脚上,这是主机和从机的锁存边沿。当第三个边沿出现时,先前从串行数据输入引脚锁存的值被移入移位寄存器。在此边沿之后,主机数据的下一位从主机的串行数据输出引脚耦合到从机上的串行输入引脚。该过程在SCK上共持续16个边沿,数据被锁存在偶数边沿上并且移位发生在奇数边沿上。 图1-2 CPHA = 1传输数据格式
1.2.3 从机休眠唤醒 处于SPI从机模式的MCU进入休眠之后,SPI接收数据能够将MCU唤醒。在进入低功耗模式之前,必须确保SPI模块处于空闲状态;如果SPI模块忙时进入低功耗状态,SPI无法确保数据正确或唤醒功能有效。 表1-1 SPI支持唤醒低功耗模式 在进入休眠模式之前,需要对唤醒源进行配置,需要在SPM对应寄存器中使能期望的唤醒源,SPI模块默认是禁能状态。调用库SPM_EnableModuleWakeup(SPM_MODULE_SPIx)使能SPI模块唤醒,就能将MCU从休眠模式中唤醒,Standby模式除外。
2 驱动库 2.1 寄存器驱动
3 例程介绍 3.1 总述 共3个子例程用以阐述SPI的各种功能使用,包括基本收发数据,DMA传输SPI数据,SPI唤醒休眠MCU。每个子例程对应着一个宏定义,通过SPI_SAMPLE_SEL选择。
3.2 例程功能介绍 表3-1 例程功能描述
|