色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

英創信息技術脈沖計數功能在ESM335x-Linux主板上的實現

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2020-02-04 10:34 ? 次閱讀

1、綜述

工業控制中,經常需要獲取脈沖信號計數值、頻率、周期、占空比等參數。英創嵌入式主板ESM335X系列 Linux系統現已實現外部輸入脈沖信號的計數、頻率、周期、占空比測量功能。

主要功能及技術指標如下:

1、讀取一段時間內的外部輸入脈沖信號計數值。

2、外部輸入脈沖信號周期、有效脈寬測量。

3、根據測得周期計算外部輸入脈沖信號瞬時頻率。

4、根據測得計數值和測量時間間隔計算兩次有效信號讀取時間內外部輸入脈沖信號重復頻率(平均頻率)。

5、測得誤差200KHz左右時最大,瞬時頻率誤差不超過0.1%,重復頻率誤差不超過0.005%,占空比誤差不超過0.05%,計數值測量準確無誤差。

2、硬件連接

ESM335X系列嵌入式主板引出了3路PWM輸出,其中兩路(PWM1和PWM2)可以用來進行外界輸入的脈沖信號計數、頻率、占空比測量,相應的GPIO復用腳為GPIO6和GPIO7, 對應的引腳請參考光盤資料《ESMARC 335x工控主板數據手冊》,用戶使用脈沖波輸入計數功能時可將外來信號接到上述兩個GPIO管腳中的任意一個,并且地線與開發板接地引腳相連,然后在應用程序中獲得計數值、頻率、占空比。若用戶啟用了脈沖輸入計數功能,則相應管腳不能再作為PWM脈沖輸出或GPIO使用。

使用注意事項:

1、GPIO管腳最大只允許輸入3.3V電壓,超過將會導致開發板損壞!以開發板接地腳為基準,負值電壓無效,不符合電壓要求時需要設計緩沖放大電路。

2、輸入脈沖波最大頻率不應超過200KHz!超過之后由于硬件限制測量誤差將急劇變大。

3、應用程序

為了簡化用戶使用脈沖計數功能,內部使用了原pwm輸出模塊,Linux系統內部沒有增加新的設備節點,使用設備的計數功能(capture模式,后文簡稱cap),仍然需要使用pwm模式的設備節點進行模塊功能設置。

(1)程序中使用到的結構體及常量定義

與內核直接交換數據讀取設備原始測量值的結構體為cap_config_info,應用于read、write函數:

typedef struct cap_config_info

{

//以下為輸入參數

unsigned intdwPolarity;//設置輸入信號極性

unsigned intdwMaxFreq;//設置輸入信號最大頻率

//以下為輸出參數,輸入無效

unsigned longdwTimeUs;//兩次讀取之間的時間差

unsigned intdwCount;//兩次讀取之間的計數值

unsigned intdwPeriodNs;//讀取時刻脈沖周期

unsigned intdwWidthNs;//讀取時刻的脈沖有效脈寬

}CAP_INFO, *PCAP_INFO;

1、dwPolarity用于設置輸入脈沖信號極性,可設為PWM_POLARITY_NORMAL和PWM_POLARITY_INVERTED,定義在pwm_api.h頭文件中。

2、dwMaxFreq等于0時用于停止計數功能,dwMaxFreq不為零時用于設置輸入信號最大頻率,最大頻率不應超過200KHz,輸入單位為Hz。

3、dwTimeUs為輸出參數,讀取獲得上次讀操作(或使能操作)到本次讀操作之間的時間差,單位為us。

4、dwCount為輸出參數,讀取獲得上次讀操作(或使能操作)到本次讀操作之間的計數值,單位為 個。

5、dwPeriodNs為輸出參數,讀取獲得本次讀操作時脈沖信號周期, 單位為ns。

6、dwWidthNs為輸出參數,讀取獲得本次讀操作時脈沖信號有效脈沖寬度,單位為ns。

7、用戶可根據dwPeriodNs和dwWidthNs計算占空比。

8、用戶可根據dwPeriodNs計算讀操作時的脈沖信號頻率。

9、用戶可根據dwTimeUs和dwCount計算兩次讀操作之間的輸入信號的平均頻率。

(2)函數及系統調用

在進行計數操作時,首先打開相應的設備節點/dev/em335x_pwmX,X為編號(1或者2),使能設備開始計數相關代碼:

a)打開設備節點:

intnpwm = 1;

sprintf( device, "/dev/em335x_pwm%d", npwm );

fd = open(device, O_RDWR);

if ( fd < 0)

{

printf("can not open /dev/em335x_pwm%d device file! ", npwm);

return -1;

}

printf( "Open %s ", device );

b)使能cap模式:

int CAP_Start(int fd, unsigned int polarity, unsigned int maxfreq )

{

int rc;

struct cap_config_infoconf;

memset(&conf, 0 ,sizeof(struct cap_config_info))

conf.dwPolarity = polarity;

conf.dwMaxFreq = maxfreq;

rc = write(fd, &conf, sizeof(struct cap_config_info));

if ( rc == 0 )

return rc;

else

{

printf( " config for cap model failed! ");

exit(1);

}

}

用戶只需要調用此函數即可使能脈沖信號計數功能,并且計數功能開始計數。也可自己設置參數調用write使能cap模式。如:

#include "pwm_api.h"

unsigned intpolarity = PWM_POLARITY_NORMAL;

unsigned intmaxfreq = 200000000;

CAP_Start( fd, polarity, maxfreq );

c)在計數過程中可以調用read函數或者我們提供的CAP_Read函數讀取測量數值:

int CAP_Read(int fd, struct cap_config_info* conf )

{

printf ( "reading^^^^^^^ " );

int rc;

rc = read(fd, conf, sizeof(struct cap_config_info));

return rc;

}

用戶可根據自己需要在任意時刻選擇調用此函數或者直接調運read獲取測量值。

根據測量值可以計算脈沖頻率并轉換單位,注意測得dwCount小于2時其他參數均無效:

doublePeriodUs;//單位us

doubleWidthUs;//單位us

doubleDuty;//單位%

intCount;//個數

doubleFreq;//單位Hz

doubleAVGFreq;//單位Hz

unsigned int TimeUs;//單位us

CAP_Read ( fd, &conf );

Count = conf.dwCount;

if(Count>1)

{

PeriodUs = (double)conf.dwPeriodNs/1000.0;//單位轉換

WidthUs = (double)conf.dwWidthNs/1000.0;

Duty = (double)conf.dwWidthNs*100000.0/conf.dwPeriodNs;

Freq = CAP_CLK_FREQ/(double)conf.dwPeriodNs;

AVGFreq = (double)conf.dwCount*CAP_CLK_FREQ/(double)conf.dwTimeUs;

}

else

{

PeriodUs = 0;

WidthUs = 0;

Duty = 0;

Freq = 0;

AVGFreq = 0;

}

d)使用完成后需要關閉計數功能,同樣可以自行設置參數調用write或者使用CAP_Stop,也可以直接使用close關閉設備節點同事停止使用計數功能:

int CAP_Stop(int fd )

{

printf ( "stopping^^^^^^^ " );

int rc;

struct cap_config_infoconf;

memset( &conf, 0, sizeof(struct pwm_config_info));

conf.dwMaxFreq = 0;

rc = write(fd, &conf, sizeof(struct cap_config_info));

return rc;

}

調用上述函數:

CAP_Stop( fd);

使用完成后需要關閉設備節點。

close(fd);

e)觸發機制(選讀):

如下圖所示,在每一次上升沿或者下降沿處會觸發硬件捕獲功能,獲得輸入脈沖信號的參數并保存,應用程序中在任意時刻調用讀操作得到的數據是最近一次上升沿或下降沿處的數據。此圖中調用read1一之后調用read2,得到的計數值為2,時間差為(硬件觸發2-硬件觸發1)的時間差。用戶使用時請注意輸入信號有效時間段。所得時間不能作為兩次讀操作之間的時間差使用。如果要將讀取的時間值作為兩次讀操作的時間值需要在前一次讀操作后調用CAP_Start或直接用write函數傳遞相同參數清零硬件保存值。

4、實驗測量

由于硬件的限制,測得瞬時頻率、周期、占空比精度有限。硬件操作使用的時鐘信號為100MHz,即周期、有效脈寬時間只能得到高于10ns的數值。平均頻率的測量需要保證整個測量時間段內輸入脈沖信號一直有脈沖輸入!平均頻率的誤差整個測量范圍內不超過10Hz。實驗使用RIGOL DG1022 信號發生器作為外部脈沖信號源,可以調整信號周期占空比,設置一定時間內的脈沖個數。

頻率測量(kHz):

輸入 200.000 197.000 97.000 1.020
瞬間頻率 200.000 196.850 96.993 1.020
平均頻率 199.992 196.992 96.998 1.020

測得瞬時數據誤差隨頻率增加而變大,具體數據可根據測量時間最小值10NS進行計算。

在150KHz時測量的不同占空比值如下表:

輸入% 90.00 50.00 20.00 10.00
測得% 89.96 50.00 19.97 9.91

在100KHz時測量的不同占空比值如下表:

輸入% 90.00 50.00 20.00 10.00
測得% 90.00 50.00 20.00 10.00

在100KHz時連續測量的1S內脈沖個數如下表(信號源輸入個數設置模式上限50K個,通過設置信號源取不同輸入值):

輸入% 39 999 23 338 8 766 432
測得% 39 999 23 338 8 766 432

注:當頻率升高時,系統高負荷運轉,實際讀取時間差變化加大,如果連續讀取,讀到的計數值要以讀到的時間差為準進行數值判斷,實際讀取個數并無誤差。

計數值在允許輸入頻率內無誤差。

如果需要使用此功能或有任何疑問,請和我們聯系。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11314

    瀏覽量

    209794
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6085

    瀏覽量

    35421
收藏 人收藏

    評論

    相關推薦

    飛騰助力首屆教育信息技術應用創新大賽圓滿落幕

    近日,由中國教育技術協會主辦,教育部教育管理信息中心教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信工委會支持,北京航空航天
    的頭像 發表于 12-24 09:57 ?148次閱讀

    中科達榮獲2024年軟件和信息技術服務優秀企業

    及前百家企業”名單。中科達憑借非凡的技術實力與持續的創新能力,成功入選“2024年度軟件和信息技術服務競爭力百強企業”以及“2024年軟件和信息技術服務優秀企業”。
    的頭像 發表于 10-30 11:44 ?503次閱讀

    適用于AM335x TRF7970A的neard(Linux NFC)構建說明

    電子發燒友網站提供《適用于AM335x TRF7970A的neard(Linux NFC)構建說明.pdf》資料免費下載
    發表于 10-26 11:00 ?0次下載
    適用于AM<b class='flag-5'>335x</b> TRF7970A的neard(<b class='flag-5'>Linux</b> NFC)構建說明

    AM335x功耗估算工具

    電子發燒友網站提供《AM335x功耗估算工具.pdf》資料免費下載
    發表于 10-12 11:46 ?0次下載
    AM<b class='flag-5'>335x</b>功耗估算工具

    國產化背景下的工控主板發展現狀

    ,是信息技術應用創新產業的簡稱,于2016年“信工委會”(信息技術應用創新工作委員會)提出,目的就是要推動我們國內軟硬件關鍵技術的研發
    的頭像 發表于 09-21 16:15 ?430次閱讀

    AM335x硬件設計指南

    電子發燒友網站提供《AM335x硬件設計指南.pdf》資料免費下載
    發表于 09-19 11:05 ?0次下載
    AM<b class='flag-5'>335x</b>硬件設計指南

    高速脈沖數據采集如何實現

    人員的青睞。對此,物通博聯提供高速脈沖數據采集的IOT解決方案,實現低成本、高效率的項目搭建。 物通博聯推出的工業數采終端支持脈沖計數功能,能夠實現
    的頭像 發表于 08-26 17:31 ?426次閱讀
    高速<b class='flag-5'>脈沖</b>數據采集如何<b class='flag-5'>實現</b>

    具有脈沖計數接口的 LMT01-Q1 0.5°C 精度雙引腳數字輸出溫度傳感器數據表

    電子發燒友網站提供《具有脈沖計數接口的 LMT01-Q1 0.5°C 精度雙引腳數字輸出溫度傳感器數據表.pdf》資料免費下載
    發表于 08-13 09:20 ?0次下載
    具有<b class='flag-5'>脈沖計數</b>接口的 LMT01-Q1 0.5°C 精度雙引腳數字輸出溫度傳感器數據表

    具有脈沖計數接口的 LMT01 0.5°C 精度雙引腳數字輸出溫度傳感器數據表

    電子發燒友網站提供《具有脈沖計數接口的 LMT01 0.5°C 精度雙引腳數字輸出溫度傳感器數據表.pdf》資料免費下載
    發表于 08-13 09:19 ?0次下載
    具有<b class='flag-5'>脈沖計數</b>接口的 LMT01 0.5°C 精度雙引腳數字輸出溫度傳感器數據表

    esp8266的脈沖計數問題求解

    我正在編寫 nodemcu esp8266 的代碼,它涉及脈沖計數、存儲和返回 nodemcu,使用 raspberry pi 作為服務器。為此,我使用了 3 個 nodemcu esp8266
    發表于 07-10 06:49

    脈沖計數器的工作原理和基本結構

    脈沖計數器,作為電子測量和自動化控制領域中一種重要的設備,其工作原理和基本結構對于理解其功能和性能至關重要。脈沖計數器主要用于統計和測量脈沖信號的個數,具有高精度、高速度、高可靠性等特
    的頭像 發表于 05-15 17:14 ?2523次閱讀

    脈沖計數器的分類和作用

    在電子技術和數字系統中,脈沖計數器作為一種基本而重要的邏輯器件,其應用廣泛且功能多樣。脈沖計數器不僅能夠實現基本的
    的頭像 發表于 05-15 17:11 ?1263次閱讀

    簡單認識脈沖計數

    在數字電路和電子測量領域中,脈沖計數器作為一種基本而重要的工具,其應用十分廣泛。脈沖計數器,也被稱為脈沖頻率計或脈沖數計,主要用于統計和測量輸入脈沖
    的頭像 發表于 05-15 17:08 ?1830次閱讀

    stm8外部中斷用來脈沖計數,外部中斷開始計數,LED燈就不正常了的原因?

    外部中斷用來脈沖計數。不計數時,定時器正常,每秒翻轉一次LED燈。外部中斷開始計數,LED燈就不正常了,有時兩三秒,有時五六秒才翻轉。一開始以為是優先級,可是配置軟件優先級后還是一樣啊。。。大神們指點一下
    發表于 04-22 07:29

    電路中如何實現脈沖計數功能和相位檢測

    在進行DA轉換,頻率脈沖電壓轉換,pwm轉變成對應的模擬量,電路是怎么實現對固定要求長度或固定頻率脈沖個數進行計數進而轉換成模擬量的功能
    發表于 01-31 19:55
    主站蜘蛛池模板: 久久sese| 午夜在线观看免费完整直播网页| 性欧美xxxxporn| 国产亚洲精品久久久999无毒| 亚洲男同tv| 麻豆AV蜜桃AV久久| jzz大全18| 亚洲 欧美 国产 综合久久| 久久亚洲欧美国产综合| JIZZ19学生第一次| 亚洲大片在线观看| 免费看黄软件| 国产精品爽爽久久久久久竹菊| 亚洲伊人色综合久久天天伊人| 欧美精品AV一区二区无码| 国产乱码精品一区二区三区四川| 浴室里强摁做开腿呻吟的漫画| 漂亮妈妈中文字幕版| 国产无遮挡无码视频在线观看不卡| 最近中文字幕在线中文高清版 | 麻豆成人AV久久无码精品| 成人免费看片45分钟| 亚洲视频国产在线精品| 青草在线在线d青草在线| 激情女人花| 岛国精品在线观看| 在线视频中文字幕| 色悠久久久久综合网小说| 久久亚洲免费视频| 国产麻豆剧果冻传媒免费网站| 97在线精品视频免费| 亚洲国产精品嫩草影院| 亚洲午夜久久久无码精品网红A片| 麻美ゆま夫の目の前で犯| 国产精品久久人妻无码网站一区无 | 91久久综合精品国产丝袜长腿| 午理论理影片被窝| 青青草原成人| 龙泽罗拉av| 国精产品一区二区三区有限公司| wwwwxxxxx中国|