ZYNQ的PS侧读取温度及电压

1.需求描述

        在ZYNQ芯片PS侧,基于嵌入式linux系统,读取PS芯片温度及电压。对于读取到的数值,通过JSON上报给前端界面。

        我发现网上关于ZYNQ芯片读取温度、电压的讲解很多,但没找到linux系统下,温度电压数值文件与用户手册中计算公式的对应关系。于是计算一下,找规律,做记录。

2.实现方案

        1)文件位置

/sys/bus/iio/devices/iio:device0

        进入该位置,可以看到温度、电压相关的文件。通过读取这些文件,并进行计算,即可得到温度、电压相关参数。

        注意,内核需包含xadc驱动。

        2)计算方法

        ①温度:

        在”/sys/bus/iio/devices/iio:device0”位置,可以看见关于温度的文件有三个:

                        in_temp0_raw、in_temp0_offset、in_temp0_scale

        在xilinx的官方文档(ug480)中,ADC数值与温度的转换关系是:

                        temperature(℃)=ADC_Code×503.975/4096-273.15

        可以直接读取in_temp0_raw文件,把读取到的数值带入上式计算;也可以使用另一公式:

                        Temp = (temp_scale * (temp_raw + temp_offset))/1000

        计算发现两个公式的对应关系是:

                        in_temp0_scale=503.976/4096×1000;

                        in_temp0_scale=-273.15×1000/in_temp0_scale

        由此,in_temp0_raw、in_temp0_offset、in_temp0_scale三个文件的含义清楚了。

        ②电压

        在”/sys/bus/iio/devices/iio:device0”位置,关于电压的文件较多,我个人分为raw文件和scale文件两种。

        在xilinx的官方文档(ug480)中,ADC数值与温度的转换关系是:

                        Voltage(V)=ADC_Code/4096×3V

        raw文件数值即ADC_Code,scale文件的数值即1/4096×3

        由此,将读取到的数值带入公式计算即可。

3.特别感谢博主

https://blog.csdn.net/mad_orange/article/details/137272609

https://blog.csdn.net/jin787730090/article/details/118357511

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值