0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

XADC內(nèi)嵌在PS端允許CPU或其他主機(jī)連接而不用使用PL端

FPGA之家 ? 來(lái)源:瓜大三哥 ? 作者:米果不回來(lái) ? 2021-05-27 11:30 ? 次閱讀

XADC內(nèi)嵌在PS端,允許CPU或其他主機(jī)連接X(jué)ADC,而不用使用PL端。XADC最大采樣率為1MSPS,精度為12bits,內(nèi)置電壓和溫度傳感器,可監(jiān)測(cè)芯片的電壓及溫度信息。電壓傳感器可監(jiān)測(cè)芯片的VCCINT,VCCAUX,VCCBRAM等,VP_0和VN_0為一對(duì)專用的ADC模擬輸入口。VAUXP[*]和VAUXN[*]也是ADC輸入口,但是不用作ADC輸入口時(shí),可用作普通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))));

}

原文標(biāo)題:Zynq中PS端XADC

文章出處:【微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10702

    瀏覽量

    209385
  • Zynq
    +關(guān)注

    關(guān)注

    9

    文章

    604

    瀏覽量

    47016

原文標(biāo)題:Zynq中PS端XADC

文章出處:【微信號(hào):zhuyandz,微信公眾號(hào):FPGA之家】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    復(fù)旦微PS+PL異構(gòu)多核開(kāi)發(fā)案例分享,基于FMQL20SM國(guó)產(chǎn)處理器平臺(tái)

    機(jī)與評(píng)估板的調(diào)試串口相連接,將評(píng)估板的RS232串口連接至PC機(jī)的USB接口,硬件連接如下圖所示。 圖 3 參考產(chǎn)品資料,先加載設(shè)備樹(shù)文件和PL
    發(fā)表于 08-22 14:04

    輸入和雙輸入的區(qū)別是什么

    信號(hào)通常連接到電路的一個(gè)端點(diǎn),另一個(gè)端點(diǎn)則接地接參考電壓。 1.1 單輸入的原理 單輸入電路的基本原理是利用輸入信號(hào)與參考電壓之間的
    的頭像 發(fā)表于 07-31 10:50 ?830次閱讀

    被測(cè)低電阻為何具有四個(gè)連接

    測(cè)量低電阻時(shí),通常會(huì)使用四連接法,也稱為Kelvin測(cè)量法。這種方法可以有效地減少測(cè)量誤差,提高測(cè)量精度。以下是關(guān)于四連接法的介紹:
    的頭像 發(fā)表于 07-26 10:39 ?309次閱讀

    FM20S用戶手冊(cè)-PS + PL異構(gòu)多核案例開(kāi)發(fā)手冊(cè)

    PS) + FPGA可編程邏輯資源(PL)異構(gòu)多核SoC處理器設(shè)計(jì)的全國(guó)產(chǎn)工業(yè)評(píng)估板,PS
    發(fā)表于 07-25 16:14

    FM20S用戶手冊(cè)-PL案例開(kāi)發(fā)手冊(cè)

    PS) + FPGA可編程邏輯資源(PL)異構(gòu)多核SoC處理器設(shè)計(jì)的全國(guó)產(chǎn)工業(yè)評(píng)估板,PS
    發(fā)表于 07-25 16:12

    esp_iot_sdk_v0.9.6_b1客戶斷開(kāi)連接導(dǎo)致WDT重置怎么解決?

    客戶斷開(kāi)連接,服務(wù)器一定不會(huì)掛起。實(shí)際上,由于客戶啟動(dòng)了連接,因此客戶理所當(dāng)然地應(yīng)該能夠斷開(kāi)連接
    發(fā)表于 07-18 06:33

    ESP32做為主機(jī)連接多個(gè)從設(shè)備時(shí),主機(jī)如何修改默認(rèn)的連接參數(shù)?

    把默認(rèn)連接間隔改到20ms, menuconfig里沒(méi)有找到對(duì)應(yīng)的配置信息(不確定有沒(méi)有),然后我試過(guò)每連接成功一個(gè)從機(jī),主機(jī)發(fā)起一次
    發(fā)表于 06-21 16:56

    使用USBUART組件與主機(jī)PC通信,如果在串行端口打開(kāi)的情況下終止固件,主機(jī)為什么會(huì)報(bào)錯(cuò)?

    我正在使用 USBUART 組件與主機(jī) PC 通信,我一直尋找某種機(jī)制來(lái)關(guān)閉 MCU 的串行端口,或者至少通知主機(jī)我將關(guān)閉端口。 我遇到過(guò)這樣一個(gè)問(wèn)題:如果在串行端口打開(kāi)的情況下終
    發(fā)表于 06-03 08:41

    有關(guān)PL利用AXI總線控制PSDDR進(jìn)行讀寫(xiě)(從機(jī)wready信號(hào)一直不拉高)

    一直拉高的。這與寫(xiě)數(shù)據(jù)通道好像有點(diǎn)區(qū)別。 我不清楚PS 的DDR到底發(fā)生了什么,但是和MIG核就是有點(diǎn)不一樣,通過(guò)仿真MIG核可以發(fā)現(xiàn),PL的DDR是會(huì)先一直發(fā)出wready信號(hào)的
    發(fā)表于 05-31 12:04

    如何使用Vitis自帶的LWIP模板進(jìn)行PS千兆以太網(wǎng)TCP通信?

    開(kāi)發(fā)板有兩路千兆以太網(wǎng),通過(guò)RGMII接口連接,本實(shí)驗(yàn)演示如何使用Vitis自帶的LWIP模板進(jìn)行PS千兆以太網(wǎng)TCP通信。
    的頭像 發(fā)表于 04-28 10:44 ?2101次閱讀
    如何使用Vitis自帶的LWIP模板進(jìn)行<b class='flag-5'>PS</b><b class='flag-5'>端</b>千兆以太網(wǎng)TCP通信?

    FPGA的PL固化流程

    電子發(fā)燒友網(wǎng)站提供《FPGA的PL固化流程.pdf》資料免費(fèi)下載
    發(fā)表于 03-07 14:48 ?8次下載

    請(qǐng)問(wèn)FX3的UART口和Xilinx ZYNQ7000的PS的UART進(jìn)行硬件連接需要TTL電平轉(zhuǎn)換嗎?

    想讓FX3的UART口和Xilinx ZYNQ7000的PS(Processor system)的內(nèi)置UART相互通信,兩個(gè)芯片使用的是同一個(gè)電源(同在一塊板子上分別在兩塊相互連接
    發(fā)表于 02-28 08:32

    AD9681是否可被zynq-7020的pl驅(qū)動(dòng)?

    您好: 我想咨詢AD9681是否可以被zynq-7020的PL驅(qū)動(dòng)(zynq7020的性能是否足夠)。我們需要做衛(wèi)星的探測(cè)載荷,由于衛(wèi)星能源控制嚴(yán)格,我們需要低功耗、多通道(至少8個(gè))、高采樣率
    發(fā)表于 12-04 08:18

    什么是通信?

    是指在兩個(gè)端點(diǎn)(如傳感器、控制單元執(zhí)行器)之間安全地傳輸數(shù)據(jù)的過(guò)程,同時(shí)整個(gè)通信鏈中保證數(shù)據(jù)的完整性和可靠性。通過(guò)建立安全的路徑,通信支持關(guān)鍵信息的可靠交換,從而最大限度地減
    的頭像 發(fā)表于 11-24 11:07 ?1114次閱讀

    ZYNQ的ARM和FPGA數(shù)據(jù)交互——AXI交互最重要的細(xì)節(jié)

    。 ③EMIO :由于MIO管腳有限,PS可以通過(guò)EMIO訪問(wèn)PL引腳。 ④GP :通用AXI接口,用來(lái)實(shí)現(xiàn)一般主從互聯(lián)、數(shù)據(jù)交互,不用
    發(fā)表于 11-03 10:51