專利名稱:一種對(duì)脈沖數(shù)據(jù)進(jìn)行采樣的方法
一種對(duì)脈沖數(shù)據(jù)進(jìn)行采樣的方法
技術(shù)領(lǐng)域:
本發(fā)明屬于一種對(duì)脈沖數(shù)據(jù)進(jìn)行采樣的方法,適用于具有脈沖數(shù)據(jù)采樣功能的終
端廣品。
背景技術(shù):
隨著物聯(lián)網(wǎng)產(chǎn)業(yè)的發(fā)生,要求越來越多的終端產(chǎn)品具有脈沖數(shù)據(jù)采樣的功能,例如對(duì)黑白攝像頭,一維激光頭輸出的脈沖數(shù)據(jù)做采樣和處理。傳統(tǒng)的對(duì)脈沖數(shù)據(jù)進(jìn)行采樣的做法主要有兩種。第一種方法如圖1所示,把產(chǎn)生脈沖的GPIO引腳連接到CPU的一個(gè)外部中斷引腳上。并把此外部中斷配置為雙邊緣觸發(fā),這樣只要脈沖的狀態(tài)一變化,就會(huì)觸發(fā)中斷,在中斷處理程序中計(jì)算并保存兩個(gè)脈沖邊緣的時(shí)間間隔。第二種方法如圖2所示,擴(kuò)張一顆專門負(fù)責(zé)脈沖數(shù)據(jù)采樣的芯片,芯片通過串口,USB等接口與CPU互聯(lián)。第一種方法不需要額外添加硬件就能完成采樣功能。實(shí)現(xiàn)成本低,但是會(huì)由于中斷處理存在延時(shí)而導(dǎo)致采樣精度不高,而且采樣過程需要CPU的參與會(huì)導(dǎo)致系統(tǒng)負(fù)荷增加。所以這并不是一種可產(chǎn)品化的方法,只能用于熟悉原理所用。第二種方法算是一種完美的方法,但是這需要添加額外的硬件,會(huì)導(dǎo)致產(chǎn)品成本的增加。
發(fā)明內(nèi)容本發(fā)明所要解決的技術(shù)問題在于提供一種低成本、高精度的脈沖數(shù)據(jù)采樣方法, 該方法無需添加額外硬件,且具有較高采樣精度和采樣性能。本發(fā)明采用以下技術(shù)方案解決上述技術(shù)問題一種對(duì)脈沖數(shù)據(jù)進(jìn)行采樣的方法,包括如下步驟步驟1 首先初始化相應(yīng)SPI接口的GPIO引腳;步驟2 設(shè)置SPI總線的時(shí)鐘,即脈沖數(shù)據(jù)的采樣時(shí)鐘;步驟3 初始化DMA控制器,并設(shè)置采樣數(shù)據(jù)的保存地址;步驟4 當(dāng)要開始采集時(shí),就使能SPI接口,對(duì)MISO上輸入的脈沖做采樣;步驟5 =SPI每采樣到4個(gè)字節(jié)的數(shù)據(jù)就發(fā)起一個(gè)DMA請(qǐng)求,DMA控制器會(huì)把數(shù)據(jù)保存到指定的內(nèi)存位置;步驟6 當(dāng)采樣結(jié)束之后,所有采樣到的數(shù)據(jù)保存在步驟3指定的位置;步驟7 根據(jù)步驟2設(shè)置的采樣時(shí)鐘,可以計(jì)算出SPI每采樣一位數(shù)據(jù)所花費(fèi)的時(shí)間;步驟8 轉(zhuǎn)義采樣到的數(shù)據(jù),按位來對(duì)數(shù)據(jù)解析;如果連續(xù)位的值為0,就說明這部分采樣數(shù)據(jù)對(duì)應(yīng)的是低脈沖,把連續(xù)為0的位數(shù)和步驟7的值相乘便可計(jì)算出低脈沖的時(shí)間寬度;如果連續(xù)位的值為1,就說明這部分采樣數(shù)據(jù)對(duì)應(yīng)的是高脈沖,把連續(xù)為1的位數(shù)和步驟7的值相乘可計(jì)算出高脈沖的時(shí)間寬度。
本發(fā)明的優(yōu)點(diǎn)在于把產(chǎn)生脈沖的GPIO直接連到CPU SPI接口的MISO引腳上,利用CPU現(xiàn)有的SPI接口來代替CPU進(jìn)行脈沖數(shù)據(jù)的采樣,采樣到的數(shù)據(jù)由DMA來代替負(fù)責(zé)保存。無需添加額外的硬件就可以實(shí)現(xiàn)高精度,高性能的脈沖數(shù)據(jù)采樣。具有很好的實(shí)現(xiàn)效果和較低的實(shí)現(xiàn)成本。
下面參照附圖結(jié)合實(shí)施例對(duì)本發(fā)明作進(jìn)一步的描述。圖1是現(xiàn)有技術(shù)之一的邏輯連接框圖。圖2是現(xiàn)有技術(shù)之二的邏輯連接框圖。 圖3是本發(fā)明的邏輯連接框圖。圖4是本發(fā)明的硬件原理圖。圖5是本發(fā)明的軟件控制流程。
具體實(shí)施方式請(qǐng)同時(shí)參閱圖3至圖5,一種對(duì)脈沖數(shù)據(jù)進(jìn)行采樣的方法,包括如下步驟步驟1 首先初始化相應(yīng)SPI接口的GPIO引腳;步驟2 設(shè)置SPI總線的時(shí)鐘,即脈沖數(shù)據(jù)的采樣時(shí)鐘;步驟3 初始化DMA控制器,并設(shè)置采樣數(shù)據(jù)的保存地址;步驟4 當(dāng)要開始采集時(shí),就使能SPI接口,對(duì)MISO上輸入的脈沖做采樣;步驟5 =SPI每采樣到4個(gè)字節(jié)的數(shù)據(jù)就發(fā)起一個(gè)DMA請(qǐng)求,DMA控制器會(huì)把數(shù)據(jù)保存到指定的內(nèi)存位置;步驟6 當(dāng)采樣結(jié)束之后,所有采樣到的數(shù)據(jù)保存在步驟3指定的位置;步驟7 根據(jù)步驟2設(shè)置的采樣時(shí)鐘,可以計(jì)算出SPI每采樣一位數(shù)據(jù)所花費(fèi)的時(shí)間;步驟8 轉(zhuǎn)義采樣到的數(shù)據(jù),按位來對(duì)數(shù)據(jù)解析;如果連續(xù)位的值為0,就說明這部分采樣數(shù)據(jù)對(duì)應(yīng)的是低脈沖,把連續(xù)為0的位數(shù)和步驟7的值相乘便可計(jì)算出低脈沖的時(shí)間寬度;如果連續(xù)位的值為1,就說明這部分采樣數(shù)據(jù)對(duì)應(yīng)的是高脈沖,把連續(xù)為1的位數(shù)和步驟7的值相乘可計(jì)算出高脈沖的時(shí)間寬度。這樣,便可數(shù)值化輸入的整個(gè)脈沖波形。本發(fā)明中,把輸出脈沖的GPIO引腳連接至CPU SPI接口的MISO引腳,也就是把脈沖作為SPI接口的輸入數(shù)據(jù),當(dāng)脈沖為低時(shí),SPI采樣到的數(shù)據(jù)就為0,當(dāng)脈沖為高時(shí),SPI 采樣到的數(shù)據(jù)就為1。所以只要求出連續(xù)為0或?yàn)?的位數(shù),再根據(jù)采樣精度就可以求出脈沖的時(shí)間寬度。由于SPI控制器的FIFO大小有限,所以必須及時(shí)取走采樣到的數(shù)據(jù)。否則就會(huì)發(fā)生FIFO溢出,導(dǎo)致采樣數(shù)據(jù)的丟失。所以為了防止中斷處理延時(shí)導(dǎo)致FIFO溢出和降低采樣過程中系統(tǒng)的負(fù)荷,本發(fā)明采用DMA的方式把采樣數(shù)據(jù)及時(shí)轉(zhuǎn)移直指定的內(nèi)存位置。本發(fā)明把產(chǎn)生脈沖的GPIO直接連到CPU SPI接口的MISO引腳上,利用CPU現(xiàn)有的SPI接口來代替CPU進(jìn)行脈沖數(shù)據(jù)的采樣,采樣到的數(shù)據(jù)由DMA來代替負(fù)責(zé)保存。無需添加額外的硬件就可以實(shí)現(xiàn)高精度,高性能的脈沖數(shù)據(jù)采樣。具有很好的實(shí)現(xiàn)效果和較低的實(shí)現(xiàn)成本。
權(quán)利要求
1. 一種對(duì)脈沖數(shù)據(jù)進(jìn)行采樣的方法,其特征在于包括如下步驟 步驟1 首先初始化相應(yīng)SPI接口的GPIO引腳; 步驟2 設(shè)置SPI總線的時(shí)鐘,即脈沖數(shù)據(jù)的采樣時(shí)鐘; 步驟3 初始化DMA控制器,并設(shè)置采樣數(shù)據(jù)的保存地址; 步驟4 當(dāng)要開始采集時(shí),就使能SPI接口,對(duì)MISO上輸入的脈沖做采樣; 步驟5 =SPI每采樣到4個(gè)字節(jié)的數(shù)據(jù)就發(fā)起一個(gè)DMA請(qǐng)求,DMA控制器會(huì)把數(shù)據(jù)保存到指定的內(nèi)存位置;步驟6 當(dāng)采樣結(jié)束之后,所有采樣到的數(shù)據(jù)保存在步驟3指定的位置; 步驟7 根據(jù)步驟2設(shè)置的采樣時(shí)鐘,可以計(jì)算出SPI每采樣一位數(shù)據(jù)所花費(fèi)的時(shí)間; 步驟8 轉(zhuǎn)義采樣到的數(shù)據(jù),按位來對(duì)數(shù)據(jù)解析;如果連續(xù)位的值為0,就說明這部分采樣數(shù)據(jù)對(duì)應(yīng)的是低脈沖,把連續(xù)為0的位數(shù)和步驟7的值相乘便可計(jì)算出低脈沖的時(shí)間寬度;如果連續(xù)位的值為1,就說明這部分采樣數(shù)據(jù)對(duì)應(yīng)的是高脈沖,把連續(xù)為1的位數(shù)和步驟7的值相乘可計(jì)算出高脈沖的時(shí)間寬度。
全文摘要
一種對(duì)脈沖數(shù)據(jù)進(jìn)行采樣的方法,把產(chǎn)生脈沖的GPIO直接連到CPU SPI接口的MISO引腳上,利用CPU現(xiàn)有的SPI接口來代替CPU進(jìn)行脈沖數(shù)據(jù)的采樣,采樣到的數(shù)據(jù)由DMA來代替負(fù)責(zé)保存。當(dāng)脈沖為低時(shí),SPI采樣到的數(shù)據(jù)就為0,當(dāng)脈沖為高時(shí),SPI采樣到的數(shù)據(jù)就為1。所以只要求出連續(xù)為0或?yàn)?的位數(shù),再根據(jù)采樣精度就可以求出脈沖的時(shí)間寬度。本發(fā)明無需添加額外的硬件就可以實(shí)現(xiàn)高精度,高性能的脈沖數(shù)據(jù)采樣。具有很好的實(shí)現(xiàn)效果和較低的實(shí)現(xiàn)成本。
文檔編號(hào)H03K19/0175GK102163967SQ20111000968
公開日2011年8月24日 申請(qǐng)日期2011年1月17日 優(yōu)先權(quán)日2011年1月17日
發(fā)明者趙進(jìn)云 申請(qǐng)人:福建鑫諾通訊技術(shù)有限公司