打印
[其他]

灵动MCU SPI从动方式配置过程

[复制链接]
1247|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
SPI作为从设备时,SCK引脚输入来自主设备的串行时钟,因此从设备工作时不使用波特率发生器,
不需配置寄存器SPI_I2S_SPBRG(从设备下无效)。
1、配置过程如下:
1. 配置SPI_I2S_GCTL.SPILEN,定义数据帧格式为7位或者8位;配置SPI_I2S_GCTL.DW8_32为
‘1’,可配置SPI_I2S_EXTCTL寄存器来定义成任意帧格式(SPILEN需固定为‘1’)。
2. 配置寄存器SPI_I2S_CCTL中的CPOL、CPHA/CPHASEL位,以确定时序模式。
3. 配置SPI_I2S_CCTL.LSBFE,确定数据帧的收发顺序(LSB或MSB位优先)。
4. 配置寄存器SPI_I2S_GCTL中的MODE位为‘0’(从模式),SPIEN位为‘1’(SPI功能使能)
并配置SPI工作所需的GPIO功能引脚。
5. 配置寄存器SPI_I2S_GCTL中TXEN、RXEN位为‘1’,打开发送、接收的许可(发送时需提前写
入数据到寄存器SPI_I2S_TXREG),SPI将在从模式下接收MOSI引脚数据,并从MISO引脚输出数据。
注意:必须配置主、从设备的时序模式和数据帧收发顺序为一致,以保证数据能正常传输。
2、数据发送过程
写数据到发送数据寄存器SPI_I2S_TXREG后,整个数据会一起传输到发送缓冲。
当从设备接收到SCK引脚上的时钟信号,也同时接收到MOSI 引脚传来的第一个数据位;从设备利用
SCK的变化边沿,把发送数据逐位发送到MISO引脚上。发送数据的过程符合数据/时钟的相关时序(由
CPOL、CPHA/CPHASEL位来决定)。
但在高速传输时(配置SPI_I2S_CCTL.TXEDGE=1),数据将不再按照输入的SCK时钟边沿而变化
而会提前以内部PCLK的时钟边沿把数据送到MISO引脚上(此提前量不会早于前一位数据接收采样的
SCK时钟边沿)。
当数据第一位被发送时,硬件会置位SPI_I2S_INTSTAT.TX_INTF 标志,软件可利用此标志来写
TXREG以实现数据的连续发送(配置SPI_I2S_INTEN.TX_IEN位为‘1’来产生CPU中断)。
注意:从机时钟信号由主机提供,因此,连续传输的前提必须是主机能提供连续不断的时钟。
3、数据接收过程
从设备接收到MOSI引脚输入的一个完整数据时:
 此数据通过移位寄存器,会在最后一个采样时钟边沿被传输到接收缓冲中;硬件也同时会置位
SPI_I2S_INTSTAT.RX_INTF标志。之后软件通过读SPI_I2S_RXREG,就能从接收缓冲中获取
该数据。
 软件配置SPI_I2S_INTEN.RX_IEN位为‘1’来打开中断使能,利用CPU中断获取接收数据。

使用特权

评论回复
沙发
tpgf| | 2023-10-12 11:42 | 只看该作者
可以经过微小的配置将从模式改为主模式吗

使用特权

评论回复
板凳
kxsi| | 2023-10-12 11:53 | 只看该作者
spi的通讯方式必须是一对一是吗

使用特权

评论回复
地板
zljiu| | 2023-10-12 12:11 | 只看该作者
如果通讯速度快  数据大的话 是不是需要使用双缓冲呢

使用特权

评论回复
5
磨砂| | 2023-10-12 13:27 | 只看该作者
主从设备之间时钟的偏差在多少范围内能保证通讯正常呢

使用特权

评论回复
6
晓伍| | 2023-10-12 13:45 | 只看该作者
磨砂 发表于 2023-10-12 13:27
主从设备之间时钟的偏差在多少范围内能保证通讯正常呢

其实只要在当前通讯种类的容差范围内就行

使用特权

评论回复
7
aoyi| | 2023-10-12 20:46 | 只看该作者
spi在通讯的时候存在卡顿的现象吗

使用特权

评论回复
8
中国龙芯CDX| | 2023-12-28 10:31 | 只看该作者
aoyi 发表于 2023-10-12 20:46
spi在通讯的时候存在卡顿的现象吗

这个应该不会吧,卡顿问题一般是性能问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

203

主题

1672

帖子

2

粉丝