TC397 之 TLF35584 SPI配置 代码实现章节

1 QSPI特性

  QSPI允许基于标准化的spi总线信号与外部设备进行任何同步串行通信:时钟、数据输入、数据输出和从属选择。
  QSPI工作在全双工模式下,或作为主设备或从设备高达50 Mbit/s。
  DMA模块通道可以配置为将数据从QSPI FIFOs从内部内存传输,而不需要任何CPU干预。

2 TLF35584 QSPI0配置

  QSPI通过DMA进行主从数据传输通信。DMA传输好处:两个DMA通道用于实现RAM与SPI FIFOs之间的数据传输,而不需要CPU干预:

  • DMA CH0配置为QSPI0 TX。
  • DMA CH1配置为QSPI0 RX。

  QDPI0配置为SPI主设备,TLF35584作为SPI从设备。主从交换遵循TLF35584数据传输格式要求,每次传输数据为16bit。

  QSPI0引脚连接:

TC397 QSPI0 (Master) WIRE TLF35584(Slave)
P20.13(M,CS,OUT) <-> SCS
P20.11(M,CLK,OUT) <-> SCL
P20.14(M,DATA,OUT) <-> SDI
P20.12(M,DATA,IN) <-> SDO

2.1 QSPI0 Master Module initialization

1)调用IfxQspi_SpiMaster_initModuleConfig()函数,使用默认值初始化IfxQspi_SpiMaster_Config结构体。
2)配置主模式和最大波特率。(base.mode,base.maximumBaudrate)

  • QSPI0 设置为主模式。
  • TLF35584 SPI时钟频率 <= 10MHz。因此,波特率设置为10MHz。

3)配置QSPI0通信引脚。(pins)
4)配置DMA通道。(dma.useDma,dma.txDmaChannelId,dma.rxDmaChannelId)
5)配置QSPI0中断优先级。(base.txPriority,base.rxPriority,base.erPriority,base.isrProvider)
6)调用IfxQspi_SpiMaster_initModule()函数,使用IfxQspi_SpiMaster_Config结构体参数初始化QSPI0模块。

2.1.1 代码实现

static void SpiDrv_Qspi0ModuleInit(void)
{
   
    // create module config
    IfxQspi_SpiMaster_Config spiMasterConfig;
    IfxQspi_SpiMaster_initModuleConfig(&spiMasterConfig, &MODULE_QSPI0);

    // set the desired mode and maximum baudrate
    spiMasterConfig.base.mode             = SpiIf_Mode_master;

    // pin configuration
    const IfxQspi_SpiMaster_Pins pins = 
    {
   
        &IfxQspi0_SCLK_P20_11_OUT, IfxPort_OutputMode_pushPull, // SCLK
        &IfxQspi0_MTSR_P20_14_OUT, IfxPort_OutputMode_pushPull, // MTSR
        &IfxQspi0_MRSTA_P20_12_IN, IfxPort_InputMode_pullDown,  // MRST
        IfxPort_PadDriver_cmosAutomotiveSpeed3 // pad driver mode
    };
    spiMasterConfig.pins = &pins;

    // dma configuration.
    spiMasterConfig.dma.txDmaChannelId = IfxDma_ChannelId_0;
    spiMasterConfig.dma.rxDmaChannelId &

你可能感兴趣的:(英飞凌学习笔记,mcu)