S32K
Nxp在汽车领域,目前主流的单片机还是S32K这个系列,cortex M4的内核。
LPSPI
S32K的SPI 叫LPSPI,和其他单片机差不多,涉及到的寄存器还比较多。
配置时钟
在使用LPSPI之前,必须要配置时钟。
PCC->PCCn[PCC_LPSPI0_INDEX] |= PCC_PCCn_PCS(1) | PCC_PCCn_CGC_MASK
PCC_PCCn_CGC_MASK不配置,直接操作SPI相关寄存器,程序直接跑飞,产生硬件保护中断。
PCC_PCCn_PCS(1)不配置,SPICLK没有输出,fifo里的数据发不出来。TCR也不能正常赋值。
中断和DMA
LPSPI支持中断和DMA功能,也可以不用这两种功能,直接查询标志来实现SPI的收发。
SPI收发
为了避免冲突,在发送之前可以先检查TXBUF是否为空,
LPSPI0->FSR & LPSPI_FSR_TXCOUNT_MASK
数据发送,直接将数据给发送寄存器,
LPSPI0->TDR = Word;
等待数据接收,可以判定RXBUF非空,
LPSPI0->FSR & LPSPI_FSR_RXCOUNT_MASK
如果非空,就可以取出数据了,
Word = LPSPI0->RDR;
总结
S32K的LPSPI配置其他配置跟别的SPI就差不多了。