NXP MCU 技术论坛
直播中

杨海清

8年用户 1804经验值
私信 关注
[问答]

如何使用FRDM-IMX93板上的GPIO?

如何使用 FRDM-IMX93 板上的 GPIO?像简单的 GPIO、CAN、I2c 等吗?

回帖(1)

ronga245

2025-4-14 17:44:58

在 FRDM-IMX93 开发板上使用 GPIO、CAN、I2C 等接口需要结合硬件配置和软件操作。以下是分步骤的指南:




1. GPIO 基础操作


硬件准备



  • 确认目标 GPIO 引脚(例如:板载 LED 或扩展接口的 GPIO)。

  • 参考开发板原理图或用户手册,确定 GPIO 编号(例如 GPIO1_IO05)。


通过 sysfs 控制 GPIO(传统方式)


# 导出 GPIO(假设 Linux 内部分配的编号为 37)
echo 37 > /sys/class/gpio/export

# 设置方向(输入/输出)
echo out > /sys/class/gpio/gpio37/direction

# 控制电平
echo 1 > /sys/class/gpio/gpio37/value  # 高电平
echo 0 > /sys/class/gpio/gpio37/value  # 低电平

# 取消导出
echo 37 > /sys/class/gpio/unexport

使用 libgpiod(推荐方式)


安装工具包:


sudo apt-get install gpiod libgpiod-dev

命令行控制:


# 查看可用 GPIO 芯片
gpiodetect

# 控制 GPIO(示例:芯片0,引脚5)
gpioset gpiochip0 5=1  # 输出高电平
gpioget gpiochip0 5    # 读取电平



2. I2C 操作


启用 I2C 接口



  1. 确认设备树配置:确保 I2C 控制器和引脚复用已启用(可能需要重新编译设备树)。

  2. 加载驱动
    sudo modprobe i2c-dev


使用 i2c-tools


安装工具:


sudo apt-get install i2c-tools

扫描设备:


# 查看 I2C 总线编号(如 i2c-0)
i2cdetect -l

# 扫描总线上的设备(例如总线0)
i2cdetect -y 0

读写数据:


# 读取寄存器(设备地址 0x50,寄存器 0x00)
i2cget -y 0 0x50 0x00

# 写入寄存器
i2cset -y 0 0x50 0x00 0xFF



3. CAN 总线操作


配置 CAN 接口



  1. 硬件连接:确保 CAN 收发器已正确连接(如使用板载 CAN 或扩展接口)。

  2. 启用 CAN 驱动
    sudo modprobe can_raw
    sudo modprobe flexcan


设置 CAN 参数


# 设置波特率(例如 500kbps)
sudo ip link set can0 type can bitrate 500000
sudo ip link set up can0

测试通信


发送和接收数据:


# 接收数据
candump can0

# 发送数据(在另一个终端)
cansend can0 123#AABBCCDD



4. 引脚复用配置


i.MX93 的引脚功能由 IOMUX 控制。修改设备树(DTS)以配置复用模式:


&iomuxc {
    pinctrl_i2c1: i2c1grp {
        fsl,pins = <
            MX93_PAD_GPIO_IO05__I2C1_SDA  0x400001e6
            MX93_PAD_GPIO_IO06__I2C1_SCL  0x400001e6
        >;
    };
};

重新编译设备树并更新系统。




5. 其他资源





通过以上步骤,您可以在 FRDM-IMX93 上快速验证 GPIO、I2C 和 CAN 功能。对于更复杂的应用,建议结合 SDK(如 Yocto 或 NXP MCUXpresso)进行开发。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分