0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

英创信息技术EM9560工控主板GPIO的使用介绍

英创信息技术 来源:英创信息技术 作者:英创信息技术 2020-01-15 14:48 次阅读

EM9560工控主板是以EM9460工控主板为基础,并针对客户应用的需求,增加了更多通用数字IO,于2012年初推出的一款低成本嵌入式主板产品。该产品保持了Linux操作系统作为客户应用程序的软件平台,其基本接口功能API函数上也与前期产品EM9460完全兼容,从而保证了客户的应用程序可不加修改的直接运行于EM9560。

EM9560的GPIO数量从原有的16位(即EM9460的GPIO数)增加到46位。为了方便客户应用程序的一致性,EM9560的GPIO驱动支持用户应用程序采用现有API函数就可操作所有的GPIO。本文主要介绍如何利用现有API函数实现EM9560的GPIO操作。

EM9560的46位GPIO分成了2组,第一组为原有的16位GPIO,称为GPIO0–GPIO15,第二组为扩展的新的GPIO,为区别说明,成为GPIOX0–GPIOX29。注意这两组GPIO都没有用到最高bit,即BIT31。新的API函数正是利用BIT31作为输入参数,当BIT31为“0”时,表示操作基本的GPIO0–GPIO15;而BIT31=“1”时,则表示操作扩展的GPIOX0–GPIOX29。举例说明如下:

#define GPIOX_FLAG (1 << 31) // 定义操作标志

以设置GPIO位输出高电平为例,其基本操作函数保持不变:

int GPIO_OutSet(int fd, unsigned int dwSetBits)
{
int rc;
rc = ioctl(fd, EM9X60_GPIO_IOCTL_OUT_SET, &dwSetBits);
return rc;
}

当操作基本的GPIO0–GPIO15时,调用方式为:

unsigned int uBits = GPIOm | … | GPIOn; // 设置相关GPIO位
rc = GPIO_OutSet(fd, uBits );

而当操作扩展的GPIOX0–GPIOX29时,调用方式为:

unsigned int uBits = GPIOm | … | GPIOn; // 设置相关GPIO位
rc = GPIO_OutSet(fd, uBits |GPIOX_FLAG ); // 设置扩展标志位

由于GPIO的API大多数是输出类型的,对仅操作基本GPIO0 – GPIO15,原有程序可不做修改,就可直接使用。但对读取GPIO状态,则需要特别注意,其输出参数必须事先设置标志位,才能调用状态读取函数,其相关代码如下:

基本的状态读取函数不变:

int GPIO_PinState(int fd, unsigned int* pPinState)
{
int rc;
unsigned int dwCurrPinState;
rc = ioctl(fd, EM9X60_GPIO_IOCTL_PIN_STATE, &dwCurrPinState);
if(rc == 0) // ioctl successful
{
*pPinState = dwCurrPinState;
}
return rc;
}

对读取基本GPIO0–GPIO15的状态,需要对输出参数先赋0,再调用:

unsigned int uState = 0;
rc = GPIO_PinState(fd, &uState);

对读取扩展GPIOX0 – GPIOX29的状态,需要对输出参数先设置扩展GPIO标志,再调用:

unsigned int uState = GPIOX_FLAG; // 设置扩展标志位
rc = GPIO_PinState(fd, &uState);

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11295

    浏览量

    209345
  • 嵌入式主板
    +关注

    关注

    7

    文章

    6085

    浏览量

    35297
收藏 人收藏

    评论

    相关推荐

    国产工控主板有什么优势、特点?

    随着国产工控主板的发展,国内企业也在不断开发新的工控主板,为了满足国内企业的发展需求,一些国产工控主板
    的头像 发表于 11-15 10:11 122次阅读

    ​什么是国产工控主板,国产工控主板的特点有哪些?

    什么是国产工控主板呢?国产工控主板是工业计算机的主板,是一种计算机系统的硬件设备,是专门为工业控制场景设计和生产的电路板。它在国内的研发和制
    的头像 发表于 11-07 10:29 177次阅读

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

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

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

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

    工控主板有哪些特点?

     工控主板是用于工业控制领域的专用主板,具有以下特点: 稳定性:工控主板通常经过严格的测试和优化,具有较高的稳定性和可靠性,能够在恶劣的工业
    的头像 发表于 10-10 08:55 298次阅读

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

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

    工控主板在环保智能设备中的应用

    工控主板在环保智能设备中的应用,对于环境监测、资源管理、污染控制等方面起到了至关重要的作用。以下是工控主板在环保智能设备中的一些具体应用:
    的头像 发表于 07-17 15:54 317次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>在环保智能设备中的应用

    浅析安卓工控主板的优势

    安卓工控主板作为专为工业控制领域设计的硬件平台,相较于普通商用主板,拥有诸多优势,以满足工业环境对稳定、可靠、长期运行的严格要求。以下是安卓工控主板
    的头像 发表于 06-27 14:50 326次阅读

    使用工控主板时该注意哪些事项?

    最近大家都在频繁问一个问题就是工控主板在什么人为情况下容易出现故障,从而造成工控主板的损坏,那今天小编就来讲讲,我们在使用工控
    的头像 发表于 06-05 16:01 402次阅读
    使用<b class='flag-5'>工控</b><b class='flag-5'>主板</b>时该注意哪些事项?

    请问如何使用CY8C9560控制GPIO线路?

    我有一块装有 CY8C9560A 的电路板。 我使用 NI USB-8452 作为 I2C 主设备,从我的应用程序中发送数据。 SCL 和 SDA 引脚在 Vcc =3.3V 电压下有一个
    发表于 05-31 08:24

    工控主板容易出现故障的原因有哪些?

    最近大家都在频繁问一个问题就是工控主板在什么人为情况下容易出现故障,从而造成工控主板的损坏,那今天小编就来讲讲,我们在使用工控
    的头像 发表于 05-17 10:57 377次阅读

    工控主板的性能指标有哪些?

    工控主板是工业控制领域中的关键组成部分,它承载着工控系统的核心功能。因此,工控主板的性能指标是评估其质量和性能的重要标准。本文将
    的头像 发表于 05-10 16:27 900次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>的性能指标有哪些?

    工控主板和普通主板的区别有哪些

    工控主板和普通主板是两种在计算机硬件领域中常见的主板类型,它们在设计、功能和用途上有着明显的区别。工控
    的头像 发表于 04-25 16:54 1270次阅读
    <b class='flag-5'>工控</b><b class='flag-5'>主板</b>和普通<b class='flag-5'>主板</b>的区别有哪些

    购买工控主板的三大误区

    最近有很多人问我什么样的工控主板算好的,有没有一个统一的标准。工控主板作为整机的核心组成部分,在性能稳定上有着至关重要的作用,那今天小编就来给大家讲解一下在购买
    的头像 发表于 04-16 16:40 341次阅读

    使用Arduino I2C配置CY8C9560A-24AXI gpioGPIO0的所有位配置为低位时会报错的原因?

    你好团队,我正在尝试使用 Arduino I2C 配置 CY8C9560A-24AXI gpio。将 GPIO0 的所有位配置为低位时会遇到问题。Wire.beginTransmission
    发表于 03-05 06:07