恩智浦的模拟产品开发板提供了一个易于使用的恩智浦产品评估平台。这些开发板支持各种模拟、混合信号和电源解决方案。它们采用成熟的高容量技术,整合了单片集成电路(IC)及系统级封装(SiP)器件。恩智浦产品电池寿命长,外型小巧,组件数量少,成本低,性能高,帮助您打造先进的系统。
本指南将指导您完成设置和使用FRDM-A-MOTABS2板的过程。
FRDM-A-MOTABS2套件内含物包括:
Something went wrong! Please try again.
FRDM-A-MOTABS2套件包含以下组件:
Something went wrong! Please try again.
FRDM‑A-MOTABS2上的跳线块提供了一种配置方式,使该板能够搭配其他MCU使用。跳线J16 (DOSV)可根据所用MCU的要求,在3.3V和5.0V之间进行选择。需确保将跳线J16设置为正确的电压(对于S32K144和KEAZ128,将DOSV设置为5V)。
Something went wrong! Please try again.
下图展示了FRDM-A-MOTABS2板的整体布局。
图1 FRDM-A-MOTABS2板。
Something went wrong! Please try again.
S32 Design Studio是一款基于恩智浦软件开发套件(SDK)构建的软件驱动工具。本节将介绍如何安装S32 Design Studio,并利用它进行应用程序开发。
以下步骤说明了如何获取并安装最新版本的S32 Design Studio以及本指南中所列的受支持ABS控制器型号。
注:驱动程序和部分软件包示例面向S32 Design Studio 2.2。如果系统中已安装了集成开发环境(IDE),则可跳过本节所述的步骤。
对于S32 Design Studio,SDK库随IDE一起提供,无需手动添加或链接。
Something went wrong! Please try again.
以下步骤介绍了如何获取最新版本的软件驱动和示例项目。
表1. 下载的ZIP文件的内容
| 文件夹名称 | 文件夹内容 |
|---|---|
| S32DS_Examples | 适用于S32 Design Studio 1.2及更高版本的示例项目文件夹。 |
| ABS_S32K144_BM14 | 该示例展示了如何使用ABS控制器软件驱动程序来监测ABS控制器的状态。示例内容包括读取测量值和状态信息,以及执行清除故障等操作,以确保驱动程序正常运行。 |
|
本示例项目旨在展示如何为泵电机预驱动器实现脉宽调制(PWM)。 该项目演示了两种方式:
|
本示例项目演示了如何使用轮速传感器接口。该示例不涉及最终轮速的计算,计算轮速需要额外的硬件设备,例如车轮。该示例侧重于统计给定时间段内的边沿数量。 |
| Programmer_Guide | 此文件夹包含本软件驱动程序的详细API文档。 |
Something went wrong! Please try again.
以下步骤展示如何将下载的zip文件中的示例导入S32 Design Studio。
ABS_S32K144_BM14文件夹,选择要导入的项目,如图3所示,然后选择“确定”Something went wrong! Please try again.
如不使用示例项目,以下说明介绍了如何创建和设置一个使用ABS控制器SDK软件驱动程序的新项目。
要创建项目,请按以下步骤操作:
main.c的内容本节介绍如何使用Processor Expert组件来配置MCU,这些组件通过提供用户友好的图形用户界面(GUI),帮助您轻松配置时钟、引脚复用和外设等常见功能,从而简化整个设置流程。
SPI和通用输入/输出(GPIO)引脚。根据支持的MCU列表,在PinMux组件中选择与所用MCU对应的正确引脚,如图10所示。可将某个示例项目作为此步骤的模板spi_pal)。如果使用调试控制台,则添加低功耗通用异步收发器(LPUART) (lpuart)组件,如图11所示注:您可能会注意到基于逻辑设备驱动程序(LDD)的Processor Expert的使用方式与作为S32 SDK GUI前端的Processor Expert之间存在差异。前者会生成并修改整个软件驱动程序代码。后者仅生成配置结构。这种方式通过保持静态软件驱动程序和单一的初始配置入口点,提高了安全性。
clock_manager完成。可以通过该工具为MCU及其外设选择时钟源、频率、预分频器和时钟门控spi_pal、lpspi和lpuart (参见图13中LPSPI组件的配置示例)Generated_Code文件夹本节介绍如何将ABS控制器软件驱动程序添加到项目中。
创建新项目并添加ABS控制器软件驱动后,进行驱动设置,并将其与预配置的MCU外设关联。 阅读《ABS控制器嵌入式SDK软件驱动程序》,其中描述了驱动程序的功能及所需的配置步骤。
abs/abs_model.h中相应地更改ABS控制器型号abs_drv_data_t类型的变量,并将其传递给所有使用的函数(该变量存储MCU外设的配置和ABS控制器软件驱动程序的内部数据)main()中声明该变量,或将其设置为全局变量ABS_GetDefaultUserConfig(),然后根据需要修改各项设置;最终生成的配置结构会在内部映射到所选型号的设备寄存器数组SPI和GPIO接口与ABS软件驱动程序的运行时数据相关联,从而让驱动内核能够通过GPIO实现复位和软件控制的片选,通过SPI进行通信(这样可通过FTM、PIT和GPIO等附加外设实现PWM和轮速传感器(WSS)处理等扩展功能,用于PDI、WSOx、VSO_IN和WSAI等信号)ABS_SetupSPI()函数,通过名为fsl_lpspi的Processor Expert组件生成的配置对SPI外设进行初始化ABS_SetupSPI()函数将配置结构传递给SDK SPI驱动初始化函数(S32 SDK中未使用ABS_SetupGPIOs()函数)Pins_DRV_Init()函数,配合PinMux组件生成的配置结构对引脚进行初始化所有应用代码都存放在项目目录中的“Sources”文件夹下。可以修改main.c中的代码,同时保留原有的使用相关注释。
请按照以下步骤使用ABS控制器,对代码进行初始化:
ABS_SetupSPI(),则不调用SPI。将指针传递给Generated_Code文件夹中.h文件中的生成的配置结构。图18展示了一个初始化示例。该代码复用了之前介绍的所有步骤,并假定用户已完成时钟配置、引脚复用、外设配置、代码生成,以及ABS软件驱动程序设置函数的实现。请参考代码注释来理解具体实现SetupABSDriver()),如图19所示sources/abs/abs.h头文件,其中包含所有可用函数的原型)ABS_FeedWatchdog(),可以通过周期中断实现,也可以通过带嵌套延迟的无限循环实现(该延迟可避免SPI通信开销过大,并防止MCU过载)编写用户应用程序的方式与前面步骤中展示的方法相同。对于更复杂的ABS控制器应用场景,请参考随附的示例项目。
注:本教程及所有随附的示例均未涵盖S32K144 Freedom开发板上系统基础芯片(SBC)的配置和初始化,因为软件版本的范围不包括此功能。有关SBC的配置和初始化,请参阅相应SBC的文档。
要编译项目,请选择工具栏中的“编译”图标,如图20所示。
在S32 Design Studio中,将应用程序下载到板上的过程因具体MCU板而异。如需进一步帮助,请参阅S32 Design Studio用户指南。要在S32K144 MCU板上进行下载和调试,请按以下步骤操作:
S32K144_SDK_Project_Debugto.elf文件路径,如图22所示Something went wrong! Please try again.
该驱动程序为静态类型,使用由用户配置结构定义的单一入口点。根据设备设置填充该结构。初始化函数会直接接收此配置。
有关用户配置结构的更详细说明,请参考《程序员指南》。
Something went wrong! Please try again.
软件驱动程序使用底层MCU外设驱动器实现通信、控制及相关功能。软件驱动程序的功能取决于这些底层驱动程序。
最新的软件驱动程序使用GCC-6.3通过恩智浦SDK构建。该软件驱动程序仍与使用GCC 4.9构建的基于AML的旧版软件驱动程序保持兼容。为支持在不同SDK之间移植,模拟中间件层(AML)对部分底层驱动程序统一了API。
重用基于AML的现有底层驱动程序可加快开发进程,并为常见任务提供经验证的解决方案。
图24展示了用于通信与控制的软件驱动架构。
Something went wrong! Please try again.