学习使用motorware开发过程中,需要使用到CAN。但仔细查找HAL之后发现,居然没有CAN的操作方法。回头又查了一下drivers and moduls,发现除了CAN之外,还有CLA,I2C,LIN都没有相关操作方法。烦请解释。另外,motorware基于开发板做了一些特别针对开发板的drivers,如我们自已设的控制板,针对我们自已的板的drivers如何编写?谢谢!
Martin Yu:
Motorware主要包含的是InstaSPIN的算法,电机驱动部分,CAN等片内外设的使用请参考controlsuite中的例程,但两个程序的风格不一样,保持lab程序的软件架构,添加CAN等使用在应用层。
学习使用motorware开发过程中,需要使用到CAN。但仔细查找HAL之后发现,居然没有CAN的操作方法。回头又查了一下drivers and moduls,发现除了CAN之外,还有CLA,I2C,LIN都没有相关操作方法。烦请解释。另外,motorware基于开发板做了一些特别针对开发板的drivers,如我们自已设的控制板,针对我们自已的板的drivers如何编写?谢谢!
kegan zhu:
回复 Martin Yu:
motorware的作用,就是将面向过程的编程方法,变成面向过程的方法。所谓抽象层,就是将硬件及其操作函数进行抽象(类定义),利用类来定义不同的对象。编制程序时,只需对每个对象进行必须的操作即可。
这样问题就来了,CONTROLSUIT里的CAN示例基本上都是面向过程的,如果我们利用motorware进行开发时,岂不是成为一个混合体:即要面向对象编程,又要面向过程编程?
实际测试了一下,将can.h包含在LAB中进行混合编程是可行的;对Can的相关寄存器及操作函数进行封装(类定义),再定义一些适当的对象,采用LAB示例的方式,对CAN进行编程也是可行的。只是对CAN的相关寄存器及操作函数进行封装,比较麻烦。