打印
[其他]

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

[复制链接]
929|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 小夏天的大西瓜 于 2023-9-25 18:21 编辑

SPI作为主设备时,输出串行时钟到SCK引脚上,供从设备使用。
一、具体配置如下:

1. 配置SPI_I2S_SPBREG寄存器,定义串行时钟波特率。
2. 配置SPI_I2S_CCTL寄存器中CPOL、CPHA/CPHASEL位,确定时序模式。
3. 配置SPI_I2S_CCTL.SPILEN 来定义8或7位数据帧格式;配置SPI_I2S_GCTL.DW8_32 为
‘1’,可配置SPI_I2S_EXTCTL寄存器来定义成任意帧格式(SPILEN需固定为‘1’)。
4. 配置SPI_I2S_CCTL.LSBFE来确定数据收发的顺序(LSB或MSB位优先)。
5. 如果只接收而不发送数据,可配置SPI_I2S_RXDNR寄存器来定义需要接收的字节数(当接收到
指定个数字节后,SCK时钟输出会结束并保持在CPOL位配置的状态上)。
6. 配置寄存器SPI_I2S_GCTL中的MODE位为‘1’(主模式)、SPIEN位为‘1’(SPI功能使能)
并配置SPI工作所需的GPIO功能引脚。
7. 配置寄存器SPI_I2S_GCTL中TXEN、RXEN位为‘1’,打开发送、接收的许可(发送时打开
TXEN后写入数据到寄存器SPI_I2S_TXREG),SPI将在主模式下输出时钟SCK和同步数据MOSI到引脚
上,并从MISO引脚上采样输入数据;NSS是主设备可选的输出功能。
注意:必须配置主、从设备的时序模式和数据帧收发顺序为一致,以保证数据能正常传输。
二、数据发送过程
配置TXEN位为‘1’后,写数据到发送数据寄存器TXREG,此数据将传输到发送缓冲,主设备开始发
送。主设备按照预先配置好的波特率串行输出SCK时钟和MOSI数据到引脚上,此过程符合数据/时钟的相
关时序(由CPOL、CPHA/CPHASEL位决定);而且LSBFE位决定了数据串行传输顺序。
当数据第一位被发送时,硬件会置位SPI_I2S_INTSTAT.TX_INTF 标志,软件利用此标志来写
TXREG以实现数据的连续发送(配置SPI_I2S_INTEN.TX_IEN位为‘1’来产生CPU中断)。
三、数据接收过程
主设备接收到MISO引脚输入的一个完整数据时:
 此数据通过移位寄存器,会在最后一个采样时钟边沿被传输到接收缓冲中;硬件也同时会置位
SPI_I2S_INTSTAT.RX_INTF标志。之后软件通过读SPI_I2S_RXREG,就能从接收缓冲中获取
该数据。
 软件配置SPI_I2S_INTEN.RX_IEN位为‘1’可打开中断使能,利用CPU中断获取接收数据。
 只接收时,接收完RXDNR定义的字节个数后,硬件将置位SPI_I2S_INTEN.RXMATCH_INTF标
志,同时主设备不再发送时钟信号,SCK输出将保持在CPOL位配置的状态上(固定高或低电
平)。


使用特权

评论回复
沙发
tpgf| | 2023-10-11 12:15 | 只看该作者
主动方式是说将自己当做主模式进行操作了是吗

使用特权

评论回复
板凳
qcliu| | 2023-10-11 15:22 | 只看该作者
我们可以使用的帧格式都有哪几种呢

使用特权

评论回复
地板
drer| | 2023-10-11 15:52 | 只看该作者
设备双方可以进行主从角色互换吗

使用特权

评论回复
5
coshi| | 2023-10-11 16:38 | 只看该作者
drer 发表于 2023-10-11 15:52
设备双方可以进行主从角色互换吗

理论上可行 但是实际上可操作性不好

使用特权

评论回复
6
kxsi| | 2023-10-11 16:56 | 只看该作者
首先需要配置系统的时钟 然后才配置i2s寄存器吧啊

使用特权

评论回复
7
wiba| | 2023-10-11 17:16 | 只看该作者
什么时候对相应的io口进行配置呢

使用特权

评论回复
8
中国龙芯CDX| | 2023-12-28 10:33 | 只看该作者
楼主SPI初始化程序能方便给发一下嘛?

使用特权

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

本版积分规则

203

主题

1672

帖子

2

粉丝