芯弛V9 GPIO配置

news/2025/3/19 17:34:08/

这篇文章主要分享给没接触过芯弛芯片的同学们,以往做项目的经验,接触一个新的芯片平台,大家通常喜欢通过设置GPIO来评估下新平台的设置使用习惯,芯弛的芯片上手还是非常快的。

以AP域GPIO配置为例:

打开SDToolBox,SDConfigTool为GPIO配置的工具

 以V9M为例简单讲解使用方法

1.创建工程 

2.查找配置文件

在代码中找到system_config.bin文件,该文件为开发板默认使用的GPIO配置文件

3.加载配置文件到工程

4.配置GPIO

以原理图中的Y7引脚为例对应的索引值为124(文章末尾有详细讲解怎么找GPIO)

按照项目需求设置GPIO的工作模式

5.保存配置文件

选择Save Binary保存为system_config.bin,后替换代码中的配置文件system_config.bin

 6.配置设备树

v9156_ms_native_linux_serdes.dts

irq-gpios = <&port4d 28 0>;

124在96-127之间(124-32*3=28),被GPIO CONTROLLER 4的PORT D控制,PORT D的第(124-32*3=28)28个引脚

7.代码中引用

static irqreturn_t deser_irq_handler(int irqno, void *dev_id)
{deser_dev_t *sensor = dev_id;int level = gpiod_get_value(sensor->irq_gpio);printk("deser_irq_handler gpio level %d \n", level);return IRQ_HANDLED;
}
static int deser_probe(struct i2c_client *client, const struct i2c_device_id *id)
{
/****************/gpiod = devm_gpiod_get_optional(&client->dev, "irq", GPIOD_IN);if (IS_ERR(gpiod)) {ret = PTR_ERR(gpiod);if (ret != -EPROBE_DEFER)dev_err(&client->dev, "Failed to get %s GPIO: %d\n","irq", ret);} else {sensor->irq_gpio = gpiod;}ret = gpiod_to_irq(sensor->irq_gpio);if (ret < 0) {dev_err(&client->dev, "%s(): fail to get irq (%d)\n", __func__, ret);//        return ret;}else{sensor->irq = ret;}ret = devm_request_irq(&client->dev, sensor->irq,deser_irq_handler, IRQF_TRIGGER_RISING|IRQF_TRIGGER_FALLING, "max9286-irq", sensor);if (ret < 0) {dev_err(&client->dev, "%s(): fail to request irq (%d)\n", __func__, ret);//return ret;}
/****************/

8.快速验证方法

不编译代码,在linux下快速验证gpio:

1.首先通过sdconfigtool配置引脚到AP域
2.单独替换system_config.bin

  3.配置GPIO设备节点

echo 124 > /sys/class/gpio/export
echo in > /sys/class/gpio/gpio124/direction
cat /sys/class/gpio/gpio124/value

这里的124是封装上Y7引脚对应的索引

查找方法:

1.在原理图上找到要使用的GPIO对应的封装标号Y7

2.在SDConfigTool上搜索Y7

可以看到Y7对应的索引是124


http://www.ppmy.cn/news/325433.html

相关文章

Verilog 乘法器

30那个地方改仿真的时长&#xff0c;默认是10us&#xff08;但实际上好像是1us&#xff09; 这里改成30us //加载被乘数&#xff0c;运算时每次左移一位 &#xff08;这里把被乘数位拓展了&#xff09; reg [63:0] multiplicand //加载乘数&#xff0c;运算时每次右移一位…

OpenFOAM v9 postProcessing

1.1 fields场计算 age:求解输运方程&#xff0c;以确定粒子从入口对流到流中位置所需的时间。components:写入场&#xff08;例如U&#xff09;的分量&#xff08;例如Ux&#xff0c;Uy&#xff0c;Uz&#xff09;。CourantNo:从通量场计算库朗数。ddt:计算场的欧拉时间导数。…

Ferrari(法拉利)历代车型

Ferrari历代车型(全部配图) <content></content> 1947 125 S 1947 159 S 1948 166 INTER 1950 195 S 1951 340 AMERICA 1952 250 S

【C/C++】回调函数

1. 概念 回调函数是一种在程序运行期间通过函数指针调用的函数&#xff0c;它通常用于实现事件驱动、异步通信、消息传递等功能。 在回调函数的使用中&#xff0c;当某些事件发生时&#xff0c;系统会调用预先注册好的回调函数&#xff0c;将事件相关的数据传递给回调函数&am…

硬件设计电源系列文章-LDO设计

文章目录 概要整体架构流程技术名词解释技术细节小结 概要 本文主要分享LDO的相关设计&#xff0c;尤其是LDO的并联设计 整体架构流程 提示&#xff1a;这里可以添加技术整体架构 主要是讲述LDO的并联&#xff1b;并联以增加输出驱动能力&#xff0c;其具体框架如下&#x…

爱普生Epson SureColor T5280MFP 打印机驱动

爱普生Epson SureColor T5280MFP 打印机驱动是官方提供的一款打印机驱动&#xff0c;本站收集提供高速下载&#xff0c;用于解决打印机与电脑连接不了&#xff0c;无法正常使用的问题&#xff0c;本动适用于&#xff1a;Windows XP / Windows 7 / Windows 8 / Windows 10 32/64…

EPSON机械臂TCP通讯,实现手眼标定(附EPSON代码)

建立TCP_IP连接,机械手接收相机发送过来的数据从而到达对应的位置 初始位置,查看标定板摆放位置是否正确Global String Camera_X$, Camera_Y$, Camera_Z$, Camera_U$, Camera_V$, Camera_W$ 接收字符串Global String receiveCommond1$ 定义字符串变量Function main调试程序 …