如何与Linux PCA953X驱动交互?如何编程利用该驱动?
关于PCA9535 GPIO扩展板与树莓派驱动调用的问题
我将PCA9535 GPIO扩展板通过I²C连接到树莓派,可使用i2cset命令设置输出引脚为高电平:
sudo i2cset 1 0x20 0x02 0xFF // 0x20为GPIO扩展板地址,寄存器0x02
我找到了PCA953X内核驱动,已加载gpio-pca953x.ko内核模块并修改/boot/config.txt添加该扩展板的设备树overlay。运行i2cdetect -y 1时,0x20从设备地址显示为“UU”,说明驱动已接管该设备。
疑问1:若想通过编程实现类似i2cset的功能,应使用何种API/接口来调用已安装的PCA953X驱动?
如下直接操作I²C的代码并未用到PCA953X驱动:
int file; int adapter_nr = 1; char filename[20]; snprintf(filename, 19, "/dev/i2c-%d", adapter_nr); file = open(filename, O_RDWR); if (file < 0) { exit(1); } // 向寄存器0x02写入0xFF uint8_t cmd[2] = {0x02, 0XFF}; struct i2c_msg msg = { .addr = 0x20, .flags = 0, .len = sizeof(cmd)/sizeof(uint8_t), .buf = cmd }; struct i2c_rdwr_ioctl_data tx = { .msgs = &msg, .nmsgs = 1 }; ioctl(file, I2C_RDWR, &tx);
疑问2:是否存在调用PCA953X驱动的编程途径?该驱动模块的作用是什么?
内容的提问来源于stack exchange,提问作者Tung
相关产品推荐
相关产品推荐

