配置QSPI
initQSPI() 函数初始化了Master和Slave端。
QSPI Slave initialization
相关操作在IfxQspi_SpiSlave.h
中
QSPI 从模块的初始化是通过定义
IfxQspi_SpiSlave_Config
结构的实例来完成的。
该结构由函数填充默认值IfxQspi_SpiSlave_initModuleConfig()
。
然后,设置引脚、ISR 终端服务与优先级。
IfxQspi_SpiSlave_initModule()
函数用于初始化 QSPI 从模块。
此外,初始化 QSPI 从机使用的缓冲区。
QSPI Master initialization
相关操作在 IfxQspi_SpiMaster.h
QSPI 主模块的初始化是通过定义
IfxQspi_SpiMaster_Config
结构的实例来完成的。
该结构由函数填充默认值IfxQspi_SpiMaster_initModuleConfig()
。
之后,设置接口操作模式、引脚、ISR 中断服务和优先级。
IfxQspi_SpiMaster_initModule()
函数用于初始化QSPI主模块
一个 QSPI 模块控制 16 个可单独编程的通信通道。 在此示例中,函数initQSPI2MasterChannel()
使用结构IfxQspi_SpiMaster_ChannelConfig
的实例初始化通道零。 然后通过参数sls.output
设置从机选择通道号,通过参数base.baudrate
修改波特率。
IfxQspi_SpiMaster_initChannel()
函数用于初始化 QSPI 主通道。
此外,QSPI 主机使用的缓冲区也被初始化。
QSPI Master - Slave communication
函数
transferData()
触发 SPI-Master 和 SPI-Slave 之间的数据传输。
IfxQspi_SpiSlave_getStatus()
和IfxQspi_SpiMaster_getStatus()
函数用于检查主机和从机的状态,以便延迟传输直到两者都空闲。函数
IfxQspi_SpiSlave_exchange()
指示从机接收预定义长度的数据流。
调用函数IfxQspi_SpiMaster_exchange()
以指示主机发送数据。
最后,函数 verifyData() 检查 Slave 接收到的数据是否与 Master 发送的数据匹配。
如果在通信过程中没有发生错误,则连接到端口引脚 13.3 的 LED D110 会亮起,表示传输成功
Run and Test
代码编译和设备编程后,执行以下步骤:
1.在 Cpu0_main.c 中为 transferData() 设置断点,并检查 spiBuffers 结构中的 spiMasterTxBuffer 和 spiSlaveRxBuffer。
2.运行代码示例并检查 LED D110 (1) 是否亮起(数据传输无误)。
3.spiMasterTxBuffer 和 spiSlaveRxBuffer 现在应该显示相同的发送和接收数据。
4.移除电缆(例如 SCLKx),执行复位并重新运行应用程序以查看数据传输中断且 LED D110 (1) 熄灭(数据传输受阻)。