本发明涉及集成电路,具体为一种适用于risc-v架构的基于dma的spi通讯方法。
背景技术:
1、在单片机系统中,肯定会遇到单片机与其他外部芯片进行数据传输的情况。如果传输数据量大,传输频繁,我们往往会选择通信速率较高的spi接口,并且配合dma控制器进行使用。
2、现有技术中,数据直接在内存和io设备之间传输,由硬件直接实现,与cpu流水作业相比传输效率更高,而且还可以把cpu从重复的机械性任务中解放出来,去做一些运算类的任务。
3、但是,在目前的risc-v架构中,完成dma传输相关配置后,操作通道使能寄存器开始发送数据,本次发送使能只是单次传输,本次数据发送完成后就会停止,想要再传输的话,必须关断dma使能后重新配置才能进行下一次传输。在传输数据量大、传输频繁的情况下,频繁的申请和释放dma通道的开销就会变得相当可观。spi接收到数据后,只能触发spi中断,并不能触发dma中断,因此不能使用dma进行数据接收。
技术实现思路
1、本发明的目的在于提供一种适用于risc-v架构的基于dma的spi通讯方法,以解决上述背景技术中提出的问题。
2、为实现上述目的,本发明提供如下技术方案:一种适用于risc-v架构的基于dma的spi通讯方法,所述方法包括以下步骤:
3、将dma控制寄存器chn_ctrl_a,保留未使用的第8位chn_ctrl_a[8]设置为循环模式使能,该位为0时为为单次传输模式,该位置1时为循环传输模式;
4、将dma中断状态寄存器chn_int_status的第4位,chn_int_status[0:3]由原来的发送中断标志,改为传输中断标志,即接收和发送共用。
5、优选的,选择一路usi将其设置为spi模式,并设置该路spi的通信速率、主从机模式、极性和相位、数据大小端模式、数据位宽。
6、优选的,申请一路空闲的dma通道,并设置数据源地址、目标地址、数据位宽、单次传输数据长度、数据大小端模式、传输类型、循环模式。
7、优选的,dma通道使能中断,使能通道,开始传输数据,此时cpu去做其他运算类的任务。
8、优选的,dma发送一半中断触发,此后dma将不再访问前半段数据所在存储区域,mcu对该区域内的数据进行更新,而不会与dma发生冲突,适合于cpu其它运算任务轻,spi数据发送任务较重的应用场景。
9、优选的,如果mcu有其它运算类任务处理,在dma发生完成中断触发后,再对全部数据进行更新,适合于cpu其它运算任务重,spi数据发送任务较轻的应用场景。
10、与现有技术相比,本发明的有益效果是:
11、本发明提出的适用于risc-v架构的基于dma的spi通讯方法,将dma控制寄存器chn_ctrl_a,保留未使用的第8位chn_ctrl_a[8]设置为循环模式使能,该位为0时为为单次传输模式,该位置1时为循环传输模式;将dma中断状态寄存器chn_int_status的第4位,chn_int_status[0:3]由原来的发送中断标志,改为传输中断标志,即接收和发送共用;解决了spi接收到数据后,只能触发spi中断,并不能触发dma中断,因此不能使用dma进行数据接收的问题。
1.一种适用于risc-v架构的基于dma的spi通讯方法,其特征在于:所述方法包括以下步骤:
2.根据权利要求1所述的一种适用于risc-v架构的基于dma的spi通讯方法,其特征在于:选择一路usi将其设置为spi模式,并设置该路spi的通信速率、主从机模式、极性和相位、数据大小端模式、数据位宽。
3.根据权利要求1所述的一种适用于risc-v架构的基于dma的spi通讯方法,其特征在于:申请一路空闲的dma通道,并设置数据源地址、目标地址、数据位宽、单次传输数据长度、数据大小端模式、传输类型、循环模式。
4.根据权利要求1所述的一种适用于risc-v架构的基于dma的spi通讯方法,其特征在于:dma通道使能中断,使能通道,开始传输数据,此时cpu去做其他运算类的任务。
5.根据权利要求1所述的一种适用于risc-v架构的基于dma的spi通讯方法,其特征在于:dma发送一半中断触发,此后dma将不再访问前半段数据所在存储区域,mcu对该区域内的数据进行更新,而不会与dma发生冲突,适合于cpu其它运算任务轻,spi数据发送任务较重的应用场景。
6.根据权利要求1所述的一种适用于risc-v架构的基于dma的spi通讯方法,其特征在于:如果mcu有其它运算类任务处理,在dma发生完成中断触发后,再对全部数据进行更新,适合于cpu其它运算任务重,spi数据发送任务较轻的应用场景。