主要功能
本文记录了对于SPC58NX SIPI模块的相关内容学习,SIPI模块的主要功能如下:
①. 两设备间的点对点通讯
②. 全双工通信【单工通信:只支持信号在一个方向传输;半双工通信:允许信号在两个方向上传输,但某个时刻只允许信号在一个信道上单向传输;全双工:全双工通信允许数据同时在两个方向上传输】
③. 有四个通道,包括一个具有数据流传输能力的通道。
④. 每个通道均可配置DMA访问
⑤. 可配置CRC保护机制
⑥. 超时保护机制
⑦. 固定优先级的通道选择
⑧. 对于数据流通道具有高达256位的数据传输能力
⑨. 用于对每个新传输任务分配顺序传输ID的公共池
⑩. 目标节点通过AHB主接口进行共享内存的访问
一、帧格式
①. 所有帧有相同的格式
• 16位报头(包含配置信息)
• 地址、地址+数据、无
• 16位CRC
②. 两种命令帧:读和写。分别有三种读/写格式
• 32位
• 16位
• 8位
③. 每个命令帧会有以下三种响应之一
• 读数据
• 写确认
报Error
帧储存在发起接口(initiator)所在的数据缓存区,储存的数量取决于通道,地址和数据的传输数据和存储数据相同。
-
不同帧类型
-
报头格式
报头格式如下:
其中8-12位为相应的命令码、13-15位为ID,1-3位为通道选择:
-
CRC算法
CRC字段的宽度为16位宽,始终使用CRC-16-CITT(x16+x12+x5+1)激活计算
二、传输类型
1.读取传输
读取请求传输(发起接口):
读取响应传输(目标接口):
对不同大小的数据Data中的分布如下:
2.写入传输
可以分为两种类型:
1、正常数据写入传输:0、1、2、3通道
2、数据流写入传输:仅通道2
普通寄存器写入帧格式:
数据流写入帧格式
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错误:仅在发起节点报出
⑤. 确认错误:仅在发起节点报出,在收到错误的确认信息时。
总结
信息整理过程些许匆忙,存在理解不全面和需要补充的内容,待后续完善