在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

英利工控主板的多通道數據采集方案

英創信息技術 ? 作者:英創信息技術 ? 2019-10-27 11:19 ? 次閱讀

使用英利工控主板進行簡單的擴展,可以構成一個多通道AD數據采集方案。這一方案的原理是通過英利工控主板的精簡ISA總線擴展一片TLC2543,,即可以實現8路模擬量輸入。其中輸入量程0-5V,AD轉換精度12bit,AD轉換速度100Ksps。

硬件部分
該方案的主要硬件構成如下:

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

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

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

該應用底板和英利工控主板配套,已經可以滿足一般的數采應用需求。如果客戶需要更多的數據輸入,可以參考該應用底板的方式進一步擴展;如果客戶需要更多的其他功能,可以參考英利的開發評估底板和功能擴展模塊進行設計。

軟件部分
TLC2543是4線制SPI接口,因此它的讀寫操作是同時進行的,即所謂全雙工串行數據傳輸。在構造函數時,需要仔細研究AD芯片數據手冊上提供的SPI接口時序關系,如下圖所示:

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

據上所述,可以構建相應的操作函數如下:

// TLC2543的SPI接口初始化函數
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;
}
// 讀取位狀態
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;
}
// 格式轉換為電壓值
float GetDeltaV( )
{
int i1;
unsigned int i2 = 0;
for( i1=0; i1<10; i1++ )
i2 += ADData[i1];
result = (i2/10) * DeltaV;
return result;
}

該應用方案程序的核心部分是數據處理函數int ReadAD( int ChNum ),該函數將模擬量讀出并轉換為浮點數格式,其相關處理代碼如下:

int ReadAD( int ChNum )
{
unsigned int i1 = 0;
int i2, i3;
unsigned int dwPinState;
unsigned int CtrlBit;
// 將控制字轉換為標準的12位
CtrlBit = (unsigned int)ChNum << 4;
SPI_OutClear( fd, SPI_CS );
// 等待轉換完成
for( i2=0; i2<100; i2++ )
{
SPI_PinState( fd, &dwPinState );
if( dwPinState & SPI_EOC );
break;
}
// 轉換失敗處理
if( i2 >= 100 )
{
SPI_OutSet( fd, SPI_CS );
return -14;
}
// 第一次讀出的是無效數據,讀出并且扔掉
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;
}
// 正式讀取數據,讀十次,交由后面的GetDeltaV( )函數取平均值并轉換為電壓
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個數據輸入通道
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 );
// 嵌入式程序,總是無限循環執行
for( ; ; )
{
// 循環讀取八個通道的數據
for( i=0; i<8; i++ )
{
ReadAD( AIN[i] );
printf( 'the result = %.2f V\n', result );
}
printf( '\n' );
sleep( 2 );
}
return 1;
}

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

    關注

    7

    文章

    6086

    瀏覽量

    35641
收藏 人收藏

    評論

    相關推薦

    通道數據采集保存的例子

    誰有又數據采集器USB 1608用labview編寫的通道數據采集保存回放的例子呀
    發表于 01-07 10:42

    ESM335x系列工控主板通道數據采集方案

    要求高精度采樣間隔的波形數據采集。ETA108波形數據采集模塊可廣泛應用于通道波形記錄儀、電力諧波分析、故障錄波、振動信號分析、瞬態信號采集
    發表于 07-20 14:33

    通道數據采集方案

    通用的數據采集卡多為八通道或者十六通道,但有一些大型監測項目,比如多臺數控機床的監測,需要采集幾十個點的數據,這不是疊加幾塊卡那么簡單,需
    發表于 01-17 10:52

    labview通道數據采集與存儲

    labview如何進行通道數據采集并進行數據存儲,采集后提取單通道
    發表于 11-10 09:22

    基于CVI的通道數據采集系統

    基于計算機技術及虛擬儀器平臺LabWindows/CVI 開發了通道實時數據采集系統。系統采用ACL-8112PG 數據采集卡作為數據采集
    發表于 12-31 15:10 ?79次下載

    基于FPGA的通道同步數據采集存儲系統

    設計一種基于FPGA的通道同步數據采集存儲系統,分為通道同步數據采集模塊和
    發表于 12-27 15:31 ?70次下載

    基于FPGA的通道數據采集系統設計

    基于FPGA的通道數據采集系統設計,下來看看。
    發表于 05-10 13:45 ?61次下載

    EM9460工控主板為例的串口擴展應用方案

    本文以EM9460工控主板為例,然而該方案完全適用于EM9x60系列工控
    的頭像 發表于 10-27 11:14 ?2761次閱讀
    EM9460<b class='flag-5'>工控</b><b class='flag-5'>主板</b>為例的串口擴展應用<b class='flag-5'>方案</b>

    創信息技術Linux主板通道視頻采集方案簡介

    工業應用。進一步,ESM7100的還配置高速PCIe接口,使其可滿足工業視頻監控對高速數據采集的需求。本文主要介紹基于創公司ESM7100的通道視頻
    的頭像 發表于 02-12 11:00 ?1609次閱讀
    <b class='flag-5'>英</b>創信息技術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>簡介

    通道數據采集系統的優缺點

    通道數據采集系統是一種廣泛應用于工業、科研、醫療等領域的技術,它能夠同時采集多個通道的信號,實現對多種物理量的實時監測和分析。本文將詳細介
    的頭像 發表于 07-01 15:58 ?1932次閱讀

    通道數據采集系統的轉換誤差怎么算

    通道數據采集系統是一種廣泛應用于工業、科研、醫療等領域的高精度數據采集設備。它通過多個通道同時采集
    的頭像 發表于 07-01 16:36 ?812次閱讀

    通道數據采集串擾問題怎么解決

    通道數據采集系統在現代工業、科研和醫療等領域中有著廣泛的應用。然而,在通道數據采集過程中,串
    的頭像 發表于 07-02 08:58 ?1526次閱讀

    通道數據采集系統的設計的意義

    通道數據采集系統(Multi-channel Data Acquisition System, 簡稱MDAS)是一種能夠同時采集、處理和存儲多個信號源
    的頭像 發表于 07-02 09:00 ?1052次閱讀

    通道數據采集器的特點和功能有哪些

    通道數據采集器是一種廣泛應用于工業自動化、科研實驗、環境監測等領域的設備,它具有多個通道,可以同時采集多個信號,實現
    的頭像 發表于 07-02 09:05 ?1106次閱讀

    通道數據采集儀怎么用的

    通道數據采集儀是一種廣泛應用于工業、科研、教育等領域的高精度數據采集設備。它能夠同時采集多個通道
    的頭像 發表于 07-02 09:08 ?758次閱讀
    主站蜘蛛池模板: 性久久久久久久久 | 亚洲字幕久久 | 亚洲伦理一区二区 | 亚洲午夜视频在线 | 午夜视| 国产又黄又爽又猛的免费视频播放 | 人成网站在线观看 | 99国产福利 | 2019天天操天天干天天透 | 午夜色a大片在线观看免费 午夜色大片在线观看 | 红色一级毛片 | 日韩在线三级视频 | 久久久xxx | 免费特黄视频 | 欧美性天天 | 国产三级 在线播放 | 91大神精品在线观看 | 久久久久久久国产免费看 | 你懂的网站在线 | 天堂在线资源网 | 2021最新久久久视精品爱 | 手机看福利片 | 国产色中色 | 久久老色鬼天天综合网观看 | 国产三级精品三级在线观看 | 在线观看你懂的网址 | 34pao强力打造免费永久视频 | 伊人啪啪| 国产精品美女一区二区三区 | 操到喷水| 日韩免费视频一区 | 特黄特级毛片免费视 | 日本一区二区三区在线 视频观看免费 | 中文字幕日韩三级 | 成年人电影黄色 | 久久精品国产亚洲5555 | 五月激情五月婷婷 | 女人张开腿双腿让男人桶 | 成人亚洲视频 | 国产精品美女免费视频大全 | 伊人久久大香线蕉综合影 |