基于spi转usb芯片的数据读取、写入方法及spi转usb芯片
技术领域
1.本发明实施例涉及数据传输领域,特别涉及基于spi转usb芯片的数据读取、写入方法及spi转usb芯片。
背景技术:2.生活中电子设备经常需通过外接设备来获得信息,或者将信息存储至外接设备中。usb通用串行总线是一种标准化数据传输方式。当电子设备上没有usb接口或者usb接口不够用时,我们需将其他接口比如spi转换为usb接口使用。
3.然而,发明人发现,相关技术中设备基于spi转usb芯片进行数据传输的过程中,需要等待spi转usb芯片传输完成后,再进行下一次传输。一般spi转usb芯片的缓冲器只有64到128个字节,即一次传输只能传64到128个字节,数据传输耗时长,数据传输效率低下。如果通过提高spi总线时钟频率或增加spi转usb芯片的缓冲器大小来提高数据传输效率,则又会增加生产成本。
技术实现要素:4.本发明实施方式的目的在于提供基于spi转usb芯片的数据读取、写入方法及spi转usb芯片,在不增加生产成本的前提下使得spi转usb芯片的数据传输效率提高。
5.为实现上述目的,本发明的实施方式提供了一种基于spi转usb芯片的数据读取方法,应用于串行外设接口spi转通用串行总线usb芯片,所述芯片包括中央处理器cpu、直接存储器访问dma和缓冲器,所述缓冲器被预先划分为第一缓冲子区域和第二缓冲子区域,所述方法包括:
6.所述cpu在每一次接收到电子设备发送的数据读取请求后,向所述dma发送所述数据读取请求,触发所述dma从接口设备中读取与所述数据读取请求对应的第一数据;
7.所述dma在每一次被触发后,根据所述数据读取请求从所述接口设备中读取所述第一数据,并将读取的所述第一数据交替写入所述第一缓冲子区域或所述第二缓冲子区域;
8.所述cpu在所述dma将所述第一数据写入所述第一缓冲子区域或所述第二缓冲子区域后,从缓冲所述第一数据的子区域读取所述第一数据并发送给所述电子设备;
9.其中,所述cpu的操作与所述dma的操作并行执行。
10.本发明的实施方式还提供了一种基于spi转usb芯片的数据写入方法,应用于串行外设接口spi转通用串行总线usb芯片,所述芯片包括中央处理器cpu、直接存储器访问dma和缓冲器,所述缓冲器被预先划分为第一缓冲子区域和第二缓冲子区域,所述方法包括:
11.所述cpu在每一次接收到电子设备发送的数据写入请求后,根据所述数据写入请求从所述电子设备中获取与所述数据写入请求对应的第二数据,并将获取的所述第二数据交替写入所述第一缓冲子区域或所述第二缓冲子区域;
12.所述cpu向所述dma发送所述数据写入请求,触发所述dma从缓冲所述第二数据的
子区域读取所述第二数据;
13.所述dma在每一次被触发后,从缓冲所述第二数据的子区域读取所述第二数据并发送给所述接口设备;
14.其中,所述cpu的操作与所述dma的操作并行执行。
15.本发明的实施方式还提供了一种spi转usb芯片,所述芯片包括中央处理器cpu、直接存储器访问dma和缓冲器,其中,所述缓冲器被预先划分为第一缓冲子区域和第二缓冲子区域;
16.所述cpu用于在每一次接收到电子设备发送的数据读取请求后,向所述dma发送所述数据读取请求,触发所述dma从接口设备中读取与所述数据读取请求对应的第一数据;还用于在所述dma将所述第一数据写入所述第一缓冲子区域或所述第二缓冲子区域后,从缓冲所述第一数据的子区域读取所述第一数据并发送给所述电子设备;
17.所述dma用于在每一次被触发后,根据所述数据读取请求从所述接口设备中读取所述第一数据,并将读取的所述第一数据交替写入所述第一缓冲子区域或所述第二缓冲子区域;
18.其中,所述cpu和所述dma可并行工作。
19.本发明的实施方式还提供了一种spi转usb芯片,所述芯片包括中央处理器cpu、直接存储器访问dma和缓冲器,其中,所述缓冲器被预先划分为第一缓冲子区域和第二缓冲子区域;
20.所述cpu用于在每一次接收到电子设备发送的数据写入请求后,根据所述数据写入请求从所述电子设备中获取与所述数据写入请求对应的第二数据,并将获取的所述第二数据交替写入所述第一缓冲子区域或所述第二缓冲子区域;还用于向所述dma发送所述数据写入请求,触发所述dma从缓冲所述第二数据的子区域读取所述第二数据;
21.所述dma用于在每一次被触发后,从缓冲所述第二数据的子区域读取所述第二数据并发送给所述接口设备;
22.其中,所述cpu和所述dma可并行工作。
23.本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述的基于spi转usb芯片的数据读取方法或上述的基于spi转usb芯片的数据写入方法。
24.本发明实施方式相对于现有技术而言,通过将spi转usb芯片的缓冲器预先划分为两个缓冲子区域,对spi转usb芯片的数据读取与写入流程进行了改进,使得芯片的中央处理器cpu和直接存储器访问dma可以并行工作,从而提高了spi转usb芯片的数据传输效率。由于本发明实施方式从软件上进行优化,不需要提高spi总线时钟频率,也不需要增加spi转usb芯片的片内缓冲器大小,所以不会增加生产成本。
附图说明
25.一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
26.图1是根据本发明的实施例提供的基于spi转usb芯片的数据读取方法的流程示意
图;
27.图2是根据本发明的实施例提供的基于spi转usb芯片的数据读取方法的一种具体流程示意图;
28.图3是根据本发明的实施例提供的基于spi转usb芯片的数据写入方法的流程示意图;
29.图4是根据本发明的实施例提供的基于spi转usb芯片的数据写入方法的一种具体流程示意图;
30.图5是本发明的实施方式提供的用于实现数据读取方法的spi转usb芯片的结构示意图;
31.图6是本发明的实施方式提供的用于实现数据写入方法的spi转usb芯片的结构示意图。
具体实施方式
32.为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本技术而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本技术所要求保护的技术方案。以下各个实施例的划分是为了描述方便,不应对本发明的具体实现方式构成任何限定,各个实施例在不矛盾的前提下可以相互结合相互引用。
33.本发明的实施方式涉及一种基于spi转usb芯片的数据读取方法,可应用于spi转usb芯片,所述芯片包括中央处理器cpu、直接存储器访问dma和缓冲器,所述缓冲器被预先划分为第一缓冲子区域和第二缓冲子区域。本实施方式的核心在于所述cpu在每一次接收到电子设备发送的数据读取请求后,向所述dma发送所述数据读取请求,触发所述dma从接口设备中读取与所述数据读取请求对应的第一数据;所述dma在每一次被触发后,根据所述数据读取请求从所述接口设备中读取所述第一数据,并将读取的所述第一数据交替写入所述第一缓冲子区域或所述第二缓冲子区域;所述cpu在所述dma将所述第一数据写入所述第一缓冲子区域或所述第二缓冲子区域后,从缓冲所述第一数据的子区域读取所述第一数据并发送给所述电子设备;其中,所述cpu的操作与所述dma的操作并行执行。下面对本实施方式的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。流程如图1所示,具体包括:
34.s101、所述cpu在每一次接收到电子设备发送的数据读取请求后,向所述dma发送所述数据读取请求,触发所述dma从接口设备中读取与所述数据读取请求对应的第一数据。
35.spi转usb芯片连接主机等电子设备和usb等接口设备。其中,spi转usb芯片的中央处理器cpu负责与主机等电子设备通信,接收和反馈电子设备的请求或命令,并且负责进行数据传输,即将缓冲器中的数据发送给电子设备,或者接收电子设备发送的数据并将其写入缓冲器。直接存储器访问dma负责将缓冲器中的数据发送给usb等接口设备或从接口设备中读取数据。缓冲器负责进行数据的缓冲,在本发明的实施方式中,被预先划分为第一缓冲子区域和第二缓冲子区域两部分。
36.在一个例子中,可以按照缓冲器空间大小平均划分为上半部分和下半部分,分别
作为第一缓冲子区域和第二缓冲子区域,本领域技术人员可以理解,也可以根据实际需要按照其他方式进行划分,在此不再赘述。
37.其中,电子设备需要读取数据时,发送数据读取请求,spi转usb芯片中的cpu接收数据读取请求并发送至dma,dma在接收到数据读取请求时被触发,从接口设备中读取对应的数据,即第一数据。
38.在一个例子中,数据读取请求还用于指定数据缓冲的子区域。例如,数据读取请求可以包含:请求将第一数据写入第一缓冲子区域。
39.s102、所述dma在每一次被触发后,根据所述数据读取请求从所述接口设备中读取所述第一数据,并将读取的所述第一数据交替写入所述第一缓冲子区域或所述第二缓冲子区域。
40.具体地,dma首先按照所接收的数据读取请求的内容,从接口设备中读取第一数据,再将读取到的数据写入第一缓冲子区域或第二缓冲子区域。
41.在一个例子中,若数据读取请求的内容中指定了数据缓冲的子区域,dma将读取到的第一数据写入所指定的子区域。
42.在一个例子中,dma可默认首先将读取到的第一数据写入第一缓冲子区域。
43.其中,第一数据通常具备较大的数据量,需要划分为多份数据进行读取。在数据读取过程中,dma将多份数据交替写入第一缓冲子区域或第二缓冲子区域。
44.在一个例子中,对于每份数据,数据读取请求交替指定数据缓冲的子区域,dma根据数据读取请求交替写入第一缓冲子区域或第二缓冲子区域。例如,数据读取请求首先请求将第一份数据写入第一缓冲子区域,在dma读取第一份数据并写入第一缓冲子区域后,请求将第二份数据写入第二缓冲子区域,在dma读取第二份数据并写入第二缓冲子区域后,请求将第三份数据写入第一缓冲子区域,按照此种方法交替指定数据缓冲的子区域并使dma执行数据读取请求,直至第一数据全部被写入完成。
45.在一个例子中,例如,dma首先读取第一份数据并写入第一缓冲子区域,在读取第二份数据后,将第二份数据写入第二缓冲子区域,对于第三份数据,在读取完成后再次写入第一缓冲子区域,按照此种方法将每份数据交替写入两个缓冲子区域,直至第一数据全部被写入完成。
46.其中,dma将第一数据写入第一缓冲子区域或第二缓冲子区域后,向cpu发送数据缓冲完成通知,用以指示数据已缓冲完成。可选地,缓冲完成通知可包含数据缓冲于的子区域的信息。
47.s103、所述cpu在所述dma将所述第一数据写入所述第一缓冲子区域或所述第二缓冲子区域后,从缓冲所述第一数据的子区域读取所述第一数据并发送给所述电子设备。
48.具体地,dma将第一数据在某一个缓冲子区域中写入完成后,cpu即从写入第一数据的缓冲子区域中读取第一数据,并将第一数据发送给电子设备,完成数据读取过程。
49.在一个例子中,对于每份数据,数据读取请求交替指定读取数据的子区域,cpu根据数据读取请求交替地从第一缓冲子区域或第二缓冲子区域中读取数据。由于数据读取请求的内容中指定了数据缓冲的子区域,相应地,可指定从数据缓冲的子区域读取数据。例如,数据读取请求在dma的操作中请求将第一份数据写入第一缓冲子区域,则在dma写入数据完成后,请求从第一缓冲子区域读取第一份数据,在dma读取第二份数据并写入第二缓冲
子区域后,请求从第二缓冲子区域读取第二份数据,在dma读取第三份数据并写入第一缓冲子区域后,请求再次从第一缓冲子区域读取数据,获得第三份数据,按照此种方法交替指定读取数据的子区域并使cpu按照数据读取请求进行数据传输,直至第一数据全部被读取完成。
50.在一个例子中,当第一数据需要按照多份数据进行读取时,由于dma将每份数据交替写入两个缓冲子区域,cpu相应地从两个缓冲子区域中交替读取每份数据,并发送给电子设备。例如,dma默认将第一份数据写入第一缓冲子区域,相应地,cpu首先从第一缓冲子区域中读取第一份数据,随后在读取第二份数据时,cpu从第二缓冲子区域读取,对于第三份数据,cpu再次从第一缓冲子区域中读取,按照此种方法从两个缓冲子区域交替读取每份数据,直至缓冲器中无数据,第一数据全部被传输完成。
51.其中,cpu在接收到dma发送的数据缓冲完成通知后,先向电子设备发送数据缓冲完成通知,以供电子设备确认第一数据在缓冲子区域中写入完成,随后cpu根据数据读取请求进行数据的读取与传输操作。可选地,缓冲完成通知可包含数据缓冲的子区域的信息,cpu根据信息从对应的子区域中读取数据并发送至电子设备。
52.在步骤s101至s103中,cpu的操作与dma的操作并行执行。具体地说,例如,dma先将第一数据中的第一份数据写入第一缓冲子区域,在cpu从第一缓冲子区域中读取第一份数据的同时,dma从接口设备中读取第二份数据并写入第二缓冲子区域,当cpu将第一份数据读取完成并发送至电子设备后,第二份数据在第二缓冲子区域中被写入完成,则cpu可以直接读取第二份数据,不需要再进行等待,以此类推,按照此种流程实现cpu和dma在数据读取过程中并行工作。
53.在本发明的这一实施方式中,通过预先将缓冲器划分为第一缓冲子区域和第二缓冲子区域,使得cpu和dma可以基于不同的缓冲子区域同时进行数据传输,即cpu的操作与dma的操作并行执行,从而提高了电子设备基于spi转usb芯片的数据读取效率。
54.在电子设备读取接口设备数据的过程中应用本发明的基于spi转usb芯片的数据读取方法,本发明的实施方式的一种可选的具体流程如图2所示,包括:
55.s201、spi转usb芯片的cpu接收到电子设备的数据读取请求,请求spi转usb芯片将数据一读取到芯片的第一缓冲子区域中。
56.在一个例子中,与数据读取请求对应的第一数据通常具备较大的数据量,需要划分为多份数据进行读取,数据一为第一份第一数据。
57.s202、spi转usb芯片cpu向dma请求将usb设备的数据一读取到第一缓冲子区域。
58.s203、spi转usb芯片的dma从usb设备中读取数据一。
59.s204、spi转usb芯片的dma将数据一写入第一缓冲子区域。
60.s205、spi转usb芯片的dma通知cpu,数据一缓冲完成。
61.s206、spi转usb芯片的cpu通知电子设备,数据一缓冲完成。
62.此时,如果有更多份数据,从步骤s207开始执行,否则从步骤s209开始执行。
63.s207、spi转usb芯片的cpu接收到电子设备的数据读取请求,请求spi转usb芯片将数据二读取到芯片的第二缓冲子区域中。
64.具体地,数据二为第二份第一数据。
65.s208、spi转usb芯片cpu向dma请求将usb设备的数据二读取到第二缓冲子区域。
66.s209、spi转usb芯片的cpu接收电子设备读取第一缓冲子区域中的数据一的请求。
67.s210、spi转usb芯片的cpu读取第一缓冲子区域中的数据一。
68.s211、spi转usb芯片的cpu将数据一发送给电子设备。
69.此时,如果有更多数据,则继续从s212开始执行,否则流程结束,第一数据读取完成。
70.s212、spi转usb芯片的dma从usb设备中读取数据二。
71.s213、spi转usb芯片的dma将数据二写入第二缓冲子区域。
72.上述步骤中,步骤s209至步骤s211和步骤s212至步骤s213并行执行。
73.s214、spi转usb芯片的dma通知cpu,数据二缓冲完成。
74.s215、spi转usb芯片的cpu通知电子设备,数据二缓冲完成。
75.此时,如果有更多份数据,则首先执行步骤s201至步骤s202,随后对于步骤s203至步骤s204和步骤s216至步骤s218并行执行,否则继续执行步骤s216至步骤s218,并结束流程,第一数据读取完成。
76.s216、spi转usb芯片的cpu接收电子设备读取第二缓冲子区域中的数据二的请求。
77.s217、spi转usb芯片的cpu读取第二缓冲子区域中的数据。
78.s218、spi转usb芯片的cpu将数据二发送给电子设备。
79.在上述流程中,步骤s209至步骤s211和步骤s212至步骤s213并行执行,即spi转usb芯片在将第一缓冲子区域中的数据发送给电子设备的同时,将usb设备中的数据读取并写入到第二缓冲子区域,步骤s203至步骤s204和步骤s216至步骤s218并行执行,即spi转usb芯片在将第二缓冲子区域中的数据发送给电子设备的同时,将usb设备中的数据读取并写入第一缓冲子区域。由于spi转usb芯片并行进行读取usb设备中数据的操作和将数据发送给电子设备的操作,芯片的数据读取速率得到显著提升。
80.本发明的另一实施方式涉及一种基于spi转usb芯片的数据写入方法。本实施方式的核心在于所述cpu在每一次接收到电子设备发送的数据写入请求后,根据所述数据写入请求从所述电子设备中获取与所述数据写入请求对应的第二数据,并将获取的所述第二数据交替写入所述第一缓冲子区域或所述第二缓冲子区域;所述cpu向所述dma发送所述数据写入请求,触发所述dma从缓冲所述第二数据的子区域读取所述第二数据;所述dma在每一次被触发后,从缓冲所述第二数据的子区域读取所述第二数据并发送给所述接口设备;其中,所述cpu的操作与所述dma的操作并行执行。下面对本实施方式的实现细节进行具体的说明,以下内容仅为方便理解提供的实现细节,并非实施本方案的必须。具体流程如图3所示,包括:
81.s301、所述cpu在每一次接收到电子设备发送的数据写入请求后,根据所述数据写入请求从所述电子设备中获取与所述数据写入请求对应的第二数据,并将获取的所述第二数据交替写入所述第一缓冲子区域或所述第二缓冲子区域。
82.其中,电子设备需要写入数据时,发送数据写入请求,spi转usb芯片中的cpu在接收到数据写入请求后被触发,从电子设备中获取与数据写入请求对应的第二数据,并写入第一缓冲子区域或第二缓冲子区域。
83.在一个例子中,数据写入请求还用于指定数据缓冲的子区域。例如,数据写入请求可以包含:请求将第二数据写入第一缓冲子区域。若数据写入请求的内容中指定了数据缓
冲的子区域,cpu将获得的第二数据写入所指定的子区域。
84.在一个例子中,cpu可默认首先将获得的第二数据写入第一缓冲子区域。
85.其中,第二数据通常需要划分为多份数据进行写入。在数据写入过程中,cpu将多份数据交替写入第一缓冲子区域或第二缓冲子区域。
86.在一个例子中,对于每份数据,数据写入请求交替指定数据缓冲的子区域,cpu根据数据写入请求将数据交替写入第一缓冲子区域或第二缓冲子区域。例如,数据写入请求首先请求将第一份数据写入第一缓冲子区域,在cpu获取第一份数据并写入第一缓冲子区域后,请求将第二份数据写入第二缓冲子区域,在cpu获取第二份数据并写入第二缓冲子区域后,请求将第三份数据写入第一缓冲子区域,按照此种方法交替指定数据缓冲的子区域并使cpu执行数据写入请求,直至第一数据全部缓冲完成。
87.在一个例子中,例如,cpu首先获取第一份数据并写入第一缓冲子区域,在获取第二份数据后,将第二份数据写入第二缓冲子区域,对于第三份数据,获取完成后再次写入第一缓冲子区域,按照此种方法将每份数据交替写入两个缓冲子区域,直至第二数据全部缓冲完成。
88.s302、所述cpu向所述dma发送所述数据写入请求,触发所述dma从缓冲所述第二数据的子区域读取所述第二数据。
89.具体地,cpu将第二数据在第一缓冲子区域或第二缓冲子区域中写入完成后,向dma发送数据写入请求,dma收到数据写入请求,即被触发进行数据读取操作,从缓冲第二数据的子区域读取第二数据。
90.在一个例子中,数据写入请求包括数据缓冲的子区域的信息。
91.其中,dma将第二数据写入接口设备后,向cpu发送数据传输完成通知,用以指示数据已向接口设备传输完成。cpu在接收到dma发送的数据传输完成通知后,先向电子设备发送数据传输完成通知,以供电子设备确认第二数据在接口设备中写入完成。
92.s303、所述dma在每一次被触发后,从缓冲所述第二数据的子区域读取所述第二数据并发送给所述接口设备。
93.具体地,dma在每次收到数据写入请求时,即被触发从缓冲第二数据的子区域读取第二数据,并将第二数据发送给接口设备。
94.在一个例子中,对于每份数据,数据写入请求交替指定读取数据的子区域,dma根据数据写入请求交替地从第一缓冲子区域或第二缓冲子区域中读取数据并发送给接口设备。与前述数据写入请求的内容中指定的数据缓冲的子区域相对应,可指定从数据缓冲的子区域读取数据。例如,数据写入请求在cpu操作过程中请求将第一份数据写入第一缓冲子区域,则在cpu写入数据完成后,请求dma从第一缓冲子区域读取第一份数据并写入接口设备,在cpu获取第二份数据并写入第二缓冲子区域后,请求从第二缓冲子区域读取第二份数据并写入接口设备,在cpu获取第三份数据并再次写入第一缓冲子区域后,请求再次从第一缓冲子区域读取数据,获得第三份数据,并写入接口设备,按照此种方法交替指定读取数据的子区域并使dma按照数据写入请求进行数据传输,直至缓冲器中无数据,第二数据写入完成。
95.在一个例子中,当第一数据需要按照多份数据进行写入时,由于cpu将每份数据交替写入两个缓冲子区域,dma相应地从两个缓冲子区域中交替读取每份数据,并发送给接口
设备。例如,cpu默认将第一份数据写入第一缓冲子区域,相应地,dma首先从第一缓冲子区域中读取第一份数据,随后在读取第二份数据时,dma从第二缓冲子区域读取,对于第三份数据,dma再次从第一缓冲子区域中读取,按照此种方法从两个缓冲子区域交替读取每份数据,直至缓冲器中无数据,第二数据写入完成。
96.在步骤s301至s303中,cpu的操作与dma的操作并行执行。具体地说,例如,cpu先将第二数据中的第一份数据写入第一缓冲子区域,在dma从第一缓冲子区域中读取第一份数据并发送给接口设备的同时,cpu从电子设备中获取第二份数据并写入第二缓冲子区域,当dma将第一份数据读取完成并发送至接口设备后,第二份数据在第二缓冲子区域中被写入完成,则dma可以直接读取第二份数据并写入至接口设备,不需要再进行等待,以此类推,按照此种流程实现cpu和dma在数据写入过程中并行工作。
97.在本发明的这一实施方式中,通过预先将缓冲器划分为第一缓冲子区域和第二缓冲子区域,使得cpu和dma可以基于不同的缓冲子区域同时进行数据传输,即cpu的操作与dma的操作并行执行,从而提高了电子设备基于spi转usb芯片的数据写入效率。
98.在电子设备向接口设备写入数据的过程中应用本发明的基于spi转usb芯片的数据写入方法,本发明的实施方式的一种可选的具体流程如图4所示,包括:
99.s401、spi转usb芯片接收电子设备的数据写入请求,请求spi转usb芯片将数据一写入到第一缓冲子区域中。
100.具体地,与数据写入请求对应的第二数据通常具备较大的数据量,需要划分为多份数据进行读取,数据一为第一份第二数据。
101.s402、spi转usb芯片cpu接收电子设备发送的数据一。
102.s403、spi转usb芯片cpu将数据一写入第一缓冲子区域。
103.s404、spi转usb芯片接收电子设备的数据写入请求,请求将数据一写入usb设备。
104.s405、spi转usb芯片cpu请求dma将数据一写入usb设备。
105.此时,如果有更多份数据,从步骤s406开始执行,否则从步骤s407开始执行。
106.s406、spi转usb芯片cpu接收电子设备的将数据二写入到第二缓冲子区域的请求。
107.s407、spi转usb芯片的dma从第一缓冲子区域读取数据一。
108.s408、spi转usb芯片的dma将数据一写入usb设备。
109.s409、spi转usb芯片的dma通知cpu数据一写入完成。
110.s410、spi转usb芯片的cpu通知电子设备数据一写入完成。
111.此时,如果有更多数据,则继续从s411开始执行,否则流程结束,第二数据写入完成。
112.s411、spi转usb芯片的cpu接收电子设备发送的数据二。
113.其中,数据二为第二份第二数据。
114.s412、spi转usb芯片的cpu将数据二写入第二缓冲子区域。
115.上述步骤中,步骤s407至步骤s408和步骤s411至步骤s412并行执行。
116.s413、spi转usb芯片的cpu接收电子设备的将数据二写入usb设备的请求。
117.s414、spi转usb芯片的cpu请求dma将数据二写入usb设备。
118.此时,如果有更多份数据,则首先执行步骤s401至步骤s403,随后对于步骤s401至步骤s403和步骤s415至步骤s416并行执行,否则继续执行步骤s415至步骤s418,并结束流
程,第二数据写入完成。
119.s415、spi转usb芯片的dma读取第二缓冲子区域的数据二。
120.s416、spi转usb芯片的dma将数据二写入usb设备。
121.s417、spi转usb芯片的dma通知cpu数据二写入完成。
122.s418、spi转usb芯片的cpu通知电子设备数据二写入完成。
123.在上述流程中,步骤s407至步骤s408和步骤s411至步骤s412并行执行,即spi转usb芯片在将第一缓冲子区域中的数据写入usb设备的同时,获取电子设备中的数据并写入到第二缓冲子区域,步骤s401至步骤s403和步骤s415至步骤s416并行执行,即spi转usb芯片在将第二缓冲子区域中的写入usb设备的同时,还获取电子设备中的数据读取并写入第一缓冲子区域。由于spi转usb芯片并行进行获取电子设备中数据的操作和将数据写入usb设备的操作,芯片的数据写入速率得到显著提升。
124.上面实施方式中各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
125.本发明是实施方式还提供一种spi转usb芯片,所述芯片包括501中央处理器cpu、502直接存储器访问dma和503缓冲器,其中,缓冲器被预先划分为504第一缓冲子区域和505第二缓冲子区域,如图5所示。
126.501cpu,用于在每一次接收到电子设备发送的数据读取请求后,向所述502dma发送所述数据读取请求,触发所述502dma从接口设备中读取与所述数据读取请求对应的第一数据;还用于在所述dma将所述第一数据写入所述504第一缓冲子区域或所述505第二缓冲子区域后,从缓冲所述第一数据的子区域读取所述第一数据并发送给所述电子设备。
127.502dma,用于在每一次被触发后,根据所述数据读取请求从所述接口设备中读取所述第一数据,并将读取的所述第一数据交替写入所述504第一缓冲子区域或所述505第二缓冲子区域。
128.其中,所述501cpu和所述502dma可并行工作。
129.本发明的实施方式还提供了一种spi转usb芯片,所述芯片包括601中央处理器cpu、602直接存储器访问dma和603缓冲器,其中,所述缓冲器被预先划分为604第一缓冲子区域和605第二缓冲子区域,如图6所示。
130.601cpu,用于在每一次接收到电子设备发送的数据写入请求后,根据所述数据写入请求从所述电子设备中获取与所述数据写入请求对应的第二数据,并将获取的所述第二数据交替写入所述604第一缓冲子区域或所述605第二缓冲子区域;还用于向所述602dma发送所述数据写入请求,触发所述602dma从缓冲所述第二数据的子区域读取所述第二数据。
131.602dma,用于在每一次被触发后,从缓冲所述第二数据的子区域读取所述第二数据并发送给所述接口设备。
132.其中,所述601cpu和所述602dma可并行工作。
133.本发明另一实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
134.即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以
通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
135.本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
技术特征:1.一种基于spi转usb芯片的数据读取方法,其特征在于,应用于串行外设接口spi转通用串行总线usb芯片,所述芯片包括中央处理器cpu、直接存储器访问dma和缓冲器,所述缓冲器被预先划分为第一缓冲子区域和第二缓冲子区域,所述方法包括:所述cpu在每一次接收到电子设备发送的数据读取请求后,向所述dma发送所述数据读取请求,触发所述dma从接口设备中读取与所述数据读取请求对应的第一数据;所述dma在每一次被触发后,根据所述数据读取请求从所述接口设备中读取所述第一数据,并将读取的所述第一数据交替写入所述第一缓冲子区域或所述第二缓冲子区域;所述cpu在所述dma将所述第一数据写入所述第一缓冲子区域或所述第二缓冲子区域后,从缓冲所述第一数据的子区域读取所述第一数据并发送给所述电子设备;其中,所述cpu的操作与所述dma的操作并行执行。2.根据权利要求1所述的基于spi转usb芯片的数据读取方法,其特征在于,所述数据读取请求还用于指定所述第一数据写入的子区域;所述dma将所述第一数据写入所述第一缓冲子区域或所述第二缓冲子区域,包括:所述dma根据所述数据读取请求指定的子区域,将所述第一数据写入所述第一缓冲子区域或所述第二缓冲子区域;所述从缓冲所述第一数据的子区域读取所述第一数据并发送给所述电子设备,包括:根据所述数据读取请求指定的子区域,从缓冲所述第一数据的子区域获取所述第一数据并发送给所述电子设备。3.根据权利要求1所述的基于spi转usb芯片的数据读取方法,其特征在于,在所述将读取的所述第一数据交替写入所述第一缓冲子区域或所述第二缓冲子区域后,还包括:所述dma向所述cpu发送用于指示所述第一数据写入完成的数据缓冲完成通知;所述在所述dma将所述第一数据写入所述第一缓冲子区域或所述第二缓冲子区域后,从缓冲所述第一数据的子区域读取所述第一数据并发送给所述电子设备,包括:所述cpu在接收到所述数据缓冲完成通知后,向所述电子设备发送所述数据缓冲完成通知,并从缓冲所述第一数据的子区域读取所述第一数据并发送给所述电子设备。4.一种基于spi转usb芯片的数据写入方法,其特征在于,应用于串行外设接口spi转通用串行总线usb芯片,所述芯片包括中央处理器cpu、直接存储器访问dma和缓冲器,所述缓冲器被预先划分为第一缓冲子区域和第二缓冲子区域,所述方法包括:所述cpu在每一次接收到电子设备发送的数据写入请求后,根据所述数据写入请求从所述电子设备中获取与所述数据写入请求对应的第二数据,并将获取的所述第二数据交替写入所述第一缓冲子区域或所述第二缓冲子区域;所述cpu向所述dma发送所述数据写入请求,触发所述dma从缓冲所述第二数据的子区域读取所述第二数据;所述dma在每一次被触发后,从缓冲所述第二数据的子区域读取所述第二数据并发送给接口设备;其中,所述cpu的操作与所述dma的操作并行执行。5.根据权利要求4所述的基于spi转usb芯片的数据写入方法,其特征在于,所述数据写入请求还用于指定所述第二数据写入的子区域;所述cpu将所述第二数据写入所述第一缓冲子区域或所述第二缓冲子区域,包括:
所述cpu根据所述数据写入请求指定的子区域,将所述第二数据写入所述第一缓冲子区域或所述第二缓冲子区域;所述从缓冲所述第二数据的子区域读取所述第二数据并发送给接口设备,包括:根据所述数据写入请求指定的子区域,从缓冲所述第二数据的子区域获取所述第二数据并发送给所述接口设备。6.根据权利要求4所述的基于spi转usb芯片的数据写入方法,其特征在于,所述dma从缓冲所述第二数据的子区域读取所述第二数据并发送给接口设备后,还包括:所述dma向所述cpu发送用于指示所述第二数据写入完成的数据传输完成通知;所述cpu在接收到所述数据传输完成通知后,向所述电子设备发送所述数据传输完成通知。7.一种spi转usb芯片,其特征在于,所述芯片包括中央处理器cpu、直接存储器访问dma和缓冲器,其中,所述缓冲器被预先划分为第一缓冲子区域和第二缓冲子区域;所述cpu用于在每一次接收到电子设备发送的数据读取请求后,向所述dma发送所述数据读取请求,触发所述dma从接口设备中读取与所述数据读取请求对应的第一数据;还用于在所述dma将所述第一数据写入所述第一缓冲子区域或所述第二缓冲子区域后,从缓冲所述第一数据的子区域读取所述第一数据并发送给所述电子设备;所述dma用于在每一次被触发后,根据所述数据读取请求从所述接口设备中读取所述第一数据,并将读取的所述第一数据交替写入所述第一缓冲子区域或所述第二缓冲子区域;其中,所述cpu和所述dma可并行工作。8.一种spi转usb芯片,其特征在于,所述芯片包括中央处理器cpu、直接存储器访问dma和缓冲器,其中,所述缓冲器被预先划分为第一缓冲子区域和第二缓冲子区域;所述cpu用于在每一次接收到电子设备发送的数据写入请求后,根据所述数据写入请求从所述电子设备中获取与所述数据写入请求对应的第二数据,并将获取的所述第二数据交替写入所述第一缓冲子区域或所述第二缓冲子区域;还用于向所述dma发送所述数据写入请求,触发所述dma从缓冲所述第二数据的子区域读取所述第二数据;所述dma用于在每一次被触发后,从缓冲所述第二数据的子区域读取所述第二数据并发送给接口设备;其中,所述cpu和所述dma可并行工作。9.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至3中任一项所述的基于spi转usb芯片的数据读取方法或权利要求4至6中任一项所述的基于spi转usb芯片的数据写入方法。
技术总结本发明实施例涉及数据传输领域,公开了基于SPI转USB芯片的数据读取、写入方法及SPI转USB芯片。其中芯片的缓冲器被预先划分为第一缓冲子区域和第二缓冲子区域,CPU在每次接收到电子设备的数据读取请求后,向DMA发送请求触发DMA从接口设备中读取第一数据并交替写入两个子区域,CPU从对应的子区域读取第一数据并发送给电子设备。CPU在每一次接收到电子设备的数据写入请求后,从电子设备获取对应的第二数据并交替写入两个子区域,CPU向DMA发送请求触发DMA从对应的子区域读取第二数据并发送给接口设备。上述方法中CPU的操作与DMA的操作并行执行。由于CPU与DMA并行工作,可以提高芯片的数据传输速率。片的数据传输速率。片的数据传输速率。
技术研发人员:邵将
受保护的技术使用者:上海移远通信技术股份有限公司
技术研发日:2022.06.24
技术公布日:2022/11/1