91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

英創(chuàng)信息技術(shù)JAVA操作英創(chuàng)主板I2C接口簡(jiǎn)介

英創(chuàng)信息技術(shù) ? 來(lái)源:英創(chuàng)信息技術(shù) ? 作者:英創(chuàng)信息技術(shù) ? 2020-02-06 11:06 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

1、I2C簡(jiǎn)介

I2C(Inter-Integrated Circuit)總線是一種2線制(串行數(shù)據(jù)SDA、串行時(shí)鐘頻率SCL)的主從通訊協(xié)議,主要運(yùn)用于器件之間的數(shù)據(jù)通訊。SDA和SCL雙向漏極開(kāi)路(Open Drain)并利用電阻將電位上拉,同一個(gè)I2C總線上可以掛載多個(gè)I2C設(shè)備,如下圖所示。

圖1I2C掛載設(shè)備示意圖

圖2I2C時(shí)序圖

I2C總線是電平有效,在SCL信號(hào)為高電平的時(shí)候采樣SDA信號(hào)。如上圖所示,其通信過(guò)程為:SDA從1變動(dòng)到0,而SCL還是1時(shí),表示開(kāi)始數(shù)據(jù)傳輸。接下來(lái)的7位,就是設(shè)備的地址。緊接著的是讀寫(xiě)標(biāo)志,其為1時(shí)是讀取,為0則是寫(xiě)。如果I2C總線上存在著和請(qǐng)求的地址相對(duì)應(yīng)的設(shè)備,則從設(shè)備會(huì)發(fā)送一個(gè)ACK信號(hào)通知主設(shè)備,可以發(fā)送數(shù)據(jù)了。接到ACK信號(hào)后,主設(shè)備則發(fā)送一個(gè)8位的數(shù)據(jù),然后等待ACK。當(dāng)傳輸完畢之后,SCL保持為1,SDA從0變換到1時(shí),表明傳輸結(jié)束。

2、I2C傳輸數(shù)據(jù)結(jié)構(gòu)

英創(chuàng)提供的I2C傳輸數(shù)據(jù)結(jié)構(gòu)源文件為emtronix.hardware.I2CParam.java。每一個(gè)I2CParam類實(shí)例代表一次I2C通信,其主要成員變量如下所示:

public class I2CParam {

public byte SlaveAddr; //I2C從設(shè)備地址

public char RegAddr; //要訪問(wèn)的I2C從設(shè)備寄存器地址

public byte[] Databuf; //寫(xiě)入/讀出的數(shù)據(jù)緩存

}

其中,SlavaAddr是要訪問(wèn)的從設(shè)備的地址,RegAddr是要訪問(wèn)的從設(shè)備的寄存器地址,Databuf是用戶申請(qǐng)好的緩存區(qū)域,讀寫(xiě)的長(zhǎng)度由此緩存區(qū)域的長(zhǎng)度(Databuf.length)決定。

3、I2C傳輸接口函數(shù)

英創(chuàng)提供的I2C傳輸接口源文件為emtronix.hardware.I2C.java。用戶在實(shí)例化I2C類后可以調(diào)用Open、Read、Write、Close對(duì)I2C硬件接口進(jìn)行操作。I2C類的具體信息如下,其中mFd為設(shè)備描述符,用戶不用設(shè)置,由接口函數(shù)自動(dòng)修改。

public class I2C {

private int mFd;

public I2C() {

mFd = -1;

}

public void info() {

System.out.println("mfd " + mFd);

}

/**

* 打開(kāi)/dev/i2c-0設(shè)備

* @return 成功返回非負(fù)設(shè)備描述符;失敗返回-1

*/

public native int Open();

/**

* 從I2C總線發(fā)送一幀數(shù)據(jù),從設(shè)備的地址和寄存器地址由i2cparam指定

* @param i2cparam 指定發(fā)送從設(shè)備的地址和寄存器地址,以及攜帶的數(shù)據(jù),數(shù)據(jù)長(zhǎng)度由i2cParam.DataBuf.length決定

* @return 成功返回非負(fù);失敗返回-1

*/

public native int Write(I2CParam i2cparam);

/**

* 從I2C總線讀一幀數(shù)據(jù),從設(shè)備地址和寄存器地址由i2cparam指定

* @param i2cparam 指定發(fā)送從設(shè)備的地址和寄存器地址,以及攜帶的數(shù)據(jù),數(shù)據(jù)長(zhǎng)度由i2cParam.DataBuf.length決定

* @return 成功返回非負(fù);失敗返回-1

*/

public native int Read(I2CParam i2cparam);

/**

* 關(guān)閉I2C設(shè)備

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

*/

public native int Close();

}

4、I2C從設(shè)備(鍵盤(pán))程序

測(cè)試SPI接口的時(shí)候可以直接將MISO和MOSI短接就可以測(cè)試發(fā)送和接收數(shù)據(jù),但I(xiàn)2C的測(cè)試不能,需要連接到真正的I2C從設(shè)備,根據(jù)其工作時(shí)序,完成I2C通信的測(cè)試。這里選擇英創(chuàng)ETA202 I2C鍵盤(pán)擴(kuò)展模塊。英創(chuàng)已經(jīng)封裝好了一個(gè)I2CKeypad.java類,對(duì)外提供OpenKeypad、ReadKeypad、CloseKeypad等接口來(lái)操作I2C鍵盤(pán)。這些接口的內(nèi)部實(shí)現(xiàn)是通過(guò)I2C類的接口函數(shù)來(lái)完成對(duì)I2C鍵盤(pán)的操作。I2CKeyPad類的OpenKeypad接口主要內(nèi)容如下:

public int OpenKeypad()

{

I2CParam i2cparam = new I2CParam();

......

mI2C = new I2C();

mIrq = new IRQ();

//1. open i2c bus

if(mI2C.Open() < 0)

{

System.out.println("I2C open failed\n");

return -1;

}

// 2. config tca8418

i2cparam.SlaveAddr = TCA8418_ADDR;

for(i=0;ilength;i++) {

i2cparam.RegAddr = (char) (TCA8418Config[i].ControlReg & 0x0ffff);

i2cparam.Databuf = new byte[1];

i2cparam.Databuf[0] = TCA8418Config[i].Command;

if(mI2C.Write(i2cparam) < 0) {

System.out.println("I2C write failed\n");

return -1;

}

}

//3. open irq1

if(mIrq.Open("/dev/esm6800_irq1") < 0) {

System.out.println("can not open irq");

return -1;

}

...

//4. 開(kāi)啟中斷處理線程

scanThread = new Thread(new Runnable() {

public void run() {

mIrq.setTimeout(1000);

while(!Thread.currentThread().isInterrupted()) {

if(mIrq.WaitForIrq()>0) {

KeyScan();

}

}

System.out.println("scanThread exit");

}

});

scanThread.start();

}

I2CKeypad類在OpenKeyPad接口中使用I2C的Write接口對(duì)鍵盤(pán)掃描芯片tca8418進(jìn)行了初始化設(shè)置,并開(kāi)啟了監(jiān)聽(tīng)中斷處理線程。中斷處理線程中的KeyScan函數(shù)調(diào)用了I2C的Read接口去讀取事件信息,更新按鍵值。tca8418的各個(gè)寄存器功能,請(qǐng)參考模塊ETA202中的數(shù)據(jù)手冊(cè)。I2CKeypad類具體實(shí)現(xiàn)請(qǐng)結(jié)合tca8418的數(shù)據(jù)手冊(cè)參考源碼。

5、I2C鍵盤(pán)測(cè)試程序

I2C傳輸接口中操作I2C的接口函數(shù)聲明都有native的前綴,表明其實(shí)現(xiàn)部分在本地的庫(kù)當(dāng)中。英創(chuàng)將所有英創(chuàng)主板的硬件接口訪問(wèn)函數(shù)的實(shí)現(xiàn)部分編譯成了動(dòng)態(tài)鏈接庫(kù)libemtronixhardware.so,放在了文件系統(tǒng)/lib目錄下。

在編寫(xiě)I2C傳輸主程序的時(shí)候,首先需要加載該庫(kù),如下所示:

public class testI2CMain {

static {

System.loadLibrary("emtronixhardware");

}

public static void main(String[] args) {

...

}

}

然后,就可以在main函數(shù)中實(shí)例化I2CKeypad類,先調(diào)用OpenKeypad接口初始化鍵盤(pán),接著可調(diào)用I2CKeypad的ReadKeypad接口讀取按鍵信息:

public static void main(String[] args) {

I2CKeypad pad = new I2CKeypad();

int i1 = pad.OpenKeypad();

int key;

if(i1 < 0)

{

System.out.println("open keypad failed");

return;

}

for(i1 = 0; i1 < 10; ) {

key = pad.ReadKeypad();

if(key > 0) {

i1++;

System.out.println("-----key: 0x" + Integer.toHexString(key));

}

}

pad.CloseKeypad();

return ;

}

6、I2C鍵盤(pán)測(cè)試程序運(yùn)行結(jié)果

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

圖2運(yùn)行I2C鍵盤(pán)測(cè)試程序

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

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

    關(guān)注

    88

    文章

    11756

    瀏覽量

    218996
  • 嵌入式主板
    +關(guān)注

    關(guān)注

    7

    文章

    6107

    瀏覽量

    37064
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    創(chuàng)國(guó)產(chǎn)化引領(lǐng)丨康仕攜手龍芯打造信創(chuàng)國(guó)產(chǎn)化工控全場(chǎng)景解決方案

    基于龍芯平臺(tái)的國(guó)產(chǎn)化工控產(chǎn)品矩陣已全面成型,全系列符合信創(chuàng)國(guó)產(chǎn)化標(biāo)準(zhǔn)。 圍繞龍芯2K3000與龍芯3B6000M處理器,康仕完成覆蓋邊緣計(jì)算、智能制造、智能交通、移動(dòng)加固計(jì)算等領(lǐng)域的全場(chǎng)景信
    的頭像 發(fā)表于 02-24 16:11 ?1065次閱讀
    信<b class='flag-5'>創(chuàng)</b>國(guó)產(chǎn)化引領(lǐng)丨<b class='flag-5'>英</b>康仕攜手龍芯打造信<b class='flag-5'>創(chuàng)</b>國(guó)產(chǎn)化工控全場(chǎng)景解決方案

    國(guó)產(chǎn)金融主板:賦能智慧金融,驅(qū)動(dòng)信創(chuàng)產(chǎn)業(yè)升級(jí)

    隨著信息技術(shù)的飛速迭代,信創(chuàng)產(chǎn)業(yè)已在全球范圍內(nèi)崛起,成為拉動(dòng)經(jīng)濟(jì)增長(zhǎng)、激活創(chuàng)新動(dòng)能的核心力量。在信創(chuàng)產(chǎn)業(yè)的關(guān)鍵布局中,智慧金融建設(shè)是重中之重,而國(guó)產(chǎn)金融主板的規(guī)?;瘧?yīng)用,正為智慧金融建
    的頭像 發(fā)表于 12-31 09:03 ?164次閱讀
    國(guó)產(chǎn)金融<b class='flag-5'>主板</b>:賦能智慧金融,驅(qū)動(dòng)信<b class='flag-5'>創(chuàng)</b>產(chǎn)業(yè)升級(jí)

    基于FPGA的I2C控制模塊設(shè)計(jì)

    I2C_WRITE_WDATA.v模塊實(shí)現(xiàn)I2C寫(xiě)時(shí)序,I2C_Controller (I2C控制器)例化了I2C_WRITE_WDATA.
    的頭像 發(fā)表于 12-26 09:48 ?4848次閱讀
    基于FPGA的<b class='flag-5'>I2C</b>控制模塊設(shè)計(jì)

    AS32X601的I2C模塊操作EEPROM詳解

    國(guó)科安芯推出的AS32X601系列MCU芯片內(nèi)置的I2C模塊提供了符合工業(yè)標(biāo)準(zhǔn)的兩線串行制接口,可用于MCU和外部I2C設(shè)備的通訊。I2C總線使用兩條串行線:串行數(shù)據(jù)線SDA和串行時(shí)鐘
    的頭像 發(fā)表于 12-21 21:39 ?954次閱讀
    AS32X601的<b class='flag-5'>I2C</b>模塊<b class='flag-5'>操作</b>EEPROM詳解

    基于CW32 MCU的I2C接口優(yōu)化穩(wěn)定讀寫(xiě)EEPROM關(guān)鍵技術(shù)

    CW32 MCU優(yōu)化I2C接口,確保在與EEPROM芯片通信時(shí)的穩(wěn)定性。內(nèi)容涵蓋以下幾個(gè)關(guān)鍵技術(shù)點(diǎn): I2C時(shí)序與頻率調(diào)整:介紹如何根據(jù)EEPROM的特性,合理設(shè)置
    發(fā)表于 12-03 07:29

    深入剖析I2C協(xié)議

    I2C是由Philips開(kāi)發(fā)的簡(jiǎn)單的雙向兩線總線,在深入淺出理解SPI協(xié)議中,我們區(qū)分了單工,半雙工,全雙工協(xié)議數(shù)據(jù)流向的區(qū)別,根據(jù)特征,I2C協(xié)議屬于半雙工協(xié)議(即同一時(shí)刻,數(shù)據(jù)單向流動(dòng))。此外
    的頭像 發(fā)表于 08-21 15:10 ?3660次閱讀
    深入剖析<b class='flag-5'>I2C</b>協(xié)議

    智慧新核心,龍芯主板助力信創(chuàng)體系再升級(jí)

    信息技術(shù)飛速發(fā)展的當(dāng)下,信創(chuàng)體系的自主可控與創(chuàng)新升級(jí)已成為國(guó)家戰(zhàn)略層面的關(guān)鍵任務(wù)。作為信創(chuàng)產(chǎn)業(yè)發(fā)展的重要基礎(chǔ)硬件支撐,國(guó)產(chǎn)工控主板正發(fā)揮著日益重要的作用。
    的頭像 發(fā)表于 08-11 09:14 ?691次閱讀

    高效率、6通道、白光LED驅(qū)動(dòng)器,帶I2C接口 skyworksinc

    電子發(fā)燒友網(wǎng)為你提供()高效率、6通道、白光LED驅(qū)動(dòng)器,帶I2C接口相關(guān)產(chǎn)品參數(shù)、數(shù)據(jù)手冊(cè),更有高效率、6通道、白光LED驅(qū)動(dòng)器,帶I2C接口的引腳圖、接線圖、封裝手冊(cè)、中文資料、英
    發(fā)表于 07-30 18:31
    高效率、6通道、白光LED驅(qū)動(dòng)器,帶<b class='flag-5'>I2C</b><b class='flag-5'>接口</b> skyworksinc

    飛騰主板為信創(chuàng)產(chǎn)業(yè)發(fā)展提高硬實(shí)力

    信息技術(shù)飛速發(fā)展的當(dāng)下,信創(chuàng)產(chǎn)業(yè)已成為我國(guó)實(shí)現(xiàn)科技自立自強(qiáng)、保障國(guó)家信息安全的關(guān)鍵領(lǐng)域。信創(chuàng),即信息技術(shù)應(yīng)用創(chuàng)新,其核心目標(biāo)是實(shí)現(xiàn)
    的頭像 發(fā)表于 07-22 18:20 ?704次閱讀

    科普|信創(chuàng)是什么?一文讀懂“信息技術(shù)應(yīng)用創(chuàng)新”戰(zhàn)略

    什么是信創(chuàng)?信創(chuàng),即“信息技術(shù)應(yīng)用創(chuàng)新”,是國(guó)家推動(dòng)IT系統(tǒng)自主可控、安全可控的重要戰(zhàn)略工程。它不僅是技術(shù)層面的創(chuàng)新,更承載著保障國(guó)家網(wǎng)絡(luò)安全、推動(dòng)產(chǎn)業(yè)升級(jí)和實(shí)現(xiàn)數(shù)字主權(quán)的重任。簡(jiǎn)單來(lái)
    的頭像 發(fā)表于 06-13 10:06 ?8147次閱讀
    科普|信<b class='flag-5'>創(chuàng)</b>是什么?一文讀懂“<b class='flag-5'>信息技術(shù)</b>應(yīng)用創(chuàng)新”戰(zhàn)略

    創(chuàng)浪潮下,國(guó)產(chǎn)主板有什么新的發(fā)展機(jī)遇?

    信息技術(shù)應(yīng)用創(chuàng)新浪潮的推動(dòng)下,國(guó)產(chǎn)主板迎來(lái)了諸多新的發(fā)展機(jī)遇。信創(chuàng)產(chǎn)業(yè)旨在實(shí)現(xiàn)信息技術(shù)領(lǐng)域的自主可控,這一戰(zhàn)略目標(biāo)為國(guó)產(chǎn)主板的發(fā)展提供了廣
    的頭像 發(fā)表于 05-09 09:24 ?717次閱讀
    信<b class='flag-5'>創(chuàng)</b>浪潮下,國(guó)產(chǎn)<b class='flag-5'>主板</b>有什么新的發(fā)展機(jī)遇?

    簡(jiǎn)單了解I2C接口

    在電子電路的復(fù)雜世界里,各種電路模塊設(shè)備需要相互通信才能協(xié)同工作 ,I2C接口就像是電路模塊設(shè)備間的溝通橋梁,今天就帶大家深入了解它。
    的頭像 發(fā)表于 05-08 14:15 ?2513次閱讀
    簡(jiǎn)單了解<b class='flag-5'>I2C</b><b class='flag-5'>接口</b>

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-I2C設(shè)備驅(qū)動(dòng)之Linux下的I2C驅(qū)動(dòng)簡(jiǎn)介

    總線驅(qū)動(dòng):I2C總線驅(qū)動(dòng)是在操作系統(tǒng)層面上實(shí)現(xiàn)對(duì)I2C總線的控制和管理的軟件模塊。它負(fù)責(zé)與硬件層面的I2C控制器進(jìn)行交互,并提供一個(gè)統(tǒng)一的接口
    發(fā)表于 04-15 10:39

    飛凌嵌入式ElfBoard ELF 1板卡-I2C設(shè)備驅(qū)動(dòng)之Linux下的I2C驅(qū)動(dòng)簡(jiǎn)介

    總線驅(qū)動(dòng):I2C總線驅(qū)動(dòng)是在操作系統(tǒng)層面上實(shí)現(xiàn)對(duì)I2C總線的控制和管理的軟件模塊。它負(fù)責(zé)與硬件層面的I2C控制器進(jìn)行交互,并提供一個(gè)統(tǒng)一的接口
    發(fā)表于 04-15 10:19

    I2C總線復(fù)用

    帝晶智慧屏I2C總線復(fù)用
    的頭像 發(fā)表于 03-11 17:20 ?2077次閱讀