精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

英創信息技術EM9280主板SPI訪問TLC2543 AD示例

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2020-01-17 08:58 ? 次閱讀

英創EM9280工控主板帶有半雙工的硬件SPI,與SPI協議的芯片通信時比使用GPIO模擬時序更加簡單方便。本文以TLC2543芯片為例,介紹如何使用SPI獲得芯片的AD數據。也為客戶使用SPI驅動與其它型號芯片通信提供參考。

TLC2543芯片簡介

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

參考芯片數據手冊。

上圖為TLC2543 16bit的時序圖,我們可以設置SPI為16bit,數據長度1字節來訪問。

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

因為EM9280的SPI為半雙工,第一次16bit發送數據,第二次16bit讀入數據。

資料說明TLC2543為12位AD。當使用16bit模式時會返回16位的數據,低4位為無效0。我們可以通過移位,處理為12位的數據

C#程序代碼

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

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

同樣在最后解析數據的時候,byte[0] = 0xc0;byte[1] = 0x6c;那么轉換后便是short[0] = 0x6cc0;

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

private const int SSP_WORD_LENGTH_16BITS = 0xF;

在SPIConfigure函數中定義

spiinit.eLength = SSP_WORD_LENGTH_16BITS;

執行代碼


//spi初始化代碼---------------------------------
SPI.SPISetBandRate(hSPI, 2000000); //設置頻率2MHz
//spi發送---------------------------------------
i = 0; //讀取AIN0
//16bit
TxBuffer[0] = 0;
TxBuffer[1] = (byte)((i << 4) + 0x0c); //i左移4位到D7-D4,后面0x04為D3-D0?
sSPI.BitCount = 16; //設置為16bit
sSPI.pDatBuf = pTxBuffer;
sSPI.dwDatLen = 1; //設置數據1字節
sSPI.bLockCS = 0; //0為發送
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; //讀得數據

測試結果

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

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

C程序代碼

參考EM9280光盤目錄C SPI例程,對照TLC2543芯片資料,修改相關參數設置。

先定義SPI為16bit

#define UseBitCount16 1 //修改該定義為或,實現位數據位或位數據位通訊
#if UseBitCount16
#define dBitCount 16
#else
#define dBitCount 8
#endif

定義BUFFER為16字節數組
WORD SPI_TxBuf[10],SPI_RxBuf[10];

執行代碼


//spi初始化代碼---------------------------------
SPISetBandRate( hSPI , 2000000); //設置頻率2MHz
//spi發送---------------------------------------
i = 0; //讀取AIN0
SPI_TxBuf[0]= ((i << 4) + 0x0c)<<8; //i左移位到D7-D4,后面x0c為D3-D0,最后要左移8位,因為協議里16位前8位有效?
hSPI_Box.BitCount = dBitCount; //設置為8bit
hSPI_Box.bLockCS = 0; //0為發送
hSPI_Box.dwDatLen = 1; //設置數據1字節
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 );

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

詳細SPI例程代碼見光盤SPI例程,相關問題,客戶可以聯系英創工程師咨詢。

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

    關注

    7

    文章

    6085

    瀏覽量

    35218
收藏 人收藏

    評論

    相關推薦

    使用TLC2543IDB時,輸入在2.5V左右,輸出數據偶爾會出現錯誤的5V,為什么?

    我們在使用TLC2543IDB時,輸入在2.5V左右,輸出數據偶爾會出現錯誤的5V,出現錯誤后一直輸出5V,重啟后可以恢復正常,以下為原理圖及配置,請檢查有無錯誤之處,后面付輸出波形:(更換為TLC2543IDBRG4Q1后出現問題的頻率更高) 更換為
    發表于 11-20 06:49

    LP589x和TLC698x示例代碼用戶指南

    電子發燒友網站提供《LP589x和TLC698x示例代碼用戶指南.pdf》資料免費下載
    發表于 11-13 15:57 ?0次下載
    LP589x和<b class='flag-5'>TLC</b>698x<b class='flag-5'>示例</b>代碼用戶指南

    國產工控主板,信產業發展新引擎

    在當今科技飛速發展的時代,信產業正成為國家戰略的重要支撐。而我們的國產工控主板,以其卓越的性能和可靠的品質,為信產業的發展注入強大動力。國產工控主板在信
    的頭像 發表于 11-06 10:29 ?157次閱讀

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

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

    STM32CUBEMX(14)--SPITLC5947外部PWM移植

    上節省空間,提供方便,正是出于這種簡單易用的特性,越來越多的芯片集成了這種通信協議,比如 EEPROM,FLASH,實時時鐘,AD轉換器。 TLC5947是一款SPI接口的PWM脈寬調制24路LED
    發表于 09-30 15:01

    引領智能未來:銳恩科技的國產低功耗單片機ENMCU

    訪問詳細的技術文檔和示例代碼,快速搭建自己的開發環境。此外,銳恩還定期舉辦技術培訓和線上講座,與開發者分享最新的行業趨勢和應用案例。 隨
    發表于 09-26 17:16

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

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

    梯度科技入選2023年信息技術應用創新解決方案名單

    日前,工業和信息化部網絡安全產業發展中心(工業和信息化部信息中心)在天津舉辦2024信息技術應用創新發展大會暨解決方案應用推廣大會。會上正式公布了2023年
    的頭像 發表于 09-09 16:29 ?392次閱讀

    基于TLC6983的LED顯示屏設計要求示例

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

    TLC2543開關電容、逐次逼近型模數轉換器數據表

    電子發燒友網站提供《TLC2543開關電容、逐次逼近型模數轉換器數據表.pdf》資料免費下載
    發表于 07-31 11:37 ?0次下載
    <b class='flag-5'>TLC2543</b>開關電容、逐次逼近型模數轉換器數據表

    TLC2543-EP模數轉換器(ADC)數據表

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

    TLC2543C和TLC2543l開關電容逐次逼近型模數轉換器數據表

    電子發燒友網站提供《TLC2543C和TLC2543l開關電容逐次逼近型模數轉換器數據表.pdf》資料免費下載
    發表于 07-15 09:30 ?0次下載
    <b class='flag-5'>TLC2543</b>C和<b class='flag-5'>TLC2543</b>l開關電容逐次逼近型模數轉換器數據表

    龍芯中科三項信方案入圍工信部2023年信息技術應用創新應用示范案例名單

    近日,工業和信息化部通報了2023年信息技術應用創新解決方案征集遴選結果,本次共評選出典型解決方案173個、應用示范案例83個、單項創新案例64個。
    的頭像 發表于 03-07 16:45 ?865次閱讀
    龍芯中科三項信<b class='flag-5'>創</b>方案入圍工信部2023年<b class='flag-5'>信息技術</b>應用創新應用示范案例名單

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

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

    軟通動力與捷技術簽訂戰略合作協議

    近日,軟通動力信息技術(集團)股份有限公司(以下簡稱“軟通動力”)與寧波捷技術股份有限公司(以下簡稱“捷技術”)正式簽訂戰略合作協議,并
    的頭像 發表于 02-03 16:35 ?1084次閱讀