当前文档版本为 v0.6.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

spi_slave例程

1 功能概述

本代码示例主要演示spi外设的从机双向通信功能,需要配合spi主机,并将操作过程通过串口打印出来。

2 环境要求

  • Board: PAN262xb1_evb

  • 将P1_2(SCK)与SPI主机SCK相连

  • 将P3_5(MOSI)与SPI主机MOSI相连

  • 将P3_3(MISO)与SPI主机MISO相连

  • 将P3_1(SSN)与SPI主机SSN相连,spi作为从机时,SSN只能关联P3_1

  • 将USB线分别连接至电脑与evb板的J2 MicroUSB接口

3 编译和烧录

例程位置:`pan262x_dk\01_SDK\example_basic\spi\spi_slave

打开目录下keil下的spi_slave.uvprojx工程,编译整个代码工程。

4 演示说明

根据环境要求一节的介绍,正确连接 EVB 开发板的跳线,编译、下载:

  1. 在电脑上打开串口调试工具,串口参数:115200/8bit/1stop/无校验

  2. 按下复位键,观察串口打印的内容,看看是否有spi slave mode test.信息输出

  3. 启动SPI主机进行通信

串口输出信息如下:

spi slave mode test.

5 开发说明

通过调用 main.c 的spi_init函数接口来完成spi slave初始化,初始化IO及外设,并打开中断,并在中断中对通信协议进行处理,符合通信协议的包接收以保存下来在main函数中进行解析,如果需要应答则需要主机进行读取,因此要求主机对于需要从机响应的情况下,下发命令后间隔一定时间再根据读取的数据长度发现相应字节数的clock即可。

void spi_init(void)
{
 GPIO_Init(GPIO_P12, GPIO_P12_MUX_SCK, GPIO_MODE_INPUT, GPIO_NOPULL);
 GPIO_Init(GPIO_P35, GPIO_P35_MUX_MOSI, GPIO_MODE_INPUT, GPIO_NOPULL);
 GPIO_Init(GPIO_P33, GPIO_P33_MUX_MISO, GPIO_MODE_OUTPUT_PP, GPIO_NOPULL);
 GPIO_Init(GPIO_P31, GPIO_P31_MUX_SSN0, GPIO_MODE_INPUT, GPIO_PULLUP);	
 SPI_Init(SPI_FirstBit_MSB, SPI_DIV_0, SPI_SLAVE, SPI_CPOL_LOW, SPI_CPHA_SECOND_EDGE);
 spi_write_read_it(send_buf, recv_buf);
}

6 RAM/Flash资源使用情况

Program Size: data=15.3 xdata=310 const=31 code=3068