MN316 OpenCPU丨SPI使用介绍

MN316 OpenCPU 模式下的SPI主要功能函数包含SPI开启指定通道、关闭SPI、SPI写数据、SPI读数据。本文从使用流程、SPI模式介绍、Demo使用方法和注意事项四个方面介绍如何实现MN316 OpenCPU模组的SPI使用。

一、SPI使用流程解析

1MN316 OpenCPU SPI功能使用的常见流程介绍。

图1 SPI使用流程

SPI使用流程可结合MN316_OpenCPU(R14)_Standard_X.X.X.XXXXXX_release\examples\spi cm_demo_spi.c中的demo示例程序加深理解。

SPI功能包含的全部函数接口详细定义可在include\cmiot\cm_spi.h中查看

二、SPI模式介绍

SPI工作模式一共四种,由时钟极性CPOL(Clock Polarity)和时钟相位CPHA(Clock Phase)决定。CPOL表示SPI空闲时时钟信号的电平,0表示低电平,1表示高电平;CPHA表示SPI在时钟的第几个边沿采样,0表示第一个边沿开始采样,1表示第二个边沿开始采样。

下面对SPI的4种工作模式做简单介绍,一般模式0和模式3使用的情况最多。

2.1 模式0

2 任务模式0时序图

CPOL = 0:空闲时是低电平,第1个跳变沿是上升沿,第2个跳变沿是下降沿

CPHA = 0:数据在第1个跳变沿(上升沿)采样。

2.2 模式1

3 模式1时序图

CPOL = 0:空闲时是低电平,第1个跳变沿是上升沿,第2个跳变沿是下降沿

CPHA = 1:数据在第2个跳变沿(下降沿)采样。

2.3 模式2

4 模式2时序图

CPOL = 1:空闲时是高电平,第1个跳变沿是下降沿,第2个跳变沿是上升沿。

CPHA = 0:数据在第1个跳变沿(下降沿)采样。

2.4 模式3

5 模式3时序图

CPOL = 1:空闲时是高电平,第1个跳变沿是下降沿,第2个跳变沿是上升沿

CPHA = 1:数据在第2个跳变沿(上升沿)采样。

2.5 SPI使用说明

引脚说明:

使用说明:
目前MN316 仅支持1路SPI接口,且暂只能作为SPI主设备,SDK提供SPI初始化、读、写、写后读、去初始化等接口。具体的使用流程如下:

(1)SPI初始化:cm_spi_open,可设置SPI工作模式,通信数据位,NSS模式,时钟频率

(2)SPI读写:cm_spi_read/cm_spi_write/cm_spi_write_then_read,读/写/写后后,使用过程中cm_spi_read基本不会用到,因为SPI基本是先写入参数后才能读到数据

(3)SPI去初始化,关闭SPI:cm_spi_close,关闭SPI。

三、SPI Demo说明

Demo中使用flash作为从设备与模组通信。

3.1 初始化SPI:模式0,数据位8位,NNS软件模式,时钟频率设置为2.448MHz

6 初始化SPI

3.2 读取Flash ID:读取从设备的ID,一般用于测试SPI通信是否正常

7 读取Flash ID

3.3 向Flash里写入数据

(1)封装flash写函数,可任意地址读写,内部执行擦除,且保存flash非操作地址的数据:先计算写入的起始地址和结束地址分别所在的页ID,然后挨个页先读出所在页的数据放在缓冲中,然后将需要写入的数据写入缓冲中,使用擦除接口擦除本页的数据,等待擦除完成后,最后使用页写入接口将缓冲区的数据写入;

(2)封装擦除接口:使能flash写操作,然后写入擦除命令和擦除地址;

(3)页写入:使能flash写操作后,使用spi写接口写入数据,注意数据前4个字节为命令和地址,后跟数据,即最终写入的数据长度实际为数据长度加4;

(4)使用封装的写函数写入“Hello world”数据返回

8 向Flash里写入数据

3.4 从Flash中读出数据

(1)封装flash读接口:先写入命令和地址,然后读数据;

(2)使用flash读接口读出上一步中写入的数据。

8 从Flash中读出数据

3.5 关闭SPI接口

9 关闭SPI接口

3.6 测试结果

(1)烧录demo程序,配合开发板通过串口助手测试;

(2)模组串口打印please input cmds:时,输入CM:SPI,运行结果如图10。

10 测试结果

四、使用注意事项

1、硬件上模组的MOSI引脚与设备的MOSI引脚连接,而不是交叉连接;

2、使用软件NSS时,SPI读写接口内部已经将NSS片选引脚会自动拉低,即使能SPI片选。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值