基于i2c协议的DMA传输数据方法、系统及芯片与流程

    技术2025-08-06  11


    本技术涉及数据传输,尤其涉及一种基于i2c协议的dma传输数据方法、系统、芯片及计算机可读存储介质。


    背景技术:

    1、因为现在linux(一种操作系统)的i2c协议(inter-integrated circuit,串行通信协议)是一种很常见的协议,因为其结构简单,但是功能全面,常用于传递相关外设数据信息,但是在相关技术中,内核为了稳定,会对接口进行一定限制,通过linux的源码注释可以看到,通过i2c协议传递的有效数据是32位,不能一次性传输更多的数据,当需要快速的传输大数据的时候,使用内核原生接口并无法满足要求。

    2、因此,现有技术还有待于改进和发展。


    技术实现思路

    1、本技术的主要目的在于提供一种基于i2c协议的dma传输数据方法、系统及芯片,旨在解决现有技术中采用内核原生接口进行数据传输的方式无法满足快速传输大数据需求的问题。

    2、本技术第一方面实施例提供一种基于i2c协议的dma传输数据方法,包括以下步骤:设置dma缓冲区,获取传输文件信息;其中,所述传输文件信息为超过预设数值位的数据包;将所述传输文件信息写入所述dma缓冲区中,并基于i2c协议将所述缓冲区中的所述传输文件信息发送至接收端;接收所述接收端发送的成功结果,所述成功结果表示所述接收端成功接收到所述传输文件信息。

    3、根据上述技术手段,本技术实施例基于i2c协议将申请的dma类型的dma缓冲区中的传输文件信息向接收端发送,可以避免i2c标准接口限制的数据大小,且采用dma缓冲区不需要cpu进行大量的中断负载,从而通过dma的高传输速度和i2c的简单接口,实现对大量数据进行快速数据传输的目的。

    4、可选地,在本技术的一个实施例中,所述dma缓冲区包括用户缓冲区和内核缓冲区;所述设置dma缓冲区,具体包括:对i2c接口进行修改,以使得所述i2c接口采用dma类型的用户缓冲区进行存储数据;在内核中申请dma类型的内核缓冲区,将所述内核缓冲区进行分配,以使所述内核缓冲区容纳单个或多个数据块,其中,所述内核缓冲区与所述用户缓冲区的类型相同。

    5、根据上述技术手段,本技术实施例通过使用dma缓冲区,在实现时注意配置和使用操作系统提供的相应支持和接口,以确保数据的安全高效传输,从而在通过i2c进行大量数据传输时,不仅可以避免因虚拟内存引入的地址映射问题,还能保证数据传输的速度和稳定性。

    6、可选地,在本技术的一个实施例中,所述传输文件信息包括文件数据和数据大小;所述获取传输文件信息,具体包括:获取文件信息,并对所述文件信息进行文件操作,得到文件数据;基于函数获取所述文件数据的数据大小。

    7、根据上述技术手段,本技术实施例通过获取能够写入dma缓冲区中的文件数据和数据大小,从而保证后续文件传输完成与否的判断准确性,进而提高了数据传输的效率。

    8、可选地,在本技术的一个实施例中,所述获取传输文件信息,之后还包括:向所述接收端发送开始信号;获取所述接收端的寄存器响应所述开始信号生成的响应结果,根据所述响应结果向所述接收端发送所述传输文件信息。

    9、根据上述技术手段,本技术实施例通过进行与mcu通讯准备来确认mcu是否准备好接收数据,从而保证数据传输的有效性,提高数据传输的效率,以实现大量数据快速传输的目的。

    10、可选地,在本技术的一个实施例中,所述将所述传输文件信息写入所述dma缓冲区中,并基于i2c协议将所述缓冲区中的所述传输文件信息发送至接收端,具体包括:根据所述内核缓冲区的分配大小,匹配所述传输文件信息分为的多个数据块,将所述数据块写入对应分配大小的所述内核缓冲区中;计算所述内核缓冲区内所述数据块的crc校验数据;将所述crc校验数据和所述数据块通过i2c协议发送至所述接收端,以进行数据接收验证。

    11、根据上述技术手段,本技术实施例通过循环发送数据,保证数据发送的有效性和完整性,将数据安全且高效地发送给接收端,从而实现大量数据快速传输的目的。

    12、可选地,在本技术的一个实施例中,所述将所述crc校验数据和所述数据块通过i2c协议发送至所述接收端,以进行数据接收验证,之后还包括:当所述接收端基于所述crc校验数据修改对应的寄存器值时,获取所述接收端的当前寄存器值;根据所述当前寄存器值得到所述传输文件信息的发送状态;若所述发送状态为发送成功,则按照所述缓冲区对应的分配大小进行地址数据偏移,以进行下一数据块的发送直至所有数据块发送完成。

    13、根据上述技术手段,本技术实施例通过错误检测和处理机制,使用i2c和dma技术进行大量数据传输时,以确保数据传输的高效和可靠,且确保数据完整性和系统稳定性。

    14、可选地,在本技术的一个实施例中,所述接收所述接收端发送的成功结果,所述成功结果表示所述接收端成功接收到所述传输文件信息,具体包括:当所有数据块发送完成时向所述接收端发送结束信号;获取所述接收端的寄存器响应所述结束信号生成的成功结果。

    15、根据上述技术手段,本技术实施例通过向接收端发送结束信号来判断是否接收端成功接收到被传输的大量数据,从而保证数据传输的完整性,保证了整个数据传输的有效性。

    16、本技术第二方面实施例提供一种基于i2c协议的dma传输数据系统,其中,所述基于i2c协议的dma传输数据系统包括:缓冲区与信息获取模块,用于设置dma缓冲区,获取传输文件信息;其中,所述传输文件信息为超过预设数值位的数据包;数据传输模块,用于将所述传输文件信息写入所述dma缓冲区中,并基于i2c协议将所述缓冲区中的所述传输文件信息发送至接收端;传输截止模块,用于接收所述接收端发送的成功结果,所述成功结果表示所述接收端成功接收到所述传输文件信息。

    17、可选地,在本技术的一个实施例中,所述dma缓冲区包括用户缓冲区和内核缓冲区;缓冲区与信息获取模块包括接口修改单元和缓冲区申请单元;其中,接口修改单元,用于对i2c接口进行修改,使得所述i2c接口采用dma类型的用户缓冲区进行存储数据;缓冲区申请单元,用于在内核中申请dma类型的内核缓冲区,将所述内核缓冲区进行分配,以使所述内核缓冲区容纳单个或多个数据块,其中,所述内核缓冲区与所述用户缓冲区的类型相同。

    18、可选地,在本技术的一个实施例中,缓冲区与信息获取模块还包括文件操作单元和数据大小确认单元;其中,文件操作单元,用于获取文件信息,并对所述文件信息进行文件操作,得到文件数据;数据大小确认单元,用于基于函数获取所述文件数据的数据大小。

    19、可选地,在本技术的一个实施例中,基于i2c协议的dma传输数据系统还包括:开始信号发送模块和信息传输启动模块;其中,开始信号发送模块,用于向所述接收端发送开始信号;信息传输启动模块,用于获取所述接收端的寄存器响应所述开始信号生成的响应结果,根据所述响应结果向所述接收端发送所述传输文件信息。

    20、可选地,在本技术的一个实施例中,数据传输模块包括缓冲数据分配单元、校验信息获取单元和数据发送单元;其中,缓冲数据分配单元,用于根据所述内核缓冲区的分配大小,匹配所述传输文件信息分为的多个数据块,将所述数据块写入对应分配大小的所述内核缓冲区中;校验信息获取单元,用于计算所述内核缓冲区内所述数据块的crc校验数据;数据发送单元,用于将所述crc校验数据和所述数据块通过i2c协议发送至所述接收端,以进行数据接收验证。

    21、可选地,在本技术的一个实施例中,基于i2c协议的dma传输数据系统还包括寄存器值获取模块、发送状态确认模块和数据完成发送确认模块;其中,寄存器值获取模块,用于当所述接收端基于所述crc校验数据修改对应的寄存器值时,获取所述接收端的当前寄存器值;发送状态确认模块,用于根据所述当前寄存器值得到所述传输文件信息的发送状态;数据完成发送确认模块,用于若所述发送状态为发送成功,则按照所述缓冲区对应的分配大小进行地址数据偏移,以进行下一数据块的发送直至所有数据块发送完成。

    22、可选地,在本技术的一个实施例中,传输截止模块包括结束信号发送单元和数据传输完成单元;其中,结束信号发送单元,用于当所有数据块发送完成时向所述接收端发送结束信号;数据传输完成单元,用于获取所述接收端的寄存器响应所述结束信号生成的成功结果。

    23、本技术第三方面实施例提供一种芯片,所述芯片包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于i2c协议的dma传输数据程序,所述基于i2c协议的dma传输数据程序被所述处理器执行时实现如上述实施例所述的基于i2c协议的dma传输数据方法的步骤。

    24、本技术第四方面实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有基于i2c协议的dma传输数据程序,所述基于i2c协议的dma传输数据程序被处理器执行时实现如上述实施例所述的基于i2c协议的dma传输数据方法的步骤。

    25、本技术的有益效果:

    26、(1)本技术实施例基于i2c协议将申请的dma类型的dma缓冲区中的传输文件信息向接收端发送,可以避免i2c标准接口限制的数据大小,且采用dma缓冲区不需要cpu进行大量的中断负载,从而通过dma的高传输速度和i2c的简单接口,实现对大量数据进行快速数据传输的目的。

    27、(2)本技术实施例通过使用dma缓冲区,在实现时注意配置和使用操作系统提供的相应支持和接口,以确保数据的安全高效传输,从而在通过i2c进行大量数据传输时,不仅可以避免因虚拟内存引入的地址映射问题,还能保证数据传输的速度和稳定性。

    28、(3)本技术实施例通过循环发送数据,保证数据发送的有效性和完整性,将数据安全且高效地发送给接收端,从而实现大量数据快速传输的目的。

    29、(4)本技术实施例通过错误检测和处理机制,使用i2c和dma技术进行大量数据传输时,以确保数据传输的高效和可靠,且确保数据完整性和系统稳定性。

    30、本技术附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本技术的实践了解到。


    技术特征:

    1.一种基于i2c协议的dma传输数据方法,其特征在于,所述基于i2c协议的dma传输数据方法包括:

    2.根据权利要求1所述的基于i2c协议的dma传输数据方法,其特征在于,所述dma缓冲区包括用户缓冲区和内核缓冲区;

    3.根据权利要求1或2所述的基于i2c协议的dma传输数据方法,其特征在于,所述传输文件信息包括文件数据和数据大小;

    4.根据权利要求1所述的基于i2c协议的dma传输数据方法,其特征在于,所述获取传输文件信息,之后还包括:

    5.根据权利要求2所述的基于i2c协议的dma传输数据方法,其特征在于,所述将所述传输文件信息写入所述dma缓冲区中,并基于i2c协议将所述缓冲区中的所述传输文件信息发送至接收端,具体包括:

    6.根据权利要求5所述的基于i2c协议的dma传输数据方法,其特征在于,所述将所述crc校验数据和作为所述数据块的部分所述传输文件信息发送至所述接收端,之后还包括:

    7.根据权利要求6所述的基于i2c协议的dma传输数据方法,其特征在于,所述接收所述接收端发送的成功结果,所述成功结果表示所述接收端成功接收到所述传输文件信息,具体包括:

    8.一种基于i2c协议的dma传输数据系统,其特征在于,所述基于i2c协议的dma传输数据系统包括:

    9.一种芯片,其特征在于,所述芯片包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的基于i2c协议的dma传输数据程序,所述基于i2c协议的dma传输数据程序被所述处理器执行时实现如权利要求1-7任一项所述的基于i2c协议的dma传输数据方法的步骤。

    10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有基于i2c协议的dma传输数据程序,所述基于i2c协议的dma传输数据程序被处理器执行时实现如权利要求1-7任一项所述的基于i2c协议的dma传输数据方法的步骤。


    技术总结
    本申请公开了一种基于i2c协议的DMA传输数据方法、系统及芯片,基于i2c协议的DMA传输数据方法包括:设置DMA缓冲区,获取传输文件信息;其中,所述传输文件信息为超过预设数值位的数据包;将所述传输文件信息写入所述DMA缓冲区中,并基于i2c协议将所述缓冲区中的所述传输文件信息发送至接收端;接收所述接收端发送的成功结果,所述成功结果表示所述接收端成功接收到所述传输文件信息。本申请基于I2C协议将申请的DMA类型的DMA缓冲区中的传输文件信息向接收端发送,可以避免i2c标准接口限制的数据大小,且采用DMA缓冲区不需要CPU进行大量的中断负载,从而通过DMA的高传输速度和I2C的简单接口,实现对大量数据进行快速数据传输的目的。

    技术研发人员:罗聪
    受保护的技术使用者:重庆长安汽车股份有限公司
    技术研发日:
    技术公布日:2024/10/24
    转载请注明原文地址:https://symbian.8miu.com/read-35160.html

    最新回复(0)