“20220106 uboot下spi调试”涉及瑞萨RCAR V3H2平台上的SPI(Serial Peripheral Interface)调试过程,主要涵盖了在uboot环境下解决SPI通信问题、理解SPI工作原理以及如何配置相关寄存器以优化性能。
在实验环境中,使用的是qiyangRZG2MMSIOF2SSI1开发板,调试过程中参考了QNXSPI的驱动代码,并查阅了《r01uh0808ej0100-rzg2RM-v1.pdf》的数据手册来获取RZG2M的详细信息。遇到的问题是在uboot下无法正确读取和设置SPI的寄存器,读出的值不是预期的默认值。原因在于系统为了节能关闭了SPI模块的电源和时钟。解决方法是在uboot中重新配置相关寄存器,如使用指令`mw.l0xE6150138 0x040e2000`来初始化。
针对SPI的硬件配置,需要确认GPIO(General Purpose Input/Output)的复用功能,检查GPSR(General Purpose Status Register)和IPSR2(Interrupt Program Status Register)寄存器,确保MSIOF2_D被正确配置为SPI接口。同时,还需要设置MOD_SEL0-2寄存器,确保其bit27和bit28为11,选择MSIOF2_D模式。
SPI的工作原理涉及到极性和相位的配置,例如CPOL(Clock Polarity)和CPHA(Clock Phase)。通过配置SITMDR1(Serial Interface Timing Mode Register 1)和SIRMDR1(Serial Interface Receive Mode Register 1)来设定发送和接收的极性,而通过配置SICTR(Serial Interface Clock Timing Register)来设定相位。SS引脚的选择则由SITMDR1寄存器管理。
在SPI通信中,FIFO(First In First Out)寄存器可以提高效率,允许连续发送或接收多个数据,而不是每次操作都产生中断。通过查看SIFCTR(Serial Interface FIFO Control Register)可以监控FIFO的状态,判断发送和接收是否完成。
频率选择方面,通过修改SISTSCR(Serial Interface System Control Register)寄存器可以调整SPI的最大波特率,例如设置为7可以达到12.5MHz。在uboot的源码中,需要关注`common/board_r.c`作为入口函数,`drivers/spi/rcar_spi.c`和`.h`文件为SPI驱动,以及`drivers/spi/Makefile`来确保驱动被正确编译。此外,`common/pfc_init_m3.c`文件用于修改引脚模式配置,包括SS引脚、极性和相位的配置。
总结来说,该文档详细介绍了在瑞萨RCAR V3H2平台上进行SPI调试的步骤、问题解决方法以及SPI接口的配置要点,为在uboot环境下进行SPI通信提供了宝贵的实践经验和理论知识。