上一篇文章介绍了驱动开发的基本步骤。 1.c mex .c mex生成mex64文件(mex过程需要c编译器vs2017等) 2.编辑sfunction界面 3.编写tlc文件,tlc文件中会调用封装过后的模块,仿真时使用的是 S-Function 背后所调用的 mexw64 文件,代码生成的时候则是按照 tlc 文件的描述去生成代码。因此通过编写模块 tlc 文件就能定制设备驱动的个性化代码,并将其嵌入到模型源代码中,从而扩展Simulink 的功能。 本篇文章以MC9S12EXP100芯片,飞翔科技开发版的DO输出驱动为例,具体介绍硬件驱动开发的过程。 规定芯片手册中的PORTA和PORTB为输出,由外围电路图可知,PORTB可以用于点亮LED灯。LED的驱动电路如下图: PB0-PB7引脚,若输出低电平则灯量,输出高电平则灯灭。 所以,我们需要将这8个引脚配置为输出模式,且LED_ON时输出低电平,LED_OFF时输出高电平。 对于sfunction来说,模块需要的外部输入为bool类型的0或1,表示低/高电平。 在参数设置界面,需要配置是PORTA还是PORTB组(如果是想要LED亮,则选择PORTB组),同时需要选择是哪一个bit,0-7表示代表不同的引脚。 输出量可以没有,也可以设置成当前输出状态(本例中输出不起作用) 了解了上述参数后,可以开始设计sfunction界面,设计界面与c mex函数可以同时进行,因为两者关联性很强。 在simulink模块中选择s-function模块,右键模块选择mask-edit mask点击进入mask编辑界面。在这个界面中,我们可以设置输入参数,打开模块时配置的参数,输出参数。还有模块外形显示的设计,模块说明显示,模块帮助说明等等。 配置的参数有两个,port(格式为popup,定义的可选择项为PORTA和PORTB),Bits(格式为edit,设置值为0-7) 在Icon drawing commands界面添加输入bool类型,及显示参数信息 在Documentation界面,设置点开sfunction后显示信息。 设计好参数界面后,右击sfunction模块,选择Block Parameters(S-function) s-function name和tlc函数,c mex函数一致 参数按mask界面中的参数填写。 至此,界面配置基本就完成了。 后面还需要编写c mex函数和tlc函数,本界面中有一个输入参数,一个输出参数,两个配置参数。在编写c mex函数时会有关联。将在下一篇文章中具体介绍~~
欢迎各位在学习自定义代码生成的童靴和我交流,共同学习~Wechat/QQ:953509472
|