使用 FRDM-MCXA153 开发板驱动SPI外设
- 版本说明
- SDK版本:25_06_00
- Keil MDK版本:5.42.0
- Config Tool版本:25.6
硬件电路
查看官网下载的原理图得知,板载的Arduion的接口定义如下图右边,左边是我自己画的屏幕底板,使用的是Arduino的接口定义,可以根据两个原理图得知管脚的对应关系如下表
| 屏幕底板 | 开发板接口 | MCU引脚 |
|---|---|---|
| SCL | LPSPI1_SCK | P2_12 |
| SDA | LPSPI1_MOSI | P2_13 |
| DC | P3_14 |
软件适配
官方的例程是用的 LPSPI0,这里用到了 LPSPI1 所以需要将 app.h 里面的代码稍作修改
#define EXAMPLE_LPSPI_MASTER_BASEADDR (LPSPI1)
#define EXAMPLE_LPSPI_MASTER_IRQN (LPSPI1_IRQn)
#define EXAMPLE_LPSPI_DEALY_COUNT 0xFFFFF
#define LPSPI_MASTER_CLK_FREQ (CLOCK_GetLpspiClkFreq(1))
#define EXAMPLE_LPSPI_MASTER_PCS_FOR_INIT (kLPSPI_Pcs0)
#define EXAMPLE_LPSPI_MASTER_PCS_FOR_TRANSFER (kLPSPI_MasterPcs0)
#define EXAMPLE_LPSPI_MASTER_IRQHandler (LPSPI1_IRQHandler)
将屏幕底板插到开发板上面,将SCK、SDA、DC、GND接到逻辑分析仪上
在官方的spi例程中是发送了一个长度64个字节的数据
/* Set up the transfer data */
for (i = 0U; i < TRANSFER_SIZE; i++)
{
masterTxData[i] = (i + loopCount) % 256U;
masterRxData[i] = 0U;
}
/* Print out transmit buffer */
PRINTF("\r\n Master transmit:\r\n");
for (i = 0U; i < TRANSFER_SIZE; i++)
{
/* Print 16 numbers in a line */
if ((i & 0x0FU) == 0U)
{
PRINTF("\r\n");
}
PRINTF(" %02X", masterTxData[i]);
}
PRINTF("\r\n");
使用逻辑分析仪抓包进行查看,可以看到spi发出来的数据02、03、04。。。可以正常的输出SPI信号,至此,使用FRDM-MCXA153 开发板板载的 Arduino 接口上面的 SPI 引脚输出 SPI 信号已经可以正常工作了。


