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

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

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

英利工控主板的多通道數(shù)據(jù)采集方案

英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2019-10-27 11:19 ? 次閱讀

使用英利工控主板進(jìn)行簡(jiǎn)單的擴(kuò)展,可以構(gòu)成一個(gè)多通道AD數(shù)據(jù)采集方案。這一方案的原理是通過(guò)英利工控主板的精簡(jiǎn)ISA總線擴(kuò)展一片TLC2543,,即可以實(shí)現(xiàn)8路模擬量輸入。其中輸入量程0-5V,AD轉(zhuǎn)換精度12bit,AD轉(zhuǎn)換速度100Ksps。

硬件部分
該方案的主要硬件構(gòu)成如下:

其中TLC2543通過(guò)4線制SPI接口與英利工控主板連接,具體信號(hào)定義如下:
(1)SPI_CS:SPI片選信號(hào),低電平有效;從英利工控主板輸出,接到TLC2543
(2)SPI_CK:SPI接口的同步時(shí)鐘信號(hào);從英利工控主板輸出,接到TLC2543
(3)SPI_DO:SPI接口數(shù)據(jù)輸出,從英利工控主板輸出的轉(zhuǎn)換命令,輸入到TLC2543
(4)SPI_DI:SPI接口數(shù)據(jù)輸入,從AD芯片輸出的轉(zhuǎn)換數(shù)據(jù),輸入到英利工控主板

此時(shí)可以采用英利工控主板的GPIO模擬出SPI接口(以EM9160為例):
#define SPI_CS GPIO15
#define SPI_CLK GPIO14
#define SPI_DOUT GPIO13
#define SPI_DINGPIO12
#define SPI_EOC GPIO10

除AD輸入以外,該應(yīng)用底板還有如下接口:
(1)1個(gè)10M/100M以太網(wǎng)接口
(2)4個(gè)帶隔離RS485總線接口,1個(gè)RS232串口,1個(gè)TTL串口
(3)2個(gè)USB Host接口,1個(gè)USB Device接口
(4)單色點(diǎn)陣液晶接口(支持LCD對(duì)比度調(diào)節(jié)和背光控制)
(5)矩陣鍵盤(pán)和LED接口
(6)精簡(jiǎn)ISA總線接口

該應(yīng)用底板和英利工控主板配套,已經(jīng)可以滿足一般的數(shù)采應(yīng)用需求。如果客戶需要更多的數(shù)據(jù)輸入,可以參考該應(yīng)用底板的方式進(jìn)一步擴(kuò)展;如果客戶需要更多的其他功能,可以參考英利的開(kāi)發(fā)評(píng)估底板和功能擴(kuò)展模塊進(jìn)行設(shè)計(jì)。

軟件部分
TLC2543是4線制SPI接口,因此它的讀寫(xiě)操作是同時(shí)進(jìn)行的,即所謂全雙工串行數(shù)據(jù)傳輸。在構(gòu)造函數(shù)時(shí),需要仔細(xì)研究AD芯片數(shù)據(jù)手冊(cè)上提供的SPI接口時(shí)序關(guān)系,如下圖所示:

軟件開(kāi)發(fā)過(guò)程中需注意以下幾點(diǎn):
1、在SPI_CS片選有效后,TLC2543將把上次AD轉(zhuǎn)換的數(shù)據(jù),按MSB在先的順序,呈現(xiàn)在SPI_DI信號(hào)線上,并在SPI_CK的
下降沿更新數(shù)據(jù)
2、SPI_CK的上升沿將把對(duì)AD芯片的操作指令鎖存到AD芯片,輸出的數(shù)據(jù)也是按MSB在先的順序
3、輸入AD的操作指令只有8個(gè)bit,而從AD讀出的轉(zhuǎn)換數(shù)據(jù)有12個(gè)bit,在讀入低4bit時(shí),輸入指令用“0”填充
4、芯片數(shù)據(jù)手冊(cè)中串行輸入輸出數(shù)據(jù)與我們的定義SPI_DO和SPI_DI是正好相反的
5、讀出的數(shù)據(jù)須經(jīng)過(guò)格式轉(zhuǎn)換,才能轉(zhuǎn)為通常所見(jiàn)的電壓值

據(jù)上所述,可以構(gòu)建相應(yīng)的操作函數(shù)如下:

// TLC2543的SPI接口初始化函數(shù)
int SPI_Init( int fd )
{
SPI_OutEnable( fd, SPI_CS );
SPI_OutEnable( fd, SPI_CLK );
SPI_OutEnable( fd, SPI_DOUT );
SPI_OutDisable( fd, SPI_DIN );
SPI_OutDisable( fd, SPI_EOC );
SPI_OutSet( fd, SPI_CS );
SPI_OutClear( fd, SPI_CLK );
return 1;
}
// 輸出使能
int SPI_OutEnable( int fd, unsigned int dwEnBits )
{
int rc;
rc = ioctl( fd, EM9X60_GPIO_IOCTL_OUT_ENABLE, &dwEnBits );
return rc;
}
// 輸出禁止
int SPI_OutDisable( int fd, unsigned int dwDisBits )
{
int rc;
rc = ioctl( fd, EM9X60_GPIO_IOCTL_OUT_DISABLE, &dwDisBits );
return rc;
}
// 位置高
int SPI_OutSet( int fd, unsigned int dwSetBits )
{
int rc;
rc = ioctl( fd, EM9X60_GPIO_IOCTL_OUT_SET, &dwSetBits );
return rc;
}
// 位置低
int SPI_OutClear( int fd, unsigned int dwClearBits )
{
int rc;
rc = ioctl( fd, EM9X60_GPIO_IOCTL_OUT_CLEAR, &dwClearBits );
return rc;
}
// 讀取位狀態(tài)
int SPI_PinState( int fd, unsigned int* pPinState )
{
int rc;
unsigned int dwCurrPinState;
rc = ioctl( fd, EM9X60_GPIO_IOCTL_PIN_STATE, &dwCurrPinState );
if( rc == 0 )
*pPinState = dwCurrPinState;
return rc;
}
// 格式轉(zhuǎn)換為電壓值
float GetDeltaV( )
{
int i1;
unsigned int i2 = 0;
for( i1=0; i1<10; i1++ )
i2 += ADData[i1];
result = (i2/10) * DeltaV;
return result;
}

該應(yīng)用方案程序的核心部分是數(shù)據(jù)處理函數(shù)int ReadAD( int ChNum ),該函數(shù)將模擬量讀出并轉(zhuǎn)換為浮點(diǎn)數(shù)格式,其相關(guān)處理代碼如下:

int ReadAD( int ChNum )
{
unsigned int i1 = 0;
int i2, i3;
unsigned int dwPinState;
unsigned int CtrlBit;
// 將控制字轉(zhuǎn)換為標(biāo)準(zhǔn)的12位
CtrlBit = (unsigned int)ChNum << 4;
SPI_OutClear( fd, SPI_CS );
// 等待轉(zhuǎn)換完成
for( i2=0; i2<100; i2++ )
{
SPI_PinState( fd, &dwPinState );
if( dwPinState & SPI_EOC );
break;
}
// 轉(zhuǎn)換失敗處理
if( i2 >= 100 )
{
SPI_OutSet( fd, SPI_CS );
return -14;
}
// 第一次讀出的是無(wú)效數(shù)據(jù),讀出并且扔掉
for( i2=0; i2<12; i2++ )
{
i1 = i1 << 1;
SPI_PinState( fd, &dwPinState );
if( dwPinState & SPI_DIN )
i1 = i1 | 0x01;
if( CtrlBit & 0x800 )
SPI_OutSet( fd, SPI_DOUT );
else
SPI_OutClear( fd, SPI_DOUT );
SPI_OutSet( fd, SPI_CLK );
SPI_OutClear( fd, SPI_CLK );
CtrlBit = CtrlBit << 1;
}
// 正式讀取數(shù)據(jù),讀十次,交由后面的GetDeltaV( )函數(shù)取平均值并轉(zhuǎn)換為電壓
for( i3=0; i3<10; i3++ )
{
i1 = 0;
CtrlBit = (unsigned int)ChNum << 4;
for( i2=0; i2<100; i2++ )
{
SPI_PinState( fd, &dwPinState );
if( dwPinState & SPI_EOC );
break;
}
if( i2 >= 100 )
{
SPI_OutSet( fd, SPI_CS );
return -12;
}
for( i2=0; i2<12; i2++ )
{
i1 = i1 << 1;
SPI_PinState( fd, &dwPinState );
if( dwPinState & SPI_DIN )
i1 = i1 | 0x01;
if( CtrlBit & 0x800 )
SPI_OutSet( fd, SPI_DOUT );
else
SPI_OutClear( fd, SPI_DOUT );
SPI_OutSet( fd, SPI_CLK );
SPI_OutClear( fd, SPI_CLK );
CtrlBit = CtrlBit << 1;
}
ADData[i3] = i1;
}
SPI_OutSet( fd, SPI_CS );
GetDeltaV( );
return 1;
}

該方案的主流程如下:

int main( )
{
int i;
// 定義8個(gè)數(shù)據(jù)輸入通道
int AIN[8] = {0x00,0x10,0x20,0x30,0x40,0x50,0x60,0x70};
fd = open( '/dev/em9x60_gpio', O_RDWR );
printf( 'open file = %d\n', fd );
// 初始化SPI端口
SPI_Init( fd );
// 嵌入式程序,總是無(wú)限循環(huán)執(zhí)行
for( ; ; )
{
// 循環(huán)讀取八個(gè)通道的數(shù)據(jù)
for( i=0; i<8; i++ )
{
ReadAD( AIN[i] );
printf( 'the result = %.2f V\n', result );
}
printf( '\n' );
sleep( 2 );
}
return 1;
}

聲明:本文內(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)投訴
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6086

    瀏覽量

    35476
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    通道數(shù)據(jù)采集是什么概念?

    比如我要采集壓力,流量和轉(zhuǎn)速三個(gè)變量,這個(gè)屬于通道數(shù)據(jù)采集嗎?由于剛結(jié)束數(shù)據(jù)采集,問(wèn)題可能比較簡(jiǎn)單!謝謝
    發(fā)表于 06-04 15:42

    通道數(shù)據(jù)采集保存的例子

    誰(shuí)有又數(shù)據(jù)采集器USB 1608用labview編寫(xiě)的通道數(shù)據(jù)采集保存回放的例子呀
    發(fā)表于 01-07 10:42

    ESM335x系列工控主板通道數(shù)據(jù)采集方案

    要求高精度采樣間隔的波形數(shù)據(jù)采集。ETA108波形數(shù)據(jù)采集模塊可廣泛應(yīng)用于通道波形記錄儀、電力諧波分析、故障錄波、振動(dòng)信號(hào)分析、瞬態(tài)信號(hào)采集
    發(fā)表于 07-20 14:33

    通道數(shù)據(jù)采集方案

    通用的數(shù)據(jù)采集卡多為八通道或者十六通道,但有一些大型監(jiān)測(cè)項(xiàng)目,比如多臺(tái)數(shù)控機(jī)床的監(jiān)測(cè),需要采集幾十個(gè)點(diǎn)的數(shù)據(jù),這不是疊加幾塊卡那么簡(jiǎn)單,需
    發(fā)表于 01-17 10:52

    labview通道數(shù)據(jù)采集與存儲(chǔ)

    labview如何進(jìn)行通道數(shù)據(jù)采集并進(jìn)行數(shù)據(jù)存儲(chǔ),采集后提取單通道
    發(fā)表于 11-10 09:22

    基于CVI的通道數(shù)據(jù)采集系統(tǒng)

    基于計(jì)算機(jī)技術(shù)及虛擬儀器平臺(tái)LabWindows/CVI 開(kāi)發(fā)了通道實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)。系統(tǒng)采用ACL-8112PG 數(shù)據(jù)采集卡作為數(shù)據(jù)采集
    發(fā)表于 12-31 15:10 ?79次下載

    基于FPGA的通道同步數(shù)據(jù)采集存儲(chǔ)系統(tǒng)

    設(shè)計(jì)一種基于FPGA的通道同步數(shù)據(jù)采集存儲(chǔ)系統(tǒng),分為通道同步數(shù)據(jù)采集模塊和
    發(fā)表于 12-27 15:31 ?70次下載

    基于FPGA的通道數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)

    基于FPGA的通道數(shù)據(jù)采集系統(tǒng)設(shè)計(jì),下來(lái)看看。
    發(fā)表于 05-10 13:45 ?61次下載

    創(chuàng)信息技術(shù)Linux主板通道視頻采集方案簡(jiǎn)介

    工業(yè)應(yīng)用。進(jìn)一步,ESM7100的還配置高速PCIe接口,使其可滿足工業(yè)視頻監(jiān)控對(duì)高速數(shù)據(jù)采集的需求。本文主要介紹基于創(chuàng)公司ESM7100的通道視頻
    的頭像 發(fā)表于 02-12 11:00 ?1576次閱讀
    <b class='flag-5'>英</b>創(chuàng)信息技術(shù)Linux<b class='flag-5'>主板</b><b class='flag-5'>多</b><b class='flag-5'>通道</b>視頻<b class='flag-5'>采集</b><b class='flag-5'>方案</b>簡(jiǎn)介

    通道數(shù)據(jù)采集系統(tǒng)的優(yōu)缺點(diǎn)

    通道數(shù)據(jù)采集系統(tǒng)是一種廣泛應(yīng)用于工業(yè)、科研、醫(yī)療等領(lǐng)域的技術(shù),它能夠同時(shí)采集多個(gè)通道的信號(hào),實(shí)現(xiàn)對(duì)多種物理量的實(shí)時(shí)監(jiān)測(cè)和分析。本文將詳細(xì)介
    的頭像 發(fā)表于 07-01 15:58 ?1797次閱讀

    通道數(shù)據(jù)采集系統(tǒng)的轉(zhuǎn)換誤差怎么算

    通道數(shù)據(jù)采集系統(tǒng)是一種廣泛應(yīng)用于工業(yè)、科研、醫(yī)療等領(lǐng)域的高精度數(shù)據(jù)采集設(shè)備。它通過(guò)多個(gè)通道同時(shí)采集
    的頭像 發(fā)表于 07-01 16:36 ?773次閱讀

    通道數(shù)據(jù)采集串?dāng)_問(wèn)題怎么解決

    通道數(shù)據(jù)采集系統(tǒng)在現(xiàn)代工業(yè)、科研和醫(yī)療等領(lǐng)域中有著廣泛的應(yīng)用。然而,在通道數(shù)據(jù)采集過(guò)程中,串
    的頭像 發(fā)表于 07-02 08:58 ?1362次閱讀

    通道數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)的意義

    通道數(shù)據(jù)采集系統(tǒng)(Multi-channel Data Acquisition System, 簡(jiǎn)稱MDAS)是一種能夠同時(shí)采集、處理和存儲(chǔ)多個(gè)信號(hào)源
    的頭像 發(fā)表于 07-02 09:00 ?957次閱讀

    通道數(shù)據(jù)采集器的特點(diǎn)和功能有哪些

    通道數(shù)據(jù)采集器是一種廣泛應(yīng)用于工業(yè)自動(dòng)化、科研實(shí)驗(yàn)、環(huán)境監(jiān)測(cè)等領(lǐng)域的設(shè)備,它具有多個(gè)通道,可以同時(shí)采集多個(gè)信號(hào),實(shí)現(xiàn)
    的頭像 發(fā)表于 07-02 09:05 ?976次閱讀

    通道數(shù)據(jù)采集儀怎么用的

    通道數(shù)據(jù)采集儀是一種廣泛應(yīng)用于工業(yè)、科研、教育等領(lǐng)域的高精度數(shù)據(jù)采集設(shè)備。它能夠同時(shí)采集多個(gè)通道
    的頭像 發(fā)表于 07-02 09:08 ?686次閱讀