SPC58NX SIPI模块

SPC58NX SIPI模块学习

主要功能

本文记录了对于SPC58NX SIPI模块的相关内容学习,SIPI模块的主要功能如下:

①. 两设别间的点对点通讯
②. 全双工通信【单工通信:只支持信号在一个方向传输;半双工通信:允许信号在两个方向上传输,但某个时刻只允许信号在一个信道上单向传输;全双工:全双工通信允许数据同时在两个方向上传输】
③. 有四个通道,包括一个具有数据流传输能力的通道。
④. 每个通道均可配置DMA访问
⑤. 可配置CRC保护机制
⑥. 超时保护机制
⑦. 固定优先级的通道选择
⑧. 对于数据流通道具有高达256位的数据传输能力
⑨. 用于对每个新传输任务分配顺序传输ID的公共池
⑩. 目标节点通过AHB主接口进行共享内存的访问

在这里插入图片描述SIPI模块
SIPI模块框图

一、帧格式

①. 所有帧有相同的格式
• 16位报头(包含配置信息)
• 地址、地址+数据、无
• 16位CRC
②. 两种命令帧:读和写。分别有三种读/写格式
• 32位
• 16位
• 8位
③. 每个命令帧会有以下三种响应之一
• 读数据
• 写确认
  报Error

帧储存在发起接口(initiator)所在的数据缓存区,储存的数量取决于通道,地址和数据的传输数据和存储数据相同。
  1. 不同帧类型

读取请求帧格式
读取响应帧格式
写请求帧格式
写确认帧格式

数据流写请求格式

  1. 报头格式

报头格式如下:
报头格式报头格式
其中8-12位为相应的命令码、13-15位为ID,1-3位为通道选择:
命令码
通道选择

  1. CRC算法

    CRC字段的宽度为16位宽,始终使用CRC-16-CITT(x16+x12+x5+1)激活计算

二、传输类型

1.读取传输

读取请求传输(发起接口):
读取请求传输
读取响应传输(目标接口):
读取响应传输
对不同大小的数据Data中的分布如下:
数据大小分布

2.写入传输

可以分为两种类型:
1、正常数据写入传输:0、1、2、3通道
2、数据流写入传输:仅通道2
LFAST帧格式
普通寄存器写入帧格式:
在这里插入图片描述
数据流写入帧格式

在这里插入图片描述

3.写入确认传输

在这里插入图片描述

4.ID请求传输

在这里插入图片描述在这里插入图片描述

三、接口和流程图

1.寄存器名称及含义

在这里插入图片描述
在这里插入图片描述

2.数据写入

单寄存器写入
对于发起节点:
①. 在发起节点配置SIPI_CCRn(配置寄存器)
②. 在发起节点的SIPI_CDRn(数据寄存器)写入数据
③. 在发起节点配置SIPI_CARn(地址寄存器),当地址寄存器完成写入,且SIPI_CCRn = 1,则SIPI发起节点会计算报头、地址和数据域的CRCC,并开始传输数据至LFAST
④. 软件会轮询SIPI_CSRn(状态寄存器)确定请求是否完成,将SIPI_CSRn置1,会生成中断,并且SIPI_CIRn=1(中断寄存器)
对于目标节点:
①. 目标节点会将地址,数据和控制信息放于AHB主接口
②. 当程序完成,目标节点会生产确认帧并发回至LFAST
在这里插入图片描述
在这里插入图片描述
多寄存器写入
对发起节点:
①. 软件进行DMA传输控制描述符(TCD)的配置
②. 软件将SIPI_CCRn(CHEN/DEN)写为1
③. SIPI会生产DMI请求并发送至DMI控制器
④. SIPI会根据传输数量和数据寄存器的大小,通过DMI接口开始复制数据到SIPI_CDRn
⑤. 当数据完成copy,SIPI发起节点会进行CRC的计算,并在SIPI_CAR寄存器写完后,开始传输至LFAST
⑥. 轮询SIPI_CSRn,并在状态为1时生成中断
⑦. 在SIPI_CCRn=1(通道控制寄存器)时,SIPI请求会生成,并发送至DMA控制器,若不等于1,则请求不会发送,且状态机会进入idle模式
⑧. 步骤4-7会进行重复。

对于目标节点:
1. 目标节点会将地址,数据和控制信息放于AHB主接口
2. 当程序完成,目标节点会生产确认帧并发回至LFAST

在这里插入图片描述

3.数据读取

单寄存器数据读取
对发起节点:
1. 软件/DMA会进行SIPI_CCRn的配置,并在最后一步写入SIPI_CARn
2. 当地址寄存器写入后会进行CRC的计算,并将数据传输至LFAST
3. 软件进行寄存器状态的轮询,如果状态寄存器置一,会生成中断,若始终未能置1,则SIPIP_ERR会置1,意味着发生了超时
4. 若SIPI_CSRn=1,软件可以读取数据寄存器,,若SIPI_CSRn=0,软件可以采取相应的措施。

对于目标节点:
1. 目标节点会将地址,数据和控制信息放于AHB主接口
2. 当程序完成,目标节点会发送读取反馈至LFAST
在这里插入图片描述多寄存器数据读取
对发起节点
1. 软件/DMA会进行SIPI_CCRn的配置,并在最后一步写入SIPI_CARn
2. 当地址寄存器写入后会进行CRC的计算,并将数据传输至LFAST
3. 软件进行寄存器状态的轮询,如果状态寄存器置一,会生成中断,若始终未能置1,则SIPIP_ERR会置1,意味着发生了超时
4. 步骤2-3进行重复

对于目标节点:
1. 目标节点会将地址,数据和控制信息放于AHB主接口
2. 当程序完成或者所有数据寄存器已满,目标节点会计算CRC并发送读取反馈帧至LFAST
在这里插入图片描述

4.数据流传输

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述

四、DMA的处理过程

1、SIPI Master使用外部的DMA模块在系统层级通过Peripheral Bridge Interface进行RAM和SIPI 寄存器的数据交换
2、SIPI Slave 使用自己内置的DMA通过它自己设备连接的数据主端口进行RAM数据的写入和从系统RAM中读取数据

①. 软件配置TCD
②. DMA将数据从RAM传输至SIPI寄存器中
③. SIPI通过LFAST进行数据的传输
④. 若收到确认或者fault响应,则SIPI会重复该过程。若收到err响应,SIPI会进入idle状态,并生成中断,软件接替SIPI的控制
⑤. 若SIPI收到读取请求,会发出请求
⑥. 一旦读取请求置位,DMA开始进行SIPI寄存器和RAM之间的传输
⑦. 若DMA传输完成,请求会被否定
⑧. 若ERR发生,SIPI会生成中断,软件会接管SIPI
⑨. 5-8会重复直到传输完成

五、SIPI的模式

①. 初始化
②. 正常
③. 禁用

六、Errors

①. 超时:在发起节点生成,未在SIPI_CTORn(超时寄存器)定义的时间内收到确认/响应时报出
②. CRC故障:在目标节点生成,收到的CRC值和计算的CRC值不一致时报出
③. 最大值超出故障:仅在目标节点报出,当SIPI_ACR=SIPI_MAXCR时报出
④. 传输ID错误:仅在发起节点报出
⑤. 确认错误:仅在发起节点报出,在收到错误的确认信息时。

总结

信息整理过程些许匆忙,存在理解不全面和需要补充的内容,待后续完善

  • 24
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值