使用独立硬件方法简化集成系统设计:控制器实
日期:2025-07-09 13:28 浏览:

合并系统的设计使设计人员可以编写控制器和固件代码,以使所选的传感器能够实现所需的基本功能。这个过程通常需要很长时间和无聊。为了解决此问题,可以通过组合硬件,软件和固件来简化传感器的选择和系统集成来采用插件设计思想。独立的硬件控制器不仅使传感器集成更有效,而且还可以作为将来设计的通用解决方案。在本文中,我们将使用惯性测量单元(IMU)的传感器作为如何实现硬件独立控制器的示例,但是此方法也可以应用于其他类型的传感器和设备。控制器用C编写,并用通用微控制器进行了测试。 ImphemController Ention的实现包含所有提到的照片和代码,现在可视化可视化读者。 ■图10 ADIS16500_RD_ERROR_FLAG中的附录10中的图10显示了此功能的实现。此功能读取ADIS16500_REG_DIAG_STAT注册中包含的错误指示器,如果不发生错误,则所有位均为0。有10个错误。此功能仅读取ADIS16500_G_DIAG_STAT注册,并使用特定的错误掩码在寄存器中验证每个位。如果找到逻辑1,则结构中的相应字段以真实形式建立。 ■ADIS16500_RD_TEMP这是一个温度读取功能,其实现与加速和陀螺仪实现相同(有关更多信息,请参见本系列的第一篇文章)。读数以°C表示。它们的二进制值包含在16 -bit寄存器ADIS16500_REG_TEMP_OUT中。数据变为两个补充。结果2的补体值乘以温度尺度因子(°C/LSB),最后是°C的数值,记录为°C在最后一个指针中作为入口。该功能的实现可在附录中的图9中获得。 ■ADIS16500_GET_TS_USEC此ESSE功能以获取IMU时间品牌。它的实现与ADIS16500_RD_TEMP函数完全相同。有关更多信息,请参见附录中的图9。 ■ADIS16500_RD_DATA_CNT此程序读取输出数据编号。实际上,只需读取称为ADIS16500_REG_DATA_CONT的记录即可。当注册达到其最大值时,它将从0重新启动。该功能的实现可在附录中的图9中获得。 ■ADIS16500_WR_ACC_CALIB此功能用于执行个性化补偿校准。设计人员通过此功能使您可以在读取输出数据记录中添加一个值的值,并将X,Y,Z的校准值添加到加速度数据x,y,z中。伸向点x,y,z。此功能的目的是将一个浮点值转换为补充的两个值,然后将两个补充的值转换为两个补充的两个补语,to两个补充,两种补语对两个补充,两个补语对两个补充,对两个补充,对两个补充的两个补充。所有步骤均在附录中的图11中找到。接下来,二进制值必须写入偏差记录中。例如,对于X轴,必须编写两个记录:ADIS16500_REG_X_ACCEL_BIAS_L(16位)和ADIS16500_REG_X_ACCEL_BIAS_BIAS_H(高于16位)。相同的轴和Z也适用,每个轴和Z都带有相应的偏置记录。要验证程序是否正确执行,请确保在放置IMU传感器时,Z轴定向垂直于天空。在这种情况下,X和Y轴的Acceleration值约为0,Z轴的加速度值约为–9.81 m/s2(–g)。调用校准功能并通过Calibra带有字段x,y y z的结构等于–9.81 m/s2,校准读取结果为x = –9.81。 y = –9.81; Z = 0表示校准补偿功能正常工作。 ■ADIS16500_WR_GYRO_CALIBTHIS是gyroes示波器相关的补偿校准函数,其实现与加速校准函数完全相同。区别在于,必须使用数据表指令和相应的陀螺仪补偿记录进行陀螺仪校准。本文侧重于IMU传感器控制器,但其软件/固件结构可用于任何类型的传感器。因此,为了获得所有传感器的通用支持,您只需要根据传感器和微控制器之间的通信协议(SPI,I2C,UART等)进行协调即可。通过通信协议发送和接收的初始化阶段注册函数在传感器初始化方法中仍然有效。除了e除了传感器和微控制器单元(MCU)的硬件连接的基本说明外,还提供了有关如何在项目中介绍和使用控制器的基本说明,本文还提供了有关如何从软件和固件角度介绍控制器的相关指南。图1。项目文件夹的结构传感器控制器没有共同的组织结构。图1显示了建议的文件夹结构。 Userlib文件夹包含所有传感器控制器。在此示例中,您只有一个IMU传感器控制器,但是您的conti projectin更多传感器,它基本上以相同的方式组织。 Userlib中有两个文件夹。也就是说,包括和src。包含文件夹包含驱动程序标题文件。也就是说,在此示例中,ADIS16500.H,SRC包含源文件,即ADIS16500.C。还有一个制造文件指定Userlib中包含的指令。如图2所示。图2 Userlib makefile图3主恋爱图3显示了主要的makfile。它位于Main.C附近的应用层中。 MakeFile包括user.mk,如图3(代码线115)中的低音低音所示。使用makefile(.mk)允许设计人员在应用程序层(如Main.c中)中引入控制器的接口,以调用传感器控制器的所有共同特性。这样,建立了应用层和传感器驱动层之间的链接。传感器控制器接口(ADIS16500.H)在应用层中已知。因此,应用层通过上述初始化程序在传感器和外围驱动层之间建立了链接。对于某些使用IMU传感器的情况,发射器,接收器的SPI函数和系统延迟函数在main.c文件中定义,如附录2所示。这三个功能遵循控制器标题文件的原型,即原型sho附录中图3的顶部的WN。这三个功能由外围驱动器层内部提供,例如选定的香料,间谍,序列,SpiunSelect和Chthdsleepmicrosegund。因此,如附录中的图2所示,SPI接收器,发射器和系统延迟功能表示外围和传感器驱动器层之间的链接。以上是在项目中引入驱动因素的整个过程。如果要获取传感器输出,设计人员可以使用ADIS16500_RD_ACC和ADIS16500_RD_GYRO部分中引入的特征。没有完全常见的读取传感器的方法。图4仅显示一个示例。图4在此示例中,读取传感器输出,Main.c中有一个无限循环,它总是在寻找一个布尔静态变量,称为_ADIS16500_DATA_READY。该变量与呼叫返回功能有关,当DR引脚高时更改为true。这意味着新数据已经可用。在这种情况下,主要函数调用功能ADIS16500_RD_ACC和ADIS16500_RD_GYRO。全速执行IMU传感器使设计人员可以以2 kHz输出数据速率(ODR)恢复数据。结论本文通过独立方法的硬件介绍了控制器和传感器的特征。适用于简化集成。独立的硬件控制器可以用作将来设计中重复使用的一般解决方案。作者简介Giacomo Pataniani在博洛尼亚大学拥有生物医学工程学位,并在Modena-Reggio University Emiria大学的电子工程硕士学位。毕业后,他曾在Modena Regio Emilia大学担任研究员。 2022年4月,他加入了ADI研究生课程,担任研究生现场应用工程师。 2023年4月,它变成了Faye。