一种验证i2c总线接口的方法
技术领域
1.本发明涉及总线接口技术领域,尤其涉及一种验证i2c总线接口的方法。
背景技术:2.i2c总线是由philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息,主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件,在硬件上,i2c总线只需要一根数据线和一根时钟线两根线,总线接口已经集成在芯片内部,不需要特殊的接口电路,而且片上接口电路的滤波器可以滤去总线数据上的毛刺。因此i2c总线简化了硬件电路pcb布线,降低了系统成本,提高了系统可靠性。因为i2c芯片除了这两根线和少量中断线,与系统再没有连接的线,用户常用ic可以很容易形成标准化和模块化,便于重复利用,利于标准化和模块化,缩短开发时间;
3.经检索,中国专利号cn106371954a公开了基于10位从机地址的i2c总线验证的方法及系统,该发明虽然结构简单验证方法简练,兼容性好适用于不同内核总线,符合i2c协议能够准确验证i2c总线读写的有效性及边界性等功能点,但是无法高效准确的依据电平信号来对i2c总线接口进行验证,不方便工作人员使用;此外,现有的验证i2c总线接口的方法存储以及检索效率低下,降低工作人员工作效率,影响使用体验;为此,我们提出一种验证i2c总线接口的方法。
技术实现要素:4.本发明的目的是为了解决现有技术中存在的缺陷,而提出的一种验证i2c总线接口的方法。
5.为了实现上述目的,本发明采用了如下技术方案:
6.一种验证i2c总线接口的方法,该总线接口验证具体步骤如下:
7.(1)主机初始化接口信息并优化测试模型;
8.(2)待测接口功能仿真并进行电平验证;
9.(3)进行程序烧录并进行操作验证;
10.(4)收集验证结果并进行存储反馈。
11.作为本发明的进一步方案,步骤(1)中所述接口信息初始化具体步骤如下:
12.步骤一:主机通过总线编号接收i2c总线接口信息,并执行初始化程序,同时通过gpio_inittypedef调用初始化函数;
13.步骤二:之后主机通过rcc_apb2periphclockcmd函数使能apb2总线对gpioa、gpiob、gpioc端口的时钟配置以及apb1总线i2c总线的时钟和频率配置;
14.步骤三:端口以及总线配置完成后,通过gpio_initstructure结构体选择scl和sda端口,设置模式为复用开漏输出,并将i/o转换速度设置为规定值,接着通过gpio_init函数将相关初始化配置写入i2cport端口。
15.作为本发明的进一步方案,步骤一中所述初始化程序具体如下:
16.void i2c_gpio_init(void)
17.{
18.gpio_inittypedef gpio_initstructure;
19.rcc_apb2periphclockcmd(rcc_apb2periph_gpioa|rcc_apb2periph_gpiob|rcc_apb2periph_gpioc);
20.rcc_apb1periphclockcmd(rcc_apb1periph_i2c1,enable);
21.gpio_initstructure.gpio_pin=i2c_scl|i2c_sda;
22.gpio_initstructure.gpio_mode=gpio_mode_af_od;
23.gpio_initstructure.gpio_speed=gpio_speed_50mhz;
24.gpio_init(i2cport,&gpio_initstructure);
25.}
26.其中,gpio_inittypedef为一种复合数据类型,rcc用于设置mcu不同功能模块的时钟源和工作频率。
27.作为本发明的进一步方案,步骤(1)中所述测试模型优化具体步骤如下:
28.第一步:主机从云端服务器中提取各组i2c总线接口验证数据,再提取各组验证数据的特征信息,并对各组特征信息进行特征降维,之后将各组特征信息分为验证集、测试集以及训练集;
29.第二步:主机重复多次使用验证集中的各组数据对测试模型精度进行验证,并统计测试集中各数据均方根误差,同时对每组均方根误差都进行一次预测,并将预测结果最好的数据作为最优参数输出,并依据最优参数对训练集进行标准化处理,之后将训练样本输送到测试模型中,并采用长期迭代法对该测试模型进行实时优化;
30.第三步:测试模型运行时,主机通过焦点损失函数对该测试模型运行损失值进行计算,同时对该测试模型进行准确率、检出率以及误报率分析,并将分析结果反馈给工作人员进行分析调整,其焦点损失函数具体计算公式如下:
31.fl(pi)=-α(1-pi)
γ
log(pi)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
32.式中,pi代表预测值,α代表权重因子,γ代表聚焦参数。
33.作为本发明的进一步方案,步骤(2)中所述电平验证具体步骤如下:
34.s1.1:测试模型将测试程序按照i2c通信协议规定通过sda传递至外部器件,同时i2c总线接口在scl高电平期间发送单比特数据,低电平期间对总线上的进行信号改变;
35.s1.2:测试模型实时读取各高电平期间sda上的数据,并定期发送应答信号,当sda产生从高电平到低电平的跳变信号时,测试模型发送器件寻址字节,并实时接收反馈的地址数据;
36.s1.3:当测试模型接收到器件反馈的地址数据后,通过该地址数据确认待测i2c总线接口的从机地址、寄存器地址以及数据信息,并发送测试信息,之后测试模型接收待测i2c总线接口发送的反馈信息,并对比测试信息与反馈信息,若一致,则待测i2c总线接口验证成功;若不一致,则待测i2c总线接口验证失败;
37.s1.4:测试模型实时接收待测i2c总线接口电平信号,并显示待测接口的仿真波形,之后测试模型依据系统默认或者工作人员设定的评判标准对电平异常的待测接口进行
标记,并将其反馈给工作人员。
38.作为本发明的进一步方案,步骤(3)中所述操作验证具体步骤如下:
39.s2.1:工作人员检插测试硬件各引脚是否正常,当确认各引脚正常后,通过主机将检测程序通过st_link连接器烧录至测试硬件中,测试硬件接收并运行检测程序;
40.s2.2:检测程序先使能测试硬件的写操作,并进行引脚配置,同时相关引脚对应的led灯将会被点亮,然后进行使能读操作,测试硬件接收主机发送的数据并进行存储,同时相关引脚对应的led灯将会被点亮;
41.s2.3:测试模型在jtag模式下对测试硬件中存储的数据,同时检测各存储数据是否符合主机发送数据,若符合,则待测i2c总线接口验证成功;若不一致,则待测i2c总线接口验证失败。
42.作为本发明的进一步方案,步骤(6)中所述存储反馈具体步骤如下:
43.p1:主机为各组验证结果生成一个启动链表,按照验证结果的lru顺序,通过lru链表对各组启动链表头部进行进一步链接,同时收集最少查看的验证结果,并将该验证结果的启动链表安排在lru链表的首位,并依次进行排序;
44.p2:主机在验证结果访问之前清除所有更新页表项的访问位,若在验证结果访问期间访问了某个验证结果,主机会将该验证结果添加到启动链表中;
45.p3:在验证结果访问时间结束之前,主机重新检查所有验证结果的访问位,若在其它阶段也访问某个验证结果,则将该验证结果从启动链表中删除,并移到常规lru链表中,确定访问完成后对启动链表中的各组验证结果进行数据更新;
46.p4:主机将待测i2c总线接口测试结果录入相关记录表中,并依据工作人员操作指令选取相对应的数据进行显示反馈,之后依据测试模型评估结果生成相对应的评估数据图以供工作人员查看。
47.相比于现有技术,本发明的有益效果在于:
48.1、该验证i2c总线接口的方法相较于以往单一的验证方法,本发明通过主机从云端服务器中提取各组i2c总线接口验证数据,并生成验证集、测试集以及训练集对测试模型进行训练,之后测试模型将测试程序按照i2c通信协议规定通过sda传递至外部器件,同时i2c总线接口在scl高电平期间发送单比特数据,低电平期间对总线上的进行信号改变,之后测试模型实时读取各高电平期间sda上的数据,并定期发送应答信号,当sda产生从高电平到低电平的跳变信号时,测试模型发送器件寻址字节,并实时接收反馈的地址数据,当测试模型接收到器件反馈的地址数据后,通过该地址数据确认待测i2c总线接口的从机地址、寄存器地址以及数据信息,并发送测试信息,之后测试模型接收待测i2c总线接口发送的反馈信息,并对比测试信息与反馈信息,通过优化测试模型,能够高效准确的依据电平信号来对i2c总线接口进行验证,方便工作人员使用,无需人工检测,简化验证步骤;
49.2、该验证i2c总线接口的方法通过主机为各组验证结果生成一个启动链表,按照验证结果的lru顺序,通过lru链表对各组启动链表头部进行进一步链接,同时收集最少查看的验证结果,并将该验证结果的启动链表安排在lru链表的首位,并依次进行排序,同时依据各组验证结果的访问情况对启动链表进行增加以及删减操作,当访问完成后,对启动链表中的各组验证结果进行数据更新,之后主机将待测i2c总线接口测试结果录入相关记录表中,并依据工作人员操作指令选取相对应的数据进行显示反馈,之后依据测试模型评
估结果生成相对应的评估数据图以供工作人员查看,能够更加直观方便的向工作人员显示各组数据,通过构建lru链表,有效的减少主机内存占用率,同时依据lru链表的检索规则,大幅提高工作人员数据检索效率,有效提高工作人员工作效率。
附图说明
50.附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。
51.图1为本发明提出的一种验证i2c总线接口的方法的流程框图。
具体实施方式
52.实施例1
53.参照图1,一种验证i2c总线接口的方法,该总线接口验证具体步骤如下:
54.主机初始化接口信息并优化测试模型。
55.具体的,主机通过总线编号接收i2c总线接口信息,并执行初始化程序,同时通过gpio_inittypedef调用初始化函数,之后主机通过rcc_apb2periphclockcmd函数使能apb2总线对gpioa、gpiob、gpioc端口的时钟配置以及apb1总线i2c总线的时钟和频率配置,端口以及总线配置完成后,通过gpio_initstructure结构体选择scl和sda端口,设置模式为复用开漏输出,并将i/o转换速度设置为规定值,接着通过gpio_init函数将相关初始化配置写入i2cport端口。
56.具体的,主机从云端服务器中提取各组i2c总线接口验证数据,再提取各组验证数据的特征信息,并对各组特征信息进行特征降维,之后将各组特征信息分为验证集、测试集以及训练集,之后主机重复多次使用验证集中的各组数据对测试模型精度进行验证,并统计测试集中各数据均方根误差,同时对每组均方根误差都进行一次预测,并将预测结果最好的数据作为最优参数输出,并依据最优参数对训练集进行标准化处理,之后将训练样本输送到测试模型中,并采用长期迭代法对该测试模型进行实时优化,测试模型运行时,主机通过焦点损失函数对该测试模型运行损失值进行计算,同时对该测试模型进行准确率、检出率以及误报率分析,并将分析结果反馈给工作人员进行分析调整。
57.需要进一步说明的是,初始化程序具体如下:
58.void i2c_gpio_init(void)
59.{
60.gpio_inittypedef gpio_initstructure;
61.rcc_apb2periphclockcmd(rcc_apb2periph_gpioa|rcc_apb2periph_gpiob|rcc_apb2periph_gpioc);
62.rcc_apb1periphclockcmd(rcc_apb1periph_i2c1,enable);
63.gpio_initstructure.gpio_pin=i2c_scl|i2c_sda;
64.gpio_initstructure.gpio_mode=gpio_mode_af_od;
65.gpio_initstructure.gpio_speed=gpio_speed_50mhz;
66.gpio_init(i2cport,&gpio_initstructure);
67.}
68.其中,gpio_inittypedef为一种复合数据类型,rcc用于设置mcu不同功能模块的时钟源和工作频率。
69.此外,需要进一步说明的是,焦点损失函数具体计算公式如下:
70.fl(pi)=-α(1-pi)
γ
log(pi)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
71.式中,pi代表预测值,α代表权重因子,γ代表聚焦参数。
72.待测接口功能仿真并进行电平验证。
73.具体的,测试模型将测试程序按照i2c通信协议规定通过sda传递至外部器件,同时i2c总线接口在scl高电平期间发送单比特数据,低电平期间对总线上的进行信号改变,之后测试模型实时读取各高电平期间sda上的数据,并定期发送应答信号,当sda产生从高电平到低电平的跳变信号时,测试模型发送器件寻址字节,并实时接收反馈的地址数据,当测试模型接收到器件反馈的地址数据后,通过该地址数据确认待测i2c总线接口的从机地址、寄存器地址以及数据信息,并发送测试信息,之后测试模型接收待测i2c总线接口发送的反馈信息,并对比测试信息与反馈信息,若一致,则待测i2c总线接口验证成功;若不一致,则待测i2c总线接口验证失败,通过优化测试模型,能够高效准确的依据电平信号来对i2c总线接口进行验证,方便工作人员使用,无需人工检测,简化验证步骤。
74.实施例2
75.参照图1,一种验证i2c总线接口的方法,该总线接口验证具体步骤如下:
76.进行程序烧录并进行操作验证。
77.具体的,工作人员检插测试硬件各引脚是否正常,当确认各引脚正常后,通过主机将检测程序通过st_link连接器烧录至测试硬件中,测试硬件接收并运行检测程序,检测程序先使能测试硬件的写操作,并进行引脚配置,同时相关引脚对应的led灯将会被点亮,然后进行使能读操作,测试硬件接收主机发送的数据并进行存储,同时相关引脚对应的led灯将会被点亮,之后测试模型在jtag模式下对测试硬件中存储的数据,同时检测各存储数据是否符合主机发送数据,若符合,则待测i2c总线接口验证成功;若不一致,则待测i2c总线接口验证失败。
78.收集验证结果并进行存储反馈。
79.具体的,主机为各组验证结果生成一个启动链表,按照验证结果的lru顺序,通过lru链表对各组启动链表头部进行进一步链接,同时收集最少查看的验证结果,并将该验证结果的启动链表安排在lru链表的首位,并依次进行排序,主机在验证结果访问之前清除所有更新页表项的访问位,若在验证结果访问期间访问了某个验证结果,主机会将该验证结果添加到启动链表中,在验证结果访问时间结束之前,主机重新检查所有验证结果的访问位,若在其它阶段也访问某个验证结果,则将该验证结果从启动链表中删除,并移到常规lru链表中,确定访问完成后对启动链表中的各组验证结果进行数据更新,之后主机将待测i2c总线接口测试结果录入相关记录表中,并依据工作人员操作指令选取相对应的数据进行显示反馈,之后依据测试模型评估结果生成相对应的评估数据图以供工作人员查看,能够更加直观方便的向工作人员显示各组数据,通过构建lru链表,有效的减少主机内存占用率,同时依据lru链表的检索规则,大幅提高工作人员数据检索效率,有效提高工作人员工作效率。
技术特征:1.一种验证i2c总线接口的方法,其特征在于,该总线接口验证具体步骤如下:(1)主机初始化接口信息并优化测试模型;(2)待测接口功能仿真并进行电平验证;(3)进行程序烧录并进行操作验证;(4)收集验证结果并进行存储反馈。2.根据权利要求1所述的一种验证i2c总线接口的方法,其特征在于,步骤(1)中所述接口信息初始化具体步骤如下:步骤一:主机通过总线编号接收i2c总线接口信息,并执行初始化程序,同时通过gpio_inittypedef调用初始化函数;步骤二:之后主机通过rcc_apb2periphclockcmd函数使能apb2总线对gpioa、gpiob、gpioc端口的时钟配置以及apb1总线i2c总线的时钟和频率配置;步骤三:端口以及总线配置完成后,通过gpio_initstructure结构体选择scl和sda端口,设置模式为复用开漏输出,并将i/o转换速度设置为规定值,接着通过gpio_init函数将相关初始化配置写入i2cport端口。3.根据权利要求1所述的一种验证i2c总线接口的方法,其特征在于,步骤一中所述初始化程序具体如下:程序具体如下:其中,gpio_inittypedef为一种复合数据类型,rcc用于设置mcu不同功能模块的时钟源和工作频率。4.根据权利要求1所述的一种验证i2c总线接口的方法,其特征在于,步骤(1)中所述测试模型优化具体步骤如下:
第一步:主机从云端服务器中提取各组i2c总线接口验证数据,再提取各组验证数据的特征信息,并对各组特征信息进行特征降维,之后将各组特征信息分为验证集、测试集以及训练集;第二步:主机重复多次使用验证集中的各组数据对测试模型精度进行验证,并统计测试集中各数据均方根误差,同时对每组均方根误差都进行一次预测,并将预测结果最好的数据作为最优参数输出,并依据最优参数对训练集进行标准化处理,之后将训练样本输送到测试模型中,并采用长期迭代法对该测试模型进行实时优化;第三步:测试模型运行时,主机通过焦点损失函数对该测试模型运行损失值进行计算,同时对该测试模型进行准确率、检出率以及误报率分析,并将分析结果反馈给工作人员进行分析调整,其焦点损失函数具体计算公式如下:fl(pi)=-α(1-pi)
γ
log(pi)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)式中,pi代表预测值,α代表权重因子,γ代表聚焦参数。5.根据权利要求4所述的一种验证i2c总线接口的方法,其特征在于,步骤(2)中所述电平验证具体步骤如下:s1.1:测试模型将测试程序按照i2c通信协议规定通过sda传递至外部器件,同时i2c总线接口在scl高电平期间发送单比特数据,低电平期间对总线上的进行信号改变;s1.2:测试模型实时读取各高电平期间sda上的数据,并定期发送应答信号,当sda产生从高电平到低电平的跳变信号时,测试模型发送器件寻址字节,并实时接收反馈的地址数据;s1.3:当测试模型接收到器件反馈的地址数据后,通过该地址数据确认待测i2c总线接口的从机地址、寄存器地址以及数据信息,并发送测试信息,之后测试模型接收待测i2c总线接口发送的反馈信息,并对比测试信息与反馈信息,若一致,则待测i2c总线接口验证成功;若不一致,则待测i2c总线接口验证失败;s1.4:测试模型实时接收待测i2c总线接口电平信号,并显示待测接口的仿真波形,之后测试模型依据系统默认或者工作人员设定的评判标准对电平异常的待测接口进行标记,并将其反馈给工作人员。6.根据权利要求1所述的一种验证i2c总线接口的方法,其特征在于,步骤(3)中所述操作验证具体步骤如下:s2.1:工作人员检插测试硬件各引脚是否正常,当确认各引脚正常后,通过主机将检测程序通过st_link连接器烧录至测试硬件中,测试硬件接收并运行检测程序;s2.2:检测程序先使能测试硬件的写操作,并进行引脚配置,同时相关引脚对应的led灯将会被点亮,然后进行使能读操作,测试硬件接收主机发送的数据并进行存储,同时相关引脚对应的led灯将会被点亮;s2.3:测试模型在jtag模式下对测试硬件中存储的数据,同时检测各存储数据是否符合主机发送数据,若符合,则待测i2c总线接口验证成功;若不一致,则待测i2c总线接口验证失败。7.根据权利要求6所述的一种验证i2c总线接口的方法,其特征在于,步骤(6)中所述存储反馈具体步骤如下:p1:主机为各组验证结果生成一个启动链表,按照验证结果的lru顺序,通过lru链表对
各组启动链表头部进行进一步链接,同时收集最少查看的验证结果,并将该验证结果的启动链表安排在lru链表的首位,并依次进行排序;p2:主机在验证结果访问之前清除所有更新页表项的访问位,若在验证结果访问期间访问了某个验证结果,主机会将该验证结果添加到启动链表中;p3:在验证结果访问时间结束之前,主机重新检查所有验证结果的访问位,若在其它阶段也访问某个验证结果,则将该验证结果从启动链表中删除,并移到常规lru链表中,确定访问完成后对启动链表中的各组验证结果进行数据更新;p4:主机将待测i2c总线接口测试结果录入相关记录表中,并依据工作人员操作指令选取相对应的数据进行显示反馈,之后依据测试模型评估结果生成相对应的评估数据图以供工作人员查看。
技术总结本发明公开了一种验证I2C总线接口的方法,属于总线接口技术领域,该总线接口验证具体步骤如下:(1)主机初始化接口信息并构建测试模型;(2)待测接口功能仿真并进行电平验证;(3)进行程序烧录并进行操作验证;(4)收集验证结果并进行存储反馈;本发明通过优化测试模型,能够高效准确的依据电平信号来对I2C总线接口进行验证,方便工作人员使用,无需人工检测,简化验证步骤,能够更加直观方便的向工作人员显示各组数据,通过构建LRU链表,有效的减少主机内存占用率,同时依据LRU链表的检索规则,大幅提高工作人员数据检索效率,有效提高工作人员工作效率。工作人员工作效率。工作人员工作效率。
技术研发人员:吴传根 周子文 俞清 严伟
受保护的技术使用者:上海工程技术大学
技术研发日:2022.07.25
技术公布日:2022/11/1