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

    文章

    11522

    浏览量

    214377
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6104

    浏览量

    36379
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    飞腾主板为信产业发展提高硬实力

    信息技术飞速发展的当下,信产业已成为我国实现科技自立自强、保障国家信息安全的关键领域。信,即信息技术应用创新,其核心目标是实现
    的头像 发表于 07-22 18:20 ?233次阅读

    浪潮澎湃,国产主板迎来黄金时代!

    2025年7月,表示必须在2027年底前完成信100%替代,覆盖基础硬件、基础软件等核心领域。在信息技术应用创新浪潮席卷下,国产主板作为计算机系统的骨架,正从幕后走向台前。政策加持、技术
    的头像 发表于 07-21 14:00 ?93次阅读

    中星微技术斩获2025金牛科企业奖

    6月14日,由中国证券报主办的2025科金牛奖颁奖典礼在上海市举行,2025科金牛奖获奖名单现场揭晓。其中中星微技术获得新一代信息技术金牛科
    的头像 发表于 06-16 14:16 ?820次阅读

    科普|信是什么?一文读懂“信息技术应用创新”战略

    什么是信?信,即“信息技术应用创新”,是国家推动IT系统自主可控、安全可控的重要战略工程。它不仅是技术层面的创新,更承载着保障国家网络安全、推动产业升级和实现数字主权的重任。简单来
    的头像 发表于 06-13 10:06 ?2676次阅读
    科普|信<b class='flag-5'>创</b>是什么?一文读懂“<b class='flag-5'>信息技术</b>应用创新”战略

    诺达斩获第四届“赢未来”集成电路赛道一等奖

    日前,“赢未来”第四届长三角G60科走廊科技与产业创新大赛(松江赛区)暨第五届“海聚英才”全球创新创业大赛(松江区选拔赛)成功举办,诺达凭借其EDA软件及解决方案,从80余个硬科技项目中脱颖而出,斩获集成电路赛道一等奖!
    的头像 发表于 05-23 10:16 ?491次阅读

    浪潮下,国产主板有什么新的发展机遇?

    信息技术应用创新浪潮的推动下,国产主板迎来了诸多新的发展机遇。信产业旨在实现信息技术领域的自主可控,这一战略目标为国产主板的发展提供了广
    的头像 发表于 05-09 09:24 ?257次阅读
    信<b class='flag-5'>创</b>浪潮下,国产<b class='flag-5'>主板</b>有什么新的发展机遇?

    韧科技推出新主控,4K随机读写超120万IOPS行业标杆

    了一款新的主控芯片,这颗芯片在技术上有了哪些突破?针对当前汹涌而来的AI技术,又有哪些布局?为此,电子发烧友网采访到了韧科技的CEO刘刚和数据存储技术副总裁陈杰。 ?
    的头像 发表于 03-26 00:10 ?2459次阅读
    <b class='flag-5'>英</b>韧科技推出新主控,4K随机读写超120万IOPS<b class='flag-5'>创</b>行业标杆

    JavaSPI机制详解

    作者:京东物流 杨苇苇 1.SPI简介 SPI(Service Provicer Interface)是Java语言提供的一种接口发现机制,
    的头像 发表于 03-05 11:35 ?832次阅读
    <b class='flag-5'>Java</b>的<b class='flag-5'>SPI</b>机制详解

    国产工控主板,信产业发展新引擎

    在当今科技飞速发展的时代,信产业正成为国家战略的重要支撑。而我们的国产工控主板,以其卓越的性能和可靠的品质,为信产业的发展注入强大动力。国产工控主板在信
    的头像 发表于 11-06 10:29 ?705次阅读

    中科达荣获2024年软件和信息技术服务优秀企业

    及前百家企业”名单。中科达凭借非凡的技术实力与持续的创新能力,成功入选“2024年度软件和信息技术服务竞争力百强企业”以及“2024年软件和信息技术服务优秀企业”。
    的头像 发表于 10-30 11:44 ?1029次阅读

    锐恩科技引领微控制器MCU技术创新,赋能多元化应用!

    ,成为国家高新技术半导体企业的佼佼者。锐恩科技不仅致力于为客户提供高可靠性、高性能、高性价比的一站式半导体芯片供应服务,更在8位和32位MCU市场不断创新,推动技术进步与产品应用拓展。
    发表于 09-29 13:40

    引领智能未来:锐恩科技的国产低功耗单片机ENMCU

    在科技飞速发展的今天,低功耗单片机的应用越来越广泛,尤其是在安防监控、智能家居和微波雷达照明等领域。作为国内专精特新国家高新技术半导体企业,锐恩科技致力于为客户提供高性能、低功耗的单片机解决方案
    发表于 09-26 17:16

    锐恩科技,以实力打造国产单片机替代品牌!

    今天我们要介绍的深圳锐恩科技的单片机。 鉴于我国集成电路产业起步较晚,核心研发技术非常的短缺,导致了我国芯片需要依赖进口。而可替代进口MCU的国产芯片,产品性能必须要稳定。 深圳锐恩科技是一国
    发表于 09-25 09:49

    国产化背景下的工控主板发展现状

    ,是信息技术应用创新产业的简称,于2016年“信工委会”(信息技术应用创新工作委员会)提出,目的就是要推动我们国内软硬件关键技术的研发
    的头像 发表于 09-21 16:15 ?910次阅读

    中软国际信服务助力大连信产业发展

    为进一步激发大连本地信产业生态的活力与潜力,搭建一个高效、开放的交流平台。由大连软件行业协会携手大连市信息技术应用创新综合服务中心主办,中软国际协办的,2024年大连市信息技术应用创新产业发展大会
    的头像 发表于 08-27 16:49 ?1351次阅读