当前位置:网站首页 > 编程语言 > 正文

max6921程序(max6921中文手册)



参考文档:

1.xilinx UG480 <<7 Series FPGAs and Zynq-7000 SoC XADC Dual 12-Bit 1 MSPS Analog-to-Digital Converter User Guide>>

2.xilinx PG019 <<LogiCORE IP AXI XADC v1.00a Product Guide>>

XADC硬件框图:

XADC包括双12位、每秒1兆样本(MSPS) ADC和一系列片上温度电压传感器。同时adc提供了通用的、高精度的模拟接口。该adc支持多种工作模式,例如外部触发和同步采样模式,同时支持单端或者差分模拟信号输入,最高支持外部17个通道的模拟输入。

XADC自带几个片上传感器,支持对片上电源电压和模具温度的测量。ADC转换数据存储在称为状态寄存器的专用寄存器中。这些寄存器可以通过使用称为动态重配置端口(DRP)16位同步读写端口访问,该端口时序图见文档UG480ADC转换数据也可以通过JTAG TAP访问,不需要实例化XADC,直接在hard mannger界面即可访问XADC内部状态寄存器,查看芯片温度电压等模拟量。

XADC支持多种操作模式。最基本的操作模式叫缺省模式,缺省模式下XADC模块专用于监视芯片上的供电电压和芯片温度,这时XADC模块并不需要用户对其进行配置。另外一个为同步采样模式,按预定的步骤顺序采样两个外部的模拟输入信号,并把采样结果存储在状态寄存器内。单通道模式,在这种模式下,用户必须通过写控制寄存器40HCH4CH0比特来选择一个要采样的通道。另外控制寄存器40HBU(analog input mode)ACQsettling TIme)两个参数也必须设置。独立ADC模式,在这种模式下,ADC A是固定用来实现一个类似于缺省模式的监控模式,报警输出功能是有效的,用户必须设置正确的报警门限;ADC B只能用来测量外部的模拟输入。Single Pass模式,在这种模式下,按用户选择的采样顺序序列顺序采样一遍后停止ADC。采样顺序序列是由用户写序列通道选择寄存器48H49H来设定的。ConTInuous Sequence连续序列模式,这种模式和Single Pass模式很相似,区别是采样完一遍后系统自动重新开始序列采样,故为连续采样。

缺省模式下XADC模块专用于监视芯片上的供电电压和芯片温度,故我们只需要使用缺省模式,上电直接读取对应传感器状态寄存器的值即可。对应的状态寄存器说明如下:

其中寄存器值对应模拟量的转换公式说明如下:

在Xilinx的SDK驱动程序中,这些转换已经封装成了一系列函数,直接使用即可。

除了直接使用XADC硬件原语的DRP接口操作XADC之外,Xilinx提供了一个封装好的AXI_lite接口的ip供我们使用。

ip框图如下:

对应的一些列寄存器详细说明参考PG019文档。

IP名:XADC Wizard(3.3)

平台:XC7K325TFFG900-2

Basic界面配置:

ADC Setup界面配置:

Alarms界面配置:

可以设定阈值,一旦超过阈值对应的alarm信号拉高(有对应的alarm寄存器)报警。

Channel Sequencer界面配置:

将配置好的axi接口的XADC挂载到MicroBlaze软核上,同时挂载一个axi_uart用于输出打印温度电压等信息。

函数说明:XSysMon_LookupConfig

函数原型

XSysMon_Config *XSysMon_LookupConfig(u16 DeviceId)

函数名

XSysMon_LookupConfig

查找XADC的配置

参数1

u16 DeviceId

XADC设备ID

返回值

XSysMon_Config *

指向XADC配置的指针

XSysMon_Config结构体定义:

typedef struct {

    u16  DeviceId;     /< Unique ID of device */

    UINTPTR  BaseAddress/< Device base address */

    int  IncludeInterrupt; /< Supports Interrupt driven mode */

    u8   IpType;       /< 1 - System Management */

                /< 0 - XADC/System Monoitor */

} XSysMon_Config;

函数说明:XSysMon_CfgInitialize

函数原型

int XSysMon_CfgInitialize(XSysMon *InstancePtr, XSysMon_Config *ConfigPtr,

              UINTPTR EffectiveAddr)

函数名

XSysMon_CfgInitialize

XADC初始化

参数1

XSysMon *InstancePtr

指向XADC实例的指针

参数2

XSysMon_Config*ConfigPtr

指向XADC配置的指针

参数3

UINTPTR EffectiveAddr

XADC设备基地址

返回值

int

XST_SUCCESS

XSysMon结构体定义:

typedef struct {

    XSysMon_Config Config; /< XSysMon_Config of current device */

    u32  IsReady;      /< Device is initialized and ready  */

    u32  Mask;      /< Store the previously written value

                   in CONVST register */

} XSysMon;

函数说明:XSysMon_SelfTest

函数原型

int XSysMon_SelfTest(XSysMon *InstancePtr)

函数名

XSysMon_SelfTest

XADC自检函数

参数1

XSysMon *InstancePtr

指向XADC实例的指针

返回值

int

XST_SUCCESS/XST_FAILURE

函数说明:XSysMon_GetAdcData

函数原型

u16 XSysMon_GetAdcData(XSysMon *InstancePtr, u8 Channel)

函数名

XSysMon_GetAdcData

获取状态寄存器数据

参数1

XSysMon *InstancePtr

指向XADC实例的指针

参数2

u8 Channel

获取数据的通道号

返回值

u16

读取的数据

宏定义:XSysMon_RawToTemperature(AdcData)

说明:将状态寄存器读取的值进行公式转换成摄氏度。

#define XSysMon_RawToTemperature(AdcData)            

    ((((float)(AdcData)/65536.0f)/0.00f ) - 273.15f)

宏定义:XSysMon_RawToVoltage(AdcData)

说明:将状态寄存器读取的值进行公式转换成电压,单位V

#define XSysMon_RawToVoltage(AdcData)                

    ((((float)(AdcData))* (3.0f))/65536.0f)

本例程测试读取芯片温度,以及内核和辅助电压,每隔一段时间将读取的值通过串口打印出来。测试结果如下:

到此这篇max6921程序(max6921中文手册)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • ip地址换算网络地址(ip地址计算网络地址)2025-04-04 21:18:08
  • 免费海报制作模板(免费海报制作模板_可画)2025-04-04 21:18:08
  • 打印机控件怎么装(打印控件怎么安装)2025-04-04 21:18:08
  • ubuntu镜像怎么下载(ubuntu镜像下载地址)2025-04-04 21:18:08
  • 爱普生C7000和7845哪个好(爱普生tw7000和7400)2025-04-04 21:18:08
  • 删除命令linux目录(linux命令怎么删除一个目录)2025-04-04 21:18:08
  • 获取位置权限怎么设置(获取位置权限怎么设置手机)2025-04-04 21:18:08
  • tip期刊投稿(tip投稿要求)2025-04-04 21:18:08
  • a标签设置不能点击(a标签为什么无法点击)2025-04-04 21:18:08
  • 如何拆包装袋封口线(如何拆包装袋封口线视频)2025-04-04 21:18:08
  • 全屏图片