00:00
哈喽,大家好,这一期呢,我们用一个视频来展示一下最近的成果,这里呢,我把上一期视频里讲的上一期呢进行了工作优化,呃,添加了更丰富的功能,当然并没有是完全体,只是有了一些新的功能,我们先运行一下,这里呢,我们可以看到在左上角呢,其实就是在上一期视频里提到的程序下载的功能,这里呢,我进行了功能的合并啊嗯,具体的功能的展示呢,在上一期视频中有无非就是把整个的一个大界面缩建成了一个左下角这个小界面啊,这里呢重点来介绍一下新添加功能,首先呢,我们可以看到左下角是有一些信息一的展示,这里呢是可以手动的去选择一个对应的LD,选择了LTD之后呢,所有的能够展示出来的信息,包括供应商的名称啊,ID啊,设备I啊,产品ID,这些信息是都可以展示在这上面的,跟官方的。叫艾IC可直播是有类似的功能,但是不光是这样的,呃,有一个更多的功能是选型与生成,当然我本来的一个目的呢,是这个上业机也可以进行数据的交互,就是操作人员可以查看LDD对应的一个可读可写过程数据,这些这些参数,但是现在还没有做。呃,这一步呢,展示选型与生成的功能同先们点到这里可以看到呢,呃,开出了一个新的界面,这里呢可以选择不同的L03芯片,选择不同的MCU芯片,呃,首先我按照一个展示的选择LT369,单片机呢,选择华大的460JUV,呃,下面呢是一个对单片机平台的不同设置,可以根据我选择的翻芯片的不同去具体设置单片机的一些外摄资源,当然这个功能呢,目前暂时还没有做全啊,本期呢暂时也不讲,在后面呢,我们再具体展开,先讲完本期就重点下面呢是嗯,因为IODD里面呢,并不会明确的包含所选择的MP类型的过程数据的字节出来,所以呢,为了后期避免一些麻烦,这里就可以手动的去选择我们支持的MPT类型,那也就是相当于是把写LDD里面定义。
01:42
MP类型的一步呢,在这里重新展示一下啊,也是避免一些麻烦,呃,这里面选择好这些信息之后,可以看到我们左台角,那原本我想做的呢,是在右边也展示选择的MCU的信息,MCU的图片,选择的泛芯片信息,泛芯片的图片证明它还没有做这个功能,后面还是就是可以把这些功能进行完善,选好这些信息之后呢,呃,这里可以点击下方的这些按钮,当然啊,这很多的功能目前还没有做,目前只是做了一个生成接口文件这个功能,先说说原本打算这几个按钮的功能了,保存这个按钮是可以把我们选型这些信息呢保存成一个文件,那么后期我们在使用同一个方案的时候,直接可以点击导入,把之前保存的选型信息添加到这里面啊,有一个展示的功能,这样的话我们就可以看到,呃,我是根据这一款在芯片这一款MCU芯片相对应的一些引角资源进行了配置,那由于我写的这个接口文件里面呢,是包含了泛芯片和部分MCU资源的配置,所以呢,我这里面就有了这么一个部的体现啊,通过上一期的配置呢,呃,生成一个接口文件,直接就可以对接核心的一些个模块,实现在这一款MCU上应用完整。
02:42
型的lle的交互过程,就不需要用户再去额外的针对这一款MCU去做lle克相关的配置啊,也就是说从这一步你配置好了之后把。外设资源和IO link的核心功能全都做好了,嗯,这是保存导入,清空就不说了,就把上面那些东西都清空生成的接口文件。其实首先我说一下我的。
03:05
首先我说一下我的这个。整个的一个扩架,大概其实这样就是就是l link的。核心,然后呢,这是发芯片,他们两个之间呢,会有一些个数据的交互,然后更上层次呢,就是我们MCU的应用,这之中呢,就有一个接口键。用来把我这里定义的这些个核心模块进行数据交互,与MSO之间进行数据交互啊,所以呢,呃,这里这个功能其实就是来以生成这个接口文件的过程,这也是本期视频讲解的重点啊,我先把这个功能下载这个生成工程的,其实就是在配置好开芯片MCU以及MC的外设资源安全信息之后,再选择完LDD啊,点击生成部功能,就可以把相对应的泛芯片的驱动程序,I link的核心功能程序,以及对应MCU的选择的这些外设资源的这个驱动程序都打包好,生成一个工程文件出来,后续的这个工程文件呢,放到编译器里面。
04:05
编译直接就可以下载到相对应的方案板子之中,就能够运行我这个DEMO码啊,当然这其中呢,就需要这个接口文件来参与啊,就是目前还没有做完的功能,首先我们在讲这个生成结口文键,这里呢在配置好这些信息之后,直接就可以点生成结口文键,但是如果我们要是说选择的内容不对,比如说我们没有选择翻新键,点击它会弹出一个错误的对话框,提示我们没有选择泛行片,同理面如果没有选择MCU芯片也是一样的,呃,包括这里的呃,M区的类型和过事数据的选择,因为上面的这些M区的类型是有固定的过程数据的,只有T2-V这些是没有固定的程数据的,需要用户手动去输出啊,手动的去输入,这里我们选择了一个有固定MP类,有固定过程数据的IP类型,是可以看到这两个输入框是可交互的啊,就是内部已经做好了固定的一些配置,如果选择的是可以设置是过程数据的这种IP类型,但是我们又没有输入,点击生成它也会弹出有错误的广告啊,那我们这里面选择一个跟他匹配的,选择是太B告,然后点击生成,下面呢是一个进度条。
05:03
点击生成之后呢,我们会选择一个位置来保存我们生成的文件,这里呢,我就个人选择了这里之前是生成过一个啊,这无对谓点击,然后呢,如我这里也是做了一个固定的域名,因为呃,放到程序里面就可以直接去使用,不需要再去改变映库的启动命名啊点击保存这里提示是匿名冲突,是因为有之前生成过一个直接替换,是啊,进个条索找到头,弹出个对话框,生成完毕,确定这是这个文档,然后呢,我们去打不开,这里呢是生成了两个文件,一个是原文件,一个是包含了头文件啊我们可以看到这里其实就是根据选择的L生成出来的这些这些代码啊,包含了它的头啊啊说明啊,这些参数初始化啊,后面呢,这些函数都是有极相对的功能,这个呢就是整个模块的初始化函数,将该函数放到总的初始化位置,就可以把整个模块进行初始化,这里面呢,包含了泛写片的初始化呀,串口的资源输入化,一些中端的输入化和l link核心算法的输入化,以及定时器的输入化啊,在这里,然后这个函数呢。
06:00
就是定义的一个呃,参数写入的一个额外用的函数,这里边呢,在进行s Du写入活动的同时,调用这个函数可以执行一些额外的动作,当然这个动作它的时间不应该过长,否则会造成艾的通信的关联啊,后面呢,这是P奥的关程数据更新,这里面呢,由于我这个led没有用到P掉的,所以这里面就会有一个注释,呃,这里面不包含必较,如果是有P要的话,那么写实的效果跟下面这个PD是类似的,也就是把得到的P要的数据啊传给一个结构体,用户呢,可以根据这些结果体拿到其他的位置再去应用。啊,PD这里面是类似的,这是更新PD啊,就是用户在其他时序的代码中将这些变量进行复制,复制完成之后在我IO link运行的时序之中啊,等待状态机到到达PD更新这里就是会把用户传进来的参数的值传给是模块所需要的这种变量,然后后面就可以更新出去啊。这也就是事件的一个应用函数,然后呢,这里是用户变量的初始化,因为LDD里面并不能反映一个事件。LD里。
07:04
就是这里variable collection实际上就是用户定义的交互参数,我们重点看一个,这里面呢会有它的变量名,索引读写状态default value, 这里呢,Default代表就是一个默认值,用户其实是可以定义这个默认值的,也可以不在led里面去定义这个默认值,那么实际的情况是在运行过程中希望是有一个默认值来展示出去,因为如果没有一个默认值的话,那么外面再读取的时候,读到的很可能就是单片机在产品初始化得到的一个初始值啊,部分部分单片机呢可能是0,这个呢就会造成一个困扰,所以呢,这个函数呢,实际上就是需要用户在这里面手动的去定义,在这里写着有些有些地方是没有这个默认函数,请在这里添加呃代码来定义这些参数。比如说有参数,我上线可能需要让他展示也是一个50啊,这里面的用户就需要手动的去检查一下,这里面的这些初始值是不是满足要求啊,下面都是一些。需要的函数,这里面呢是系统命令system command, 呃,首先呢,这里只会根据LTD解析出来的这system command的这些值给出交互的框架,这里面呢并不会有实际的动作,所以用户是需要定义每一个这个command曼的它的动作。这里面呢,我优先推荐的是通过生成器生成出来的这个变量啊,在这里面会添加一个变量,那么这里面有手动的白一些一个。
08:33
这是举例,这里面呢,你可可以给他填写一个值,为什么是这些呢?这里意思是当我执行了某一个用户指令的时候,给这一个变量赋值,那么ile link它的时续逻辑肯定会与用户其他的一些时序逻辑是不匹配的啊,那这个时候呢?比如说比如说我这里面设置的是led的闪烁的开启,那么l link它的数据是主站通过串口的形式,像我这里的软件模块发送这些数据,这些数据处理完成之后再一个返回,那么它之间呢,是有一个通讯的间隔,这里面就是呃命生态对吧?这个时间假设我们设置是4ms,那么主从之间一一次交互,排序列的交互就是毫秒,然后呢,同时想要完成这些指令的交互呢,可能时间会更长,但是这个时候,比如说我们设置的是一个LED500MS的闪烁,那这个时序它俩之间是不匹配的,是对不上的,我不能直接就把led的闪烁它的功能函数直接放在这里面。
09:20
那这样的话,我的时间呃,Led的外百行的闪烁就不一定能够实现,所以这里呢,定义的一个这个变量,把这个量呢给它所值,然后通过这个量的值的传递到另一个持续的框架之在那在对应的框架中去诊断这个变量是否发生变化,来控制我的实际的动膜,实际上是这样啊,所以呢,这里呢,生殖器是给了一个交互的框架,这里面呢,需要用户去添加这个标坠啊,我在这个过多这里,然后这个呢是SSU的参数壶啊,通过LDD,比如打开这里是有一个。Application text, 它的索引是64,也是LDD里定义的,那么这里面呢,你看首先上面呢是对一些window name, 供应商名称,应商文本,设备名,那产品名称,产品ID,因为这些呢都是在主从交互的时候,主站来通过led is Du的交互来获取从站内包含的这些信息,以此来验证它内部包含的led数据是否与端口连接的目标设备是匹配,所以这里面呢,也包含在这里的,这些呢,用户不需要去过多的关心,因为这些呢都会在LDD里面有个体现,我们LDD里面会包含这些信息,供应商ID啊,供应商经商设备ID,这些文本都是在这里写着,那么在解析的过程中会自动的把这些值以参数的形式传递进来啊,用户是不需要去规划开会,这里你看这里是索引,64就对应了我们这一个参数,你打64它的名称。
10:34
它的直接数量,它在交互的过程里,这里呢是它其实是无号整数,8个米克可多可解,那么这里呢,就看到为在这并写的地方啊,生成出来就是满足的是无符号画一个整数啊,一些它的标记都会生成在这里,并且呢,会按照它满足的一个效果去进行数据的交互啊,包括百之65 65的是一个回扣的一下,它这里面就会包含了萨米X3DS012345,像几个读取都会有后记错的,如果是索引呢,一个非012345这些的索引才会犯一个错误啊,这所以不用包括后面都是对它进行了一些LD的解析。
11:13
然后这个产函数呢,是SSE的写,呃,逻辑上都是差不多,会根据LDD里的内容去生成不同的呃,参数的这个写入的过程,然后我们看到这里是有65 60这个点量,但是呢,这里定义的是它的读写状态是只读,那么生成器呢,会自动的识别到我这个音带测65是不能写的,那么这里面就没有生成可测书看。嗯。只有可写的这些索引,索引会生放在这里,包括我们看有一个这个里样,它它里面它是一个铝号的讲这里面呢,只有3,这这里面是四个字节,但是有三个字节是可行的,有一个字节是只读啊,生器呢会根据L里的内容去自动的去识别,看这里K0肯定是3B34=0嘛,肯定要支持这里124对应的这里的124,其中三的尺物这里面是不体现啊,只有一应一二四是自动的去根据led生成我们对应的这些文件,所以们可以看到,其实我写的这一个测试的led,它的篇幅并不是有多少,只有300多行,那么我们看一个其他的led,那可过还有7个,它的led到了2000多瓦。
12:19
这个高夫,这个小,这个小一点公主。你们就好。一个4是的,这里是图达到了3500比这个好量,然后所以呢,我这里面只有300多行的一个LDB,在生成这个文件的直播进行交互的时候,我们都有如此多的代码要有开发人员去书写,那如果遇见了像这种3000多行的l de1我们的一个过程数据或者是参数。参数能参数。对。我们可以看到有这么多参数。每一个variable都对应的是一个参数库,但是呢,这里可以看到innux虽然说不多,但是有可能它里面的萨米ne会很多,这一个report iem就对应的是一个X米X会非常的非常的多,所以在用户去编写呃,相对应的ISU的交互过程的一些代码的时候,实际上是比较耗费时间的一个过程,而我这里面选择了LD对吧?呃,我既要编辑一个又要编辑相对应的代码,那这个时候如果用到了我这个上面机只需要编一次D的过程,当然LDD是肯定要编辑的,这是l link和规范以面要页,那么在编辑软件代码的时候,使用上面机快速的就可以生成相对应的代码啊,用户呢,只需要对不同的地方进行一些检查,看看生成出来的正确率是不是对的,那不同的地方是不是有它相对应的一些个动感数啊,包括像刚才看到的这个生成出来的无人值是不是对的啊,这边的写统可案的有没有内容包括这里面,比如说在上微期写入一些。
13:42
行,这比如说我这里面对这个参数是做了一个事件的生成啊,所以呢,这里面我们可以通过在这里添加一些代码,比如说我来判断这个变量它等于0123456不同的值的时候,我需要有一个相对应的一般的事件的生成,那这个时候就可以在这里添代码去随以是判断一下这个变量,判断这个变量它等于021234,然后生成不同的事件来到P或者第三P就是这个意思,就是用户需要检查一下,这里呢是它对应的主观点这边这里边呢是包含了各种各样的信息,比如说供应商信息,设备信息,产品信息啊,LDT的一些序列类型,呃,各种自己的程度啊,我们选生周期,这些信息是包含在睡里面,然后呢,会根据LDD。
14:18
这就是因为来这里面呢,我应用了一些事件,会在这里面提示出来,那么生成器会根据LTD里面的内容自动的去生成视频列表,这里面呢,会提示一个war啊,意思是什么呢?是检查设备的信息错了,也就是说按照I link的规范,每一个事件生成都要对应设备的一个工作状态,这里面呢,呃,生除器只是死板的根据。这个事件的类型是errorra,是warning还是notification?呃,生成了一个默认的视据状态,就是notification,是OK warning呢,是check error呢是Fi,只是简单的死板的生成了一个满足这个格式交互格式的一个事件列表,用户呢,就需要去检查这个设备状态是不是满,这个事件所定义的事件是不是。
15:02
然后后面呢,就会根据信息交互这边呢,还会生成这个三卡曼的直件码,也就是说看到这里三卡曼的我这个定义的11011两个事件,这里边呢就会有它的事件码,诶然后这里交给事件的处理机,这里再去满足一个框架应用,再往下呢,就是对MCU资源的一个应用,不同的MCU的平台,这里面的对资源的应用也不一样,这里呢,其实就是我刚才看到这个收音机。这里。我们选择了不同的MCU的平台,这里选择了不同的MCU平台之后呢,这里就需要定义它的不同的引角,它的不同的外设,这业资源的规划啊,这里呢,会根据用户输入的内容去规划一些东西,只能在这里我呃过程数据,过程数据的应用,因为我使用的是TAAG282,这里只有两个字节的P音没有P掉,所以这里边呢,我的过程数据更新里面是没有使用这个,但是呢,为了满足我这个结构的完整性,这里面只提供了一个T啊,所以这里边报了WAR0IT program have only one by, 意思generated toation in.就是意思就是满足我的这个框架啊,避免发生这个问题,这里留了一个,但是没有去使用啊,然后后面呢,就是sto交互的参数啊,根据这里面的error列表去生成对应的交互的参数啊,是右音的画比,这就比8,然后record就生成了一个交体,就是根据data type和论都会生成对应的,这下面呢,这个是s command这边也是为了保持这个结构的完善性,所以生成了一个默认的变量,但是这个变量呢,不一定是用户所使用的,所以这里边也有提示,告诉用户需要在这里针对不同的command曼的添加对应的这种刚才我说的这种语警标志位啊,去拿到别的时区里面参与视觉控制,后们呢,就是满足C语言的这些个结构,一会生成出来一些这题,然后这个东西就可以拿到我们代码之中啊来应用,直接就是拆除完毕之后就可以使用,这里我打开一个是很好的。
16:54
其实就是让你这些。这里呢,就是结构跟刚才看到的结构是一样的,这里面呢就是对参数进行了拆除,对呃,算么慢的进行拆除,对一些时间的生动进行个拆除,这里的结构可能没有太好,但是人的间射兼质,不同的应用有不同的方式,这就是它的头误啊,它会去是在这里去应用,真的,其实你默认去变译也都没有问题,是不会报错的,只要说呃,LTD编写的和规范生成出来的这些代码基本上不会有错误。
17:24
当然了,这期间呢,会有什么问题,比如说我在升呃编写led的时候发生了一些。错误,比如说使用的电量它是无炮整型,但是bit类S超过了32倍,因为我们使用的单片机是32倍单片机,那它最大的数据类型就是in塞尔32比特,再往上呢,是不希望看到,那这个时候呢,如果使用的VS超过了32比特,还是使用了无法整箱,那这个时候呢,就会有相应的提示信息,比如说保捷瓦尼啊,保洁errorra,在编译的时候,你你下面就会提示一些结果,你就可以看到这些提示的信息,如果觉得提示的信息呃,你已经明白是什么意思,不希望再看到,要么屏蔽它,要么删了它,你都可以根据用户具体的情况去体分析。
18:01
所以呢,现在可以完成之后,直接就可以去使用,这里跑的就是我的一个小的DEMO啊,就满足这个led的一个运行,那就是会让led灯进行500ms的翻转啊,然后在过程数据之中会更新led的高级电离状态以及闪烁的多少次这些数据啊以上就是本期视频大概介绍的一些内容,后续呢,我会不断的去完善,完成成绩啊,就会有更丰富的,更人性化,更加解放生产力的功能来提供出去。好,接下大家。
我来说两句