SPI同步异步通信DMA和IRQ模块配置说明

一 SPI模块配置

1 SPI 通信

同步模式:指的是在 Spi 数据进行传输时 CPU 不能处理除中断外的其他任务,数据传输完成后,CPU 才可以进行其他任务。

异步模式:指的是在 Spi 数据开始传输后,数据收发处理交给 Dma 和 Qspi 模块完成,CPU 可以同时处理其他任 务,不受 Spi 通信的影响。

EB(External Buffer):为 Spi 通信数据缓存模式。EB 指的是用户需要自行 定义收发数据缓存,数据字长用户可通过函数形参进行设置。

IB(Internal Buffer):指的是 Mcal 代码中已经定义了数据收发缓存,用户可以读写该缓存,数据字长在 Treses 的 Mcal 配置界面中设置8190,在代码中不可更改。

Channel: 用于配置数据缓存(如字长、字数、数据方向)。

Job:为一个基本的报文帧传输,包含一个或多个 Channel 的选择及片选、波特率、延时时间、 校验等(ExternalDevice)的设置。

Sequence: 为一个基本的 SPI 收发操作对象,包含一个或多个 Job。

图片

2 PAD配置

MCU有6路QSPI可以供MCU配置使用(英飞凌TC397为例)。

图片

3 SPI配置

一路SPI需要配置硬件原理图参考datasheet,配置MRST、MTS、SCLK和SLSO四路引脚和对应的Port口。

图片

Leading和Trailing电平极性参考对端SPI通信协议。

图片

SPI通道配置,需要新增

(1)SpiHwConfiguration: 配置QSPI kenel和DMA通道关联。

(2)SpiChannel:配置IB/EB数据传输格式、设置 Channel 数据宽度、Internal Buffer 长度、报文数据传输方向低/高位在前(LSB/MSB)。

(3)SpiExternalDevice: 配置波特率通信协议,移位边沿为 Leading/Trailing。

图片

(4)SpiJob: 配置同步、异步,关联Spi Channel和SpiExternalDevice。

(5)SpiSequence: 配置传输sequence序列,SpiSequence传输结束后通知回调接口,关联SpiJob。

二 DMA配置

SPI的同步和异步是由CPU/DMA处理传输buffer区分,异步场景下有large数据快速搬运需求时考虑DMA处理。

(1)DmaChannelId:配置spi数据接收的 DMA 通道号。

(2)DmaChannelNotification: DMA 传输完成中断通知函数 Spi_QspiDmaCallout。

(3)DmaChannelTransactionSet:配置Dma 通道源/目的地址、地址的h头文件、通的 TCS 链表个数、设置 Transaction搬运的大小、设置转换 Transfer大小、每个移动 Move 的长度。

(4)IrqDmaChSRPrio:配置DMA通道的中断优先级。

(5)IrqDmaChSRTos:配置 DMA 通道中断处理单元所在CPU。

三 IRQ配置

在异步模式下,需要配置 SPI 和 DMA 模块的中断IRQ,其中 QSPI 的 RX 和 TX 中断处理单元为 DMA,TX和RX中断优先级为对应的 DMA 通道号。

(1) IrqQspiTxPrio/IrqQspiRxPrio :优先级选择配置的DMA 通道号。

(2) IrqQspi0PTPrio:选择异步下QSPI的中断SRN。

(3) IrqQspiTxTos/IrqQspiRxTos:同步选择CPU、异步选择DMA。

(4) IrqQspi0ErrPrio:异步配置优先级,同步优先级默认0。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大屋1313

不积硅步无以至千里感谢您的鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值