当前位置:首页 期刊杂志

S32K144和AD7606接口设计与实现

时间:2024-05-04

文/唐鸿华

(株洲中车时代电气股份有限公司 湖南省株洲市 412001)

1 引言

S32K系列单片机是NXP推出的汽车电子类单片机,适合高可靠性设计中使用。S32K的软件开发可使用免费的S32DS开发环境,该开发环境对应芯片的内部模块配置采用可视化模式,同时S32K的软件开发包提供内部模块的底层驱动。设计人员在开发过程中只需关心具体应用,使用方便。

S32K144单片机由于内部AD转换精度有限,当转换精度要求高于1%时,通常采用外接AD转换芯片方式。使用串行通信可降低PCB布线复杂度。S32K144单片机包含有一个FlexIO模块,这个模块可根据需要配置成UART、SPI、I2C等多种串行通信模式。采用了带SPI接口的AD7606芯片作为外部AD转换芯片。

2 硬件接口设计

AD7606通过SPI接口与S32K144通信。FlexIO是S32K144系列芯片内的一个通信模块,可配置成SPI通信模式。FlexIO模块的8个外部引脚任意一个均可配置成SPI的4根通信信号线的任意一个,如在PCB布局中发现布线交叉复杂时,可调整引脚布局简化PCB布线。S32K144与AD7606的硬件连接如图1。

AD7606芯片的通信方式选择(nPAR/SER/BYTE SEL)配置为高电平,表示使用SPI方式通信。S32K144发出启动转换信号(CONVST A、CONVST B)到AD7606,AD7606开始数据转换,这时BUSY信号为高电平;当BUSY信号为低时,表示转换完成。S32K144启动SPI通信读取数据,把转换后的数据读到CPU。控制信号说明如表1。

3 软件功能设计与实现

3.1 软件功能设计

AD转换需要周期进行,由定时器产生1ms定时中断,在中断里置位AD转换标志。主循环里检查1ms定时标志,启动AD转换并做相应处理,处理流程如图2。

3.2 软件功能实现

在S32DS里,驱动层已定义SPI接口数据结构,系统根据图形化界面的配置自动生成spi_master_t类型的数据结构用于初始化SPI接口。本次配置生成MasterConfig0数据结构如下:

图1:S32K144与AD7606硬件连接

extension是针对FlexIO引脚配置的数据结构,本系统的引脚配置数据结构如下:

执行如下操作将其加入到MasterConfig0结构体中。

MasterConfig0.extension = &extension;

在初始化部分执行SPI_MasterInit即可完成对SPI接口的初始化。

SPI_MasterInit(&spi1Instance,&MasterConfig0);

调用SPI_MasterTransfer函数即可启动数据传输。

表1:控制信号说明

图2:数据处理流程图

SPI_MasterTransfer (&spi1Instance,master_send,master_receive,(uint8_t) NUMBER_OF_FRAMES );

调用SPI_GetStatus函数检查发送是否完成。

SPI_GetStatus(&spi1Instance);

定时中断要先设计中断函数,通过INT_SYS_InstallHandler把中断函数安装到系统中断向量表,初始化完成后启动定时中断。

AD转换启动信号通过GPIO方式发出,表示转换完成状态的BUSY信号通过GPIO信号检测。

图3:AD转换的数据

3.3 测试

首先使用精密电源在AD7606的模拟输入脚输入0.5V、1V、1.5V、3V直流电压,检查转换后的直流电压值,经测试误差在1%以内。

再用信号发生器在AD7606模拟输入脚输入频率为5Hz、10Hz、100Hz,幅度为3V正弦波信号,通过串口打印输出转换的电压信息。在PC机通过串口通信软件接收S32K144发送过来的数据,数据保存到Excel表里。通过Excel的绘图,检查转换结果是否正常。测试数据如图3,说明AD动态转换符合要求。

4 结束语

NXP公司的S32K1XX系列芯片和部分Kinetis KLXX系列包含FlexIO模块,FlexIO模块模拟的SPI通信接口与AD7606芯片的连接方式灵活,适用范围广。本文介绍的方法在这种AD转换电路中使用,可提高PCB布局灵活性,降低布板复杂度,提升设计质量。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!