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

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

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

英創(chuàng)信息技術(shù)EM9280主板SPI訪問TLC2543 AD示例

英創(chuàng)信息技術(shù) ? 來源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-01-17 08:58 ? 次閱讀

英創(chuàng)EM9280工控主板帶有半雙工的硬件SPI,與SPI協(xié)議的芯片通信時(shí)比使用GPIO模擬時(shí)序更加簡單方便。本文以TLC2543芯片為例,介紹如何使用SPI獲得芯片的AD數(shù)據(jù)。也為客戶使用SPI驅(qū)動(dòng)與其它型號(hào)芯片通信提供參考。

TLC2543芯片簡介

TLC2543是德州儀器公司生產(chǎn)的12位開關(guān)電容型逐次逼近模數(shù)轉(zhuǎn)換器,有11路AD輸入。參考芯片手冊(cè)資料,TLC2543支持8bit,12bit,16bit 的SPI協(xié)議,EM9280可以使用8bit和16bit的SPI與TLC2543通信。TLC2543是12位的AD,所以8bit會(huì)省略4位數(shù)據(jù),而16bit會(huì)添加4位軟件模擬數(shù)據(jù)。本文只介紹16bit的使用方法。

參考芯片數(shù)據(jù)手冊(cè)。

上圖為TLC2543 16bit的時(shí)序圖,我們可以設(shè)置SPI為16bit,數(shù)據(jù)長度1字節(jié)來訪問。

TLC2543發(fā)送數(shù)據(jù)定義,例如需要訪問AIN6,即D7-D4為0110。讀取數(shù)據(jù)采用單極性,MSB first,8bit,即D3-D0為0100。那么發(fā)送的1字節(jié)數(shù)據(jù)就為b0110 0100,即0x64。

因?yàn)镋M9280的SPI為半雙工,第一次16bit發(fā)送數(shù)據(jù),第二次16bit讀入數(shù)據(jù)。

資料說明TLC2543為12位AD。當(dāng)使用16bit模式時(shí)會(huì)返回16位的數(shù)據(jù),低4位為無效0。我們可以通過移位,處理為12位的數(shù)據(jù)

C#程序代碼

參考EM9280光盤目錄C# SPI例程,對(duì)照TLC2543芯片資料,修改相關(guān)參數(shù)設(shè)置。16bit本來應(yīng)該使用short(2字節(jié))數(shù)組進(jìn)行操作,但是C#的Marshal.Copy只能操作byte數(shù)組,所以需要用byte數(shù)組來代替short數(shù)組,同時(shí)2位byte表示1位short。

比如:希望傳送short[0] = 0x0c00;那么就設(shè)置byte[0] = 0x00;byte[1] = 0x0c;

同樣在最后解析數(shù)據(jù)的時(shí)候,byte[0] = 0xc0;byte[1] = 0x6c;那么轉(zhuǎn)換后便是short[0] = 0x6cc0;

先定義SPI為16bit,在SPI.cs中定義

private const int SSP_WORD_LENGTH_16BITS = 0xF;

在SPIConfigure函數(shù)中定義

spiinit.eLength = SSP_WORD_LENGTH_16BITS;

執(zhí)行代碼


//spi初始化代碼---------------------------------
SPI.SPISetBandRate(hSPI, 2000000); //設(shè)置頻率2MHz
//spi發(fā)送---------------------------------------
i = 0; //讀取AIN0
//16bit
TxBuffer[0] = 0;
TxBuffer[1] = (byte)((i << 4) + 0x0c); //i左移4位到D7-D4,后面0x04為D3-D0?
sSPI.BitCount = 16; //設(shè)置為16bit
sSPI.pDatBuf = pTxBuffer;
sSPI.dwDatLen = 1; //設(shè)置數(shù)據(jù)1字節(jié)
sSPI.bLockCS = 0; //0為發(fā)送
Marshal.Copy(TxBuffer, 0, pTxBuffer, 10);
bRes = SPI.WriteFile(hSPI, ref sSPI, sizeSPI, ref uLen, 0);
//spi接收---------------------------------------
sSPI.BitCount = 16;
sSPI.pDatBuf = pRxBuffer;
sSPI.dwDatLen = 10;
sSPI.bLockCS = 1;
bRes = SPI.ReadFile(hSPI, ref sSPI, sizeSPI, ref uLen, 0);
Marshal.Copy(pRxBuffer, RxBuffer, 0, 10);
int AIN = RxBuffer[0] + RxBuffer[1]*256; //讀得數(shù)據(jù)

測(cè)試結(jié)果

AIN = AIN / 16; //右移4位,舍棄后4位軟件模擬數(shù)據(jù)
Double dAIN = (double)AIN / 4096.0 * 4.86;

這里讀得AIN為0x6cc0,右移動(dòng)4位為0x06cc,為12位AD數(shù)據(jù),所以除以2^12即4096,再乘上基準(zhǔn)電壓(用萬用表測(cè)得4.86V),結(jié)果為2.064V,用萬用表量得結(jié)果,幾乎是一樣的。

C程序代碼

參考EM9280光盤目錄C SPI例程,對(duì)照TLC2543芯片資料,修改相關(guān)參數(shù)設(shè)置。

先定義SPI為16bit

#define UseBitCount16 1 //修改該定義為或,實(shí)現(xiàn)位數(shù)據(jù)位或位數(shù)據(jù)位通訊
#if UseBitCount16
#define dBitCount 16
#else
#define dBitCount 8
#endif

定義BUFFER為16字節(jié)數(shù)組
WORD SPI_TxBuf[10],SPI_RxBuf[10];

執(zhí)行代碼


//spi初始化代碼---------------------------------
SPISetBandRate( hSPI , 2000000); //設(shè)置頻率2MHz
//spi發(fā)送---------------------------------------
i = 0; //讀取AIN0
SPI_TxBuf[0]= ((i << 4) + 0x0c)<<8; //i左移位到D7-D4,后面x0c為D3-D0,最后要左移8位,因?yàn)閰f(xié)議里16位前8位有效?
hSPI_Box.BitCount = dBitCount; //設(shè)置為8bit
hSPI_Box.bLockCS = 0; //0為發(fā)送
hSPI_Box.dwDatLen = 1; //設(shè)置數(shù)據(jù)1字節(jié)
hSPI_Box.pDatBuf = (BYTE*)SPI_TxBuf;
WriteFile( hSPI , &hSPI_Box , sizeof( hSPI_Box ) , (DWORD*)&i , 0 );
//spi接收---------------------------------------
hSPI_Box.bLockCS = 1;
hSPI_Box.dwDatLen = 1;
hSPI_Box.pDatBuf = (BYTE*)SPI_RxBuf;
ReadFile( hSPI , &hSPI_Box , sizeof( hSPI_Box ) , (DWORD*)&i , 0 );

測(cè)試結(jié)果
f=(double)(SPI_RxBuf[0]>>4)/4096.0*4.86 ;
這里讀得SPI_RxBuf[0]為0x6ca0,右移動(dòng)4位為0x06ca,為12位AD數(shù)據(jù),所以除以2^12即4096,再乘上基準(zhǔn)電壓(用萬用表測(cè)得4.86V),結(jié)果為2.062V,用萬用表量得結(jié)果,幾乎是一樣的。

詳細(xì)SPI例程代碼見光盤SPI例程,相關(guān)問題,客戶可以聯(lián)系英創(chuàng)工程師咨詢。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6081

    瀏覽量

    34942
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    創(chuàng)國產(chǎn)化背景下的工控主板發(fā)展現(xiàn)狀

    創(chuàng),是信息技術(shù)應(yīng)用創(chuàng)新產(chǎn)業(yè)的簡稱,于2016年“信創(chuàng)工委會(huì)”(信息技術(shù)應(yīng)用創(chuàng)新工作委員會(huì))提出,目的就是要推動(dòng)我們國內(nèi)軟硬件關(guān)鍵技術(shù)的研發(fā)
    的頭像 發(fā)表于 09-21 16:15 ?81次閱讀

    梯度科技入選2023年信息技術(shù)應(yīng)用創(chuàng)新解決方案名單

    日前,工業(yè)和信息化部網(wǎng)絡(luò)安全產(chǎn)業(yè)發(fā)展中心(工業(yè)和信息化部信息中心)在天津舉辦2024信息技術(shù)應(yīng)用創(chuàng)新發(fā)展大會(huì)暨解決方案應(yīng)用推廣大會(huì)。會(huì)上正式公布了2023年
    的頭像 發(fā)表于 09-09 16:29 ?272次閱讀

    基于TLC6983的LED顯示屏設(shè)計(jì)要求示例

    電子發(fā)燒友網(wǎng)站提供《基于TLC6983的LED顯示屏設(shè)計(jì)要求示例.pdf》資料免費(fèi)下載
    發(fā)表于 09-03 10:39 ?0次下載
    基于<b class='flag-5'>TLC</b>6983的LED顯示屏設(shè)計(jì)要求<b class='flag-5'>示例</b>

    TLC2543開關(guān)電容、逐次逼近型模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TLC2543開關(guān)電容、逐次逼近型模數(shù)轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-31 11:37 ?0次下載
    <b class='flag-5'>TLC2543</b>開關(guān)電容、逐次逼近型模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    TLC2543-EP模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TLC2543-EP模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-18 09:26 ?0次下載
    <b class='flag-5'>TLC2543</b>-EP模數(shù)轉(zhuǎn)換器(ADC)數(shù)據(jù)表

    spi_flash_read接口去訪問SPI外掛的FLASH,無法返回是怎么回事?

    _EXT3(HSPI), 0x3); SET_PERI_REG_MASK(SPI_USER(HSPI), BIT(5)); 做了以上初始化后,用spi_flash_read這個(gè)接口去訪問SPI
    發(fā)表于 07-18 06:40

    TLC2543C和TLC2543l開關(guān)電容逐次逼近型模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TLC2543C和TLC2543l開關(guān)電容逐次逼近型模數(shù)轉(zhuǎn)換器數(shù)據(jù)表.pdf》資料免費(fèi)下載
    發(fā)表于 07-15 09:30 ?0次下載
    <b class='flag-5'>TLC2543</b>C和<b class='flag-5'>TLC2543</b>l開關(guān)電容逐次逼近型模數(shù)轉(zhuǎn)換器數(shù)據(jù)表

    龍芯中科三項(xiàng)信創(chuàng)方案入圍工信部2023年信息技術(shù)應(yīng)用創(chuàng)新應(yīng)用示范案例名單

    近日,工業(yè)和信息化部通報(bào)了2023年信息技術(shù)應(yīng)用創(chuàng)新解決方案征集遴選結(jié)果,本次共評(píng)選出典型解決方案173個(gè)、應(yīng)用示范案例83個(gè)、單項(xiàng)創(chuàng)新案例64個(gè)。
    的頭像 發(fā)表于 03-07 16:45 ?676次閱讀
    龍芯中科三項(xiàng)信<b class='flag-5'>創(chuàng)</b>方案入圍工信部2023年<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新應(yīng)用示范案例名單

    RX78M組 EtherCAT ETG.5003示例程序固件信息技術(shù)

    電子發(fā)燒友網(wǎng)站提供《RX78M組 EtherCAT ETG.5003示例程序固件信息技術(shù).pdf》資料免費(fèi)下載
    發(fā)表于 02-21 14:22 ?1次下載
    RX78M組  EtherCAT ETG.5003<b class='flag-5'>示例</b>程序固件<b class='flag-5'>信息技術(shù)</b>

    軟通動(dòng)力與捷創(chuàng)技術(shù)簽訂戰(zhàn)略合作協(xié)議

    近日,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱“軟通動(dòng)力”)與寧波捷創(chuàng)技術(shù)股份有限公司(以下簡稱“捷創(chuàng)技術(shù)”)正式簽訂戰(zhàn)略合作協(xié)議,并
    的頭像 發(fā)表于 02-03 16:35 ?1004次閱讀

    關(guān)于AD9280非線性的問題求解

    我有一塊用ad9280做ad轉(zhuǎn)換的板子,采用的是內(nèi)部2V參考電壓的設(shè)計(jì),輸入信號(hào)范圍是0~2V。 然后我發(fā)現(xiàn)直流的時(shí)候有問題: Ain=1000mV的時(shí)候,輸出0111_1111 Ain
    發(fā)表于 12-13 06:02

    闡述量子信息技術(shù)的研究現(xiàn)狀與未來

    20世紀(jì) 80 年代, 科學(xué)家將量子力學(xué)應(yīng)用到信息領(lǐng)域, 從而誕生了量子信息技術(shù), 諸如量子計(jì)算機(jī)、量子密碼、量子傳感等. 這些技術(shù)的運(yùn)行規(guī)律遵從量子力學(xué), 因此不僅其原理是量子力學(xué), 器件本身也
    發(fā)表于 11-22 11:40 ?675次閱讀
    闡述量子<b class='flag-5'>信息技術(shù)</b>的研究現(xiàn)狀與未來

    開鴻智谷受邀參加2023軟件和信息技術(shù)服務(wù)業(yè)創(chuàng)新發(fā)展論壇

    10月18日,以“智薈雄安創(chuàng)想未來”為主題的雄安新區(qū)2023軟件和信息技術(shù)服務(wù)業(yè)創(chuàng)新發(fā)展論壇在雄安新區(qū)國際酒店會(huì)議中心召開。本次論壇以推動(dòng)軟件和信息技術(shù)服務(wù)業(yè)創(chuàng)新發(fā)展為目的,邀行政校企各級(jí)單位共商共建。開鴻智
    的頭像 發(fā)表于 10-20 08:30 ?690次閱讀
    開鴻智谷受邀參加2023軟件和<b class='flag-5'>信息技術(shù)</b>服務(wù)業(yè)創(chuàng)新發(fā)展論壇

    能否用MCU訪問非標(biāo)準(zhǔn)SPI接口?當(dāng)然,方法交給你~

    能否用MCU訪問非標(biāo)準(zhǔn)SPI接口?當(dāng)然,方法交給你~
    的頭像 發(fā)表于 10-17 14:37 ?483次閱讀
    能否用MCU<b class='flag-5'>訪問</b>非標(biāo)準(zhǔn)<b class='flag-5'>SPI</b>接口?當(dāng)然,方法交給你~

    AD5676:Octal,16-Bit <em>nunano </em>DAC,帶有SPI界面數(shù)據(jù)表 ADI

    電子發(fā)燒友網(wǎng)為你提供ADI(ADI)AD5676:Octal,16-Bit nunano DAC,帶有SPI界面數(shù)據(jù)表相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有
    發(fā)表于 10-08 16:36
    AD5676:Octal,16-Bit <<b class='flag-5'>em</b>>nunano </<b class='flag-5'>em</b>>DAC,帶有<b class='flag-5'>SPI</b>界面數(shù)據(jù)表 ADI