那曲檬骨新材料有限公司

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

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

3天內不再提示

英創信息技術JAVA操作英創主板SPI接口簡介

英創信息技術 ? 來源:英創信息技術 ? 作者:英創信息技術 ? 2020-02-06 11:09 ? 次閱讀

2017年9月,英創在Linux的文件系統中移植了針對嵌入式Linux的JRE(Java Runtime Environment),能夠支持Java應用程序的運行。由于Java語言不能直接訪問硬件資源,英創提供了Java硬件支持包,主要支持的工控接口有:以太網、串口、CAN、GPIO、SPI、I2C、RTC等。本文主要介紹使用Java語言調用英創Java硬件支持包,操作英創主板SPI接口的過程。

1、SPI簡介

SPI(Synchronous Peripheral Interface)是一種同步串行數據通訊總線接口,常用于連接ADCs、EPROMs、Sensors或者是其他一些微控制器,SPI具有兩種工作模式:master和slave模式,其中master模式提供時鐘信號

圖1SPI主從設備信號連接

SPI有四種數據傳輸模式,如表1所示,主要差別在于:輸出串行同步時鐘極性(CPOL)和相位(CPHA)可以進行配置。

SPI mode CPOL CPHA Comments
0 0 0 時鐘的空閑狀態為低電平;上升沿采樣
1 0 1 時鐘的空閑狀態為低電平;下降沿采樣
2 1 0 時鐘的空閑狀態為高電平;下降沿采樣
3 1 1 時鐘的空閑狀態為高電平;上升沿采樣

表1SPI四種數據傳輸模式

2、SPI傳輸數據結構

英創提供的SPI傳輸數據結構源文件為emtronix.hardware.SPITransfer.java。每一個SPITransfer類實例代表一次SPI傳輸,其主要成員變量如下所示:

public class SPITransfer {

/*寫數據緩存,只讀模式時為null*/

public byte[] tx_buf;

/*讀數據緩存,只寫模式時為null */

public byte[] rx_buf;

/* 緩存長度

* 全雙工時,讀寫緩存應該長度相同;

* 半雙工時,非工作狀態的緩存為null

*/

public int len;

/*SPI時鐘頻率*/

public int speed_hz;

/*兩個SPITransfer之間的延時*/

public char delay_usecs;

/*SPI傳輸字寬*/

public byte bits_per_word;

/*本次傳輸完成之后,是否改變片選*/

public byte cs_change;

public int pad;

}

SPI傳輸使用同步時鐘,在發送的同時,也在接收數據。因此其傳輸數據結構要同時擁有寫數據緩存tx_buf和讀數據緩存rx_buf才能支持這種全雙工工作模式,并且兩個緩存區域長度都為len字節。當然,如果要使用半雙工讀/寫,只需要讓tx_buf/rx_buf等于null就可以了。speed_hz為SPI的時鐘頻率,esm335x最大時鐘頻率48MHz,esm6800最大時鐘頻率60MHz;delay_usecs表示連續傳輸的Transfer之間的間隔,單位為微秒;bits_per_word表示一個字有幾個比特組成,最大32;cs_change表示本次傳輸完成后是否修改片選信號;pad暫時不用設置,保留。

3、SPI傳輸接口函數

英創提供的SPI傳輸接口源文件為emtronix.hardware.SPI.java。用戶在實例化SPI類后可以調用Open、SetSPI、Transfer、Close對SPI硬件接口進行操作。SPI類的具體信息如下,其中mFd為設備描述符,用戶不用設置,由接口函數自動修改。

public class SPI {

private int mFd;

/**

*打開spi主設備,返回fd.自動修改mFd

*@paramdev "/dev/spidev1.0"

*@return成功返回spi主設備描述符,失敗返回-1

*/

publicnativeintOpen(String dev);

/**

*設置SPI的工作參數

*@paramargs "S16000000-M1-B16-D100" S為時鐘速率,M為數據傳輸模式(0-3),B為數據位寬,D發送完后的延時

* 四個參數之間不分順序“M1-D100-B16-S16000000”與之前的相同

*@return成功返回0;失敗返回-1

*/

publicnativeintSetSPI(String args);

/**

* SPI一次傳輸,trans.tx_buf=null,trans.rx_buf != null, only receive;

* trans.tx_buf!=null,trans.rx_buf=null,only send;

* trans.tx_buf!=null,trans.rx_buf!=null, send&receive

*@paramtrans,一次spi傳輸參數

*@paramntrans,進行ntrans次spitransfer

*@return成功返回0;失敗返回-1

*/

publicnativeintTransfer(SPITransfer[] trans,intntrans);

/**

*關閉SPI主設備

*@return成功返回0;失敗返回-1

*/

publicnativeintClose() ;

}

4、SPI測試程序

SPI傳輸接口中操作SPI的接口函數聲明都有native的前綴,表明其實現部分在本地的庫當中。英創將所有英創主板的硬件接口訪問函數的實現部分編譯成了動態鏈接庫libemtronixhardware.so,放在了文件系統/lib目錄下。

在編寫SPI傳輸主程序的時候,首先需要加載該庫,如下所示:

publicclasstestSPIMain {

static{

System.loadLibrary("emtronixhardware");

}

publicstaticvoidmain(String[] args) {

...

}

}

然后,就可以在main函數中實例化SPI類,并打開主板的SPI設備:

SPI spi = new SPI();

spi.Open("/dev/spidev1.0");

接著,初始化SPI傳輸數據結構,發送數據:

int transcnt = 1;

SPITransfer[] trans = new SPITransfer[transcnt];

trans[0] = new SPITransfer();

trans[0].tx_buf = tArray;

trans[0].rx_buf = rArray;

trans[0].len = bytes;

trans[0].speed_hz = speed;

trans[0].bits_per_word = (byte) bitspw;

if(spi.Transfer(trans, transcnt) == 0) {

//傳輸成功,處理數據

}

其中,transcnt表示SPITransfer的個數,每一個SPITransfer需要用戶自己實例化。

最后,使用完畢后關閉SPI設備:

spi.Close();

5、SPI測試程序運行結果

運行SPI傳輸Java主程序需要把編譯結果bin文件中的所有目錄文件拷貝到主板/mnt/nandflash,或者通過nfs掛載到主板/mnt/nfs目錄下。然后,使用“java 包名.類名”運行,如下圖所示:

圖2運行SPI測試程序

以上就是使用Java操作英創主板SPI接口的介紹,感興趣的客戶可以通過電話或者郵件聯系英創工程師。我們將提供Java示例程序源碼供客戶參考。

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

    關注

    87

    文章

    11345

    瀏覽量

    210385
  • 嵌入式主板
    +關注

    關注

    7

    文章

    6086

    瀏覽量

    35612
收藏 人收藏

    評論

    相關推薦

    芯盛智能榮獲2024年信息技術應用創新工作委員會卓越貢獻成員單位

    日前,中國電子工業標準化技術協會信息技術應用創新工作委員會(以下簡稱 “信工委會”)2024 年度總結座談會于北京隆重舉行。此次會議對在信工作中作出突出貢獻的成員單位予以表彰。江蘇
    的頭像 發表于 01-20 09:56 ?157次閱讀

    飛騰助力首屆教育信息技術應用創新大賽圓滿落幕

    近日,由中國教育技術協會主辦,教育部教育管理信息中心教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信工委會支持,北京航空航天
    的頭像 發表于 12-24 09:57 ?205次閱讀

    龍芯中科助力2024首屆教育信息技術應用創新大賽成功舉辦

    近日,2024首屆教育信息技術應用創新大賽在北京航空航天大學成功舉辦。本次大賽由中國教育技術協會主辦,教育信實驗室、公安部第三研究所、中國電子工業標準化技術協會信
    的頭像 發表于 12-19 17:02 ?282次閱讀

    威騰CHE100變頻器原理圖

    圖紙包括:威騰變頻器電源及通訊電路騰變頻器TMS320LF2406外圍電路、威騰變頻器電流檢測電路、威騰變頻器電源及通訊電路、
    發表于 12-16 11:06 ?7次下載

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

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

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

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

    銳恩科技引領微控制器MCU技術創新,賦能多元化應用!

    ,成為國家高新技術半導體企業的佼佼者。銳恩科技不僅致力于為客戶提供高可靠性、高性能、高性價比的一站式半導體芯片供應服務,更在8位和32位MCU市場不斷創新,推動技術進步與產品應用拓展。
    發表于 09-29 13:40

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

    在科技飛速發展的今天,低功耗單片機的應用越來越廣泛,尤其是在安防監控、智能家居和微波雷達照明等領域。作為國內專精特新國家高新技術半導體企業,銳恩科技致力于為客戶提供高性能、低功耗的單片機解決方案
    發表于 09-26 17:16

    銳恩科技,以實力打造國產單片機替代品牌!

    今天我們要介紹的深圳銳恩科技的單片機。 鑒于我國集成電路產業起步較晚,核心研發技術非常的短缺,導致了我國芯片需要依賴進口。而可替代進口MCU的國產芯片,產品性能必須要穩定。 深圳銳恩科技是一國
    發表于 09-25 09:49

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

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

    中軟國際信服務助力大連信產業發展

    為進一步激發大連本地信產業生態的活力與潛力,搭建一個高效、開放的交流平臺。由大連軟件行業協會攜手大連市信息技術應用創新綜合服務中心主辦,中軟國際協辦的,2024年大連市信息技術應用創新產業發展大會
    的頭像 發表于 08-27 16:49 ?953次閱讀

    通過大小鼠無血壓測量實驗明白了無血壓測量技術的重要性

    血壓測量技術的重要性:無血壓測量技術是一種非侵入性的測量方法,可以避免對動物造成不必要的傷害。在醫學研究中,無血壓測量
    發表于 04-22 09:40

    泰斯特承辦“聯企投匯·周三會”,協同打造智能網聯新高地

    2024年3月27日,由市委統戰部、市工商聯主辦、武漢市高新技術產業協會協辦的“聯企投匯·周三會”第十三期活動在武漢英泰斯特電子技術有限公司(以下簡稱“泰斯特”)成功舉辦。
    的頭像 發表于 03-29 09:50 ?555次閱讀

    股份今日登陸科

    山東中軟件商用中間件股份有限公司(以下簡稱“中股份”)近日在上海證券交易所科板成功上市,標志著這家國內知名的民營軟件和信息技術服務企業正式進入資本市場,迎來全新的發展機遇。
    的頭像 發表于 03-13 14:19 ?593次閱讀

    股份在上交所科板上市

    山東中軟件商用中間件股份有限公司(以下簡稱“中股份”)近日在上海證券交易所科板成功上市,標志著這家國內知名的民營軟件和信息技術服務企業正式進入資本市場,開啟了發展的新篇章。
    的頭像 發表于 03-13 14:02 ?588次閱讀
    百家乐视频游戏帐号| 澳门百家乐限红规则| 三公百家乐在线哪里可以玩| 大发888源码| 百家乐官网小游戏开发| 百家乐官网的看路技巧| 金城百家乐平台| 大发888游戏下载官方| 百家乐官网是否有规律| 百家乐官网桌套装| 圣保罗百家乐的玩法技巧和规则| ea平台| 澳门百家乐官网棋牌游戏| 百家乐官网骗局视频| 3U百家乐的玩法技巧和规则| 大家赢娱乐城| 梦幻城百家乐官网的玩法技巧和规则 | 博坊百家乐官网游戏| 百家乐官网不锈钢| 威尼斯人娱乐网站| 挖掘百家乐官网赢钱秘籍| 百家乐分析仪博彩正网| 大发888官方网站登陆| 澳门百家乐官网会出千吗| 百家乐大路小路| 博乐娱乐城| 卢克索百家乐官网的玩法技巧和规则 | 百家乐免费改单| 乐天堂娱乐城| 百家乐官网游戏| 新皇冠现金网怎么样| 百家乐官网赌场在线娱乐| 送彩金百家乐的玩法技巧和规则| 台州市| 赌百家乐大小点桌| 丁青县| 哪个百家乐投注平台信誉好| 网上真钱棋牌游戏| 百家乐官网那里最好| 一二博网址| 百家乐怎么压对子|