0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

XADC内嵌在PS端允许CPU或其他主机连接而不用使用PL端

FPGA之家 来源:瓜大三哥 作者:米果不回来 2021-05-27 11:30 次阅读

XADC内嵌在PS端,允许CPU或其他主机连接XADC,而不用使用PL端。XADC最大采样率为1MSPS,精度为12bits,内置电压和温度传感器,可监测芯片的电压及温度信息。电压传感器可监测芯片的VCCINT,VCCAUX,VCCBRAM等,VP_0和VN_0为一对专用的ADC模拟输入口。VAUXP[*]和VAUXN[*]也是ADC输入口,但是不用作ADC输入口时,可用作普通IO使用。

intXAdcPolledPrintfExample(u16 XAdcDeviceId)

{

intStatus;

XAdcPs_Config *ConfigPtr;

u32 TempRawData;

u32 VccPintRawData;

u32 VccPauxRawData;

u32 VccPdroRawData;

floatTempData;

floatVccPintData;

floatVccPauxData;

floatMaxData;

floatMinData;

XAdcPs *XAdcInstPtr = &XAdcInst;

printf(" Entering the XAdc PolledExample. ");

/*

* Initialize the XAdc driver.

*/

ConfigPtr= XAdcPs_LookupConfig(XAdcDeviceId);

if(ConfigPtr == NULL) {

returnXST_FAILURE;

}

XAdcPs_CfgInitialize(XAdcInstPtr,ConfigPtr,

ConfigPtr->BaseAddress);

/*

* Self Test the XADC/ADC device

*/

Status= XAdcPs_SelfTest(XAdcInstPtr);

if(Status != XST_SUCCESS) {

returnXST_FAILURE;

}

/*

* Disable the Channel Sequencer beforeconfiguring the Sequence

* registers.

*/

XAdcPs_SetSequencerMode(XAdcInstPtr,XADCPS_SEQ_MODE_SAFE);

/*

* Read the on-chip Temperature Data(Current/Maximum/Minimum)

* from the ADC data registers.

*/

TempRawData= XAdcPs_GetAdcData(XAdcInstPtr, XADCPS_CH_TEMP);

TempData= XAdcPs_RawToTemperature(TempRawData);

printf(" The Current Temperature is%0d.%03d Centigrades. ",

(int)(TempData), XAdcFractionToInt(TempData));

TempRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr, XADCPS_MAX_TEMP);

MaxData= XAdcPs_RawToTemperature(TempRawData);

printf("The Maximum Temperature is%0d.%03d Centigrades. ",

(int)(MaxData), XAdcFractionToInt(MaxData));

TempRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr, XADCPS_MIN_TEMP);

MinData= XAdcPs_RawToTemperature(TempRawData & 0xFFF0);

printf("The Minimum Temperature is%0d.%03d Centigrades. ",

(int)(MinData), XAdcFractionToInt(MinData));

/*

* Read the VccPint Votage Data(Current/Maximum/Minimum) from the

* ADC data registers.

*/

VccPintRawData= XAdcPs_GetAdcData(XAdcInstPtr, XADCPS_CH_VCCPINT);

VccPintData= XAdcPs_RawToVoltage(VccPintRawData);

printf(" The Current VCCPINT is%0d.%03d Volts. ",

(int)(VccPintData),XAdcFractionToInt(VccPintData));

VccPintRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr,

XADCPS_MAX_VCCPINT);

MaxData= XAdcPs_RawToVoltage(VccPintRawData);

printf("The Maximum VCCPINT is %0d.%03dVolts. ",

(int)(MaxData), XAdcFractionToInt(MaxData));

VccPintRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr,

XADCPS_MIN_VCCPINT);

MinData= XAdcPs_RawToVoltage(VccPintRawData);

printf("The Minimum VCCPINT is %0d.%03dVolts. ",

(int)(MinData), XAdcFractionToInt(MinData));

/*

* Read the VccPaux Votage Data(Current/Maximum/Minimum) from the

* ADC data registers.

*/

VccPauxRawData= XAdcPs_GetAdcData(XAdcInstPtr, XADCPS_CH_VCCPAUX);

VccPauxData= XAdcPs_RawToVoltage(VccPauxRawData);

printf(" The Current VCCPAUX is%0d.%03d Volts. ",

(int)(VccPauxData),XAdcFractionToInt(VccPauxData));

VccPauxRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr,

XADCPS_MAX_VCCPAUX);

MaxData= XAdcPs_RawToVoltage(VccPauxRawData);

printf("The Maximum VCCPAUX is %0d.%03dVolts. ",

(int)(MaxData), XAdcFractionToInt(MaxData));

VccPauxRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr,

XADCPS_MIN_VCCPAUX);

MinData= XAdcPs_RawToVoltage(VccPauxRawData);

printf("The Minimum VCCPAUX is %0d.%03dVolts. ",

(int)(MinData), XAdcFractionToInt(MinData));

/*

* Read the VccPdro Votage Data(Current/Maximum/Minimum) from the

* ADC data registers.

*/

VccPdroRawData= XAdcPs_GetAdcData(XAdcInstPtr, XADCPS_CH_VCCPDRO);

VccPintData= XAdcPs_RawToVoltage(VccPdroRawData);

printf(" The Current VCCPDDRO is%0d.%03d Volts. ",

(int)(VccPintData), XAdcFractionToInt(VccPintData));

VccPdroRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr,

XADCPS_MAX_VCCPDRO);

MaxData= XAdcPs_RawToVoltage(VccPdroRawData);

printf("The Maximum VCCPDDRO is %0d.%03dVolts. ",

(int)(MaxData), XAdcFractionToInt(MaxData));

VccPdroRawData= XAdcPs_GetMinMaxMeasurement(XAdcInstPtr,

XADCPS_MIN_VCCPDRO);

MinData= XAdcPs_RawToVoltage(VccPdroRawData);

printf("The Minimum VCCPDDRO is %0d.%03dVolts. ",

(int)(MinData), XAdcFractionToInt(MinData));

printf("Exiting the XAdc Polled Example. ");

returnXST_SUCCESS;

}

/****************************************************************************/

/**

*

* This function converts the fractionpart of the given floating point number

* (after the decimal point)to aninteger.

*

* @param FloatNum is the floating point number.

*

* @return Integer number to a precision of 3 digits.

*

* @note

* This function is used in the printingof floating point data to a STDIO device

* using the xil_printf function. Thexil_printf is a very small foot-print

* printf function and does notsupport the printing of floating point numbers.

*

*****************************************************************************/

intXAdcFractionToInt(floatFloatNum)

{

floatTemp;

Temp= FloatNum;

if(FloatNum < 0) {

Temp= -(FloatNum);

}

return( ((int)((Temp -(float)((int)Temp)) * (1000.0f))));

}

原文标题:Zynq中PS端XADC

文章出处:【微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

责任编辑:haq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10759

    浏览量

    210295
  • Zynq
    +关注

    关注

    9

    文章

    604

    浏览量

    47065

原文标题:Zynq中PS端XADC

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    复旦微PS+PL异构多核开发案例分享,基于FMQL20SM国产处理器平台

    机与评估板的调试串口相连接,将评估板的RS232串口连接至PC机的USB接口,硬件连接如下图所示。 图 3 参考产品资料,先加载设备树文件和PL
    发表于 08-22 14:04

    输入和双输入的区别是什么

    信号通常连接到电路的一个端点,另一个端点则接地接参考电压。 1.1 单输入的原理 单输入电路的基本原理是利用输入信号与参考电压之间的
    的头像 发表于 07-31 10:50 1248次阅读

    被测低电阻为何具有四个连接

    测量低电阻时,通常会使用四连接法,也称为Kelvin测量法。这种方法可以有效地减少测量误差,提高测量精度。以下是关于四连接法的介绍:
    的头像 发表于 07-26 10:39 554次阅读

    FM20S用户手册-PS + PL异构多核案例开发手册

    PS) + FPGA可编程逻辑资源(PL)异构多核SoC处理器设计的全国产工业评估板,PS
    发表于 07-25 16:14

    FM20S用户手册-PL案例开发手册

    PS) + FPGA可编程逻辑资源(PL)异构多核SoC处理器设计的全国产工业评估板,PS
    发表于 07-25 16:12

    esp_iot_sdk_v0.9.6_b1客户断开连接导致WDT重置怎么解决?

    客户断开连接,服务器一定不会挂起。实际上,由于客户启动了连接,因此客户理所当然地应该能够断开连接
    发表于 07-18 06:33

    ESP32做为主机连接多个从设备时,主机如何修改默认的连接参数?

    把默认连接间隔改到20ms, menuconfig里没有找到对应的配置信息(不确定有没有),然后我试过每连接成功一个从机,主机发起一次
    发表于 06-21 16:56

    使用USBUART组件与主机PC通信,如果在串行端口打开的情况下终止固件,主机为什么会报错?

    我正在使用 USBUART 组件与主机 PC 通信,我一直寻找某种机制来关闭 MCU 的串行端口,或者至少通知主机我将关闭端口。 我遇到过这样一个问题:如果在串行端口打开的情况下终
    发表于 06-03 08:41

    有关PL利用AXI总线控制PSDDR进行读写(从机wready信号一直不拉高)

    一直拉高的。这与写数据通道好像有点区别。 我不清楚PS 的DDR到底发生了什么,但是和MIG核就是有点不一样,通过仿真MIG核可以发现,PL的DDR是会先一直发出wready信号的
    发表于 05-31 12:04

    如何使用Vitis自带的LWIP模板进行PS千兆以太网TCP通信?

    开发板有两路千兆以太网,通过RGMII接口连接,本实验演示如何使用Vitis自带的LWIP模板进行PS千兆以太网TCP通信。
    的头像 发表于 04-28 10:44 2511次阅读
    如何使用Vitis自带的LWIP模板进行<b class='flag-5'>PS</b><b class='flag-5'>端</b>千兆以太网TCP通信?

    FPGA的PL固化流程

    电子发烧友网站提供《FPGA的PL固化流程.pdf》资料免费下载
    发表于 03-07 14:48 8次下载

    请问FX3的UART口和Xilinx ZYNQ7000的PS的UART进行硬件连接需要TTL电平转换吗?

    想让FX3的UART口和Xilinx ZYNQ7000的PS(Processor system)的内置UART相互通信,两个芯片使用的是同一个电源(同在一块板子上分别在两块相互连接
    发表于 02-28 08:32

    AD9681是否可被zynq-7020的pl驱动?

    您好: 我想咨询AD9681是否可以被zynq-7020的PL驱动(zynq7020的性能是否足够)。我们需要做卫星的探测载荷,由于卫星能源控制严格,我们需要低功耗、多通道(至少8个)、高采样率
    发表于 12-04 08:18

    什么是通信?

    是指在两个端点(如传感器、控制单元执行器)之间安全地传输数据的过程,同时整个通信链中保证数据的完整性和可靠性。通过建立安全的路径,通信支持关键信息的可靠交换,从而最大限度地减
    的头像 发表于 11-24 11:07 1202次阅读

    ZYNQ的ARM和FPGA数据交互——AXI交互最重要的细节

    。 ③EMIO :由于MIO管脚有限,PS可以通过EMIO访问PL引脚。 ④GP :通用AXI接口,用来实现一般主从互联、数据交互,不用
    发表于 11-03 10:51